HuggingFace镜像/Phi-3-medium-4k-instruct
模型介绍文件和版本分析
下载使用量0

模型概述

Phi-3-Medium-4K-Instruct 是一款拥有140亿参数的轻量级、最先进的开放模型,它基于 Phi-3 数据集训练而成。该数据集包含合成数据和经过筛选的公开网站数据,重点关注高质量和推理密集型特性。

该模型属于 Phi-3 系列的 Medium 版本,有两个变体:4K 和 128K,这里的数字代表模型支持的上下文长度(以 tokens 为单位)。

该模型经过了后训练过程,其中包括监督微调以及针对指令遵循和安全措施的直接偏好优化。

在常识、语言理解、数学、代码、长上下文和逻辑推理等基准测试中,Phi-3-Medium-4K-Instruct 在同尺寸及更大尺寸的模型中展现出稳健且最先进的性能。

资源与技术文档:

  • Phi-3 Microsoft Blog
  • Phi-3 Technical Report
  • Phi-3 on Azure AI Studio
  • Phi-3 Cookbook
短上下文长上下文
Medium4K [openMind]128K [openMind]

预期用途

主要使用场景

该模型旨在广泛应用于英语的商业和研究领域。它适用于需要以下特性的通用人工智能系统和应用:

  1. 内存/计算资源受限的环境
  2. 延迟敏感的场景
  3. 强大的推理能力(尤其是代码、数学和逻辑方面)

我们的模型旨在加速语言和多模态模型的研究,并作为生成式人工智能驱动功能的构建模块。

使用场景考量

我们的模型并非专门为所有下游用途设计或评估。开发人员在选择使用场景时,应考虑语言模型的常见局限性,并在特定下游用途中使用之前,对准确性、安全性和公平性进行评估和缓解,特别是在高风险场景中。开发人员应了解并遵守与其使用场景相关的适用法律法规(包括隐私、贸易合规法律等)。

本模型卡片中的任何内容均不应被解释为或视为对模型发布所依据的许可的限制或修改。

如何使用

Phi-3-Medium-4K-Instruct 已集成到 transformers 的开发版本(4.40.2)中。在通过 pip 发布正式版本之前,请确保执行以下操作之一:

  • 加载模型时,确保将 trust_remote_code=True 作为 from_pretrained() 函数的参数传入。

  • 将本地 transformers 更新至开发版本:pip uninstall -y transformers && pip install transformers。此命令是克隆并从源代码安装的替代方法。

当前 transformers 版本可通过以下命令验证:pip list | grep transformers。

Phi-3-Medium-4K-Instruct 也可在 Azure AI Studio 中使用。

分词器

Phi-3-Medium-4K-Instruct 支持的词汇量最多为 32064 个 token。分词器文件 已提供占位符 token,可用于下游微调,也可扩展至模型的词汇量上限。

对话格式

考虑到训练数据的特性,Phi-3-Medium-4K-Instruct 模型最适合使用如下对话格式的提示词。 您可以使用通用模板将提示词作为问题提供,如下所示:

<|user|>\nQuestion <|end|>\n<|assistant|>

例如:

<|user|>
How to explain Internet for a medieval knight?<|end|>
<|assistant|>

模型在 <|assistant|> 之后生成文本。对于少样本提示,可按以下格式设置提示:

<|user|>
I am going to Paris, what should I see?<|end|>
<|assistant|>
Paris, the capital of France, is known for its stunning architecture, art museums, historical landmarks, and romantic atmosphere. Here are some of the top attractions to see in Paris:\n\n1. The Eiffel Tower: The iconic Eiffel Tower is one of the most recognizable landmarks in the world and offers breathtaking views of the city.\n2. The Louvre Museum: The Louvre is one of the world's largest and most famous museums, housing an impressive collection of art and artifacts, including the Mona Lisa.\n3. Notre-Dame Cathedral: This beautiful cathedral is one of the most famous landmarks in Paris and is known for its Gothic architecture and stunning stained glass windows.\n\nThese are just a few of the many attractions that Paris has to offer. With so much to see and do, it's no wonder that Paris is one of the most popular tourist destinations in the world."<|end|>
<|user|>
What is so great about #1?<|end|>
<|assistant|>

示例推理代码

以下代码片段展示了如何快速在 GPU 上运行模型:

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline

torch.random.manual_seed(0)
model_id = "microsoft/Phi-3-medium-4k-instruct"
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    device_map="cuda", 
    torch_dtype="auto", 
    trust_remote_code=True, 
)
tokenizer = AutoTokenizer.from_pretrained(model_id)

messages = [
    {"role": "user", "content": "Can you provide ways to eat combinations of bananas and dragonfruits?"},
    {"role": "assistant", "content": "Sure! Here are some ways to eat bananas and dragonfruits together: 1. Banana and dragonfruit smoothie: Blend bananas and dragonfruits together with some milk and honey. 2. Banana and dragonfruit salad: Mix sliced bananas and dragonfruits together with some lemon juice and honey."},
    {"role": "user", "content": "What about solving an 2x + 3 = 7 equation?"},
]

pipe = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
)

generation_args = {
    "max_new_tokens": 500,
    "return_full_text": False,
    "temperature": 0.0,
    "do_sample": False,
}

output = pipe(messages, **generation_args)
print(output[0]['generated_text'])

某些应用程序/框架可能不会在对话开头包含 BOS 标记(<s>)。请确保包含此标记,因为它能带来更可靠的结果。

负责任的 AI 考量因素

与其他语言模型一样,Phi 系列模型在某些情况下可能会表现出不公平、不可靠或冒犯性的行为。需要注意的一些局限性行为包括:

  • 服务质量:Phi 模型主要基于英文文本进行训练。非英语语言的性能会较差。训练数据中代表性不足的英语变体,其性能可能不如标准美式英语。
  • 伤害的呈现与刻板印象的延续:这些模型可能会过度或不足地呈现某些人群,抹去某些群体的代表性,或强化贬低性或负面的刻板印象。尽管经过了安全训练,但由于不同群体的代表性水平不同,或训练数据中反映现实世界模式和社会偏见的负面刻板印象示例的普遍性,这些局限性仍可能存在。
  • 不当或冒犯性内容:这些模型可能会生成其他类型的不当或冒犯性内容,这可能使其在没有针对特定用例的额外缓解措施的情况下,不适合部署在敏感环境中。
  • 信息可靠性:语言模型可能会生成无意义的内容,或编造听起来合理但不准确或过时的内容。
  • 代码范围有限:Phi-3 的大部分训练数据基于 Python,并使用常见的包,如 “typing、math、random、collections、datetime、itertools”。如果模型生成的 Python 脚本使用了其他包,或其他语言的脚本,我们强烈建议用户手动验证所有 API 的使用。

开发人员应采用负责任的 AI 最佳实践,并负责确保特定用例符合相关法律法规(例如隐私、贸易等)。需要考虑的重要方面包括:

  • 分配:如果没有进一步的评估和额外的去偏技术,模型可能不适用于可能对法律地位或资源、生活机会(例如住房、就业、信贷等)的分配产生重要影响的场景。
  • 高风险场景:开发人员应评估在高风险场景中使用模型的适用性,在这些场景中,不公平、不可靠或冒犯性的输出可能会造成极大的代价或导致伤害。这包括在准确性和可靠性至关重要的敏感或专业领域提供建议(例如法律或健康建议)。应根据部署环境在应用层面实施额外的安全措施。
  • 错误信息:模型可能会产生不准确的信息。开发人员应遵循透明度最佳实践,并告知最终用户他们正在与 AI 系统交互。在应用层面,开发人员可以构建反馈机制和管道,使响应基于特定用例的上下文信息,这种技术称为检索增强生成(RAG)。
  • 有害内容的生成:开发人员应根据其上下文评估输出,并使用适用于其用例的可用安全分类器或自定义解决方案。
  • 滥用:可能存在其他形式的滥用,如欺诈、垃圾邮件或恶意软件制作,开发人员应确保其应用程序不违反适用的法律法规。

训练

模型

  • 架构:Phi-3-Medium-4K-Instruct 拥有 140 亿参数,是一个密集型仅解码器 Transformer 模型。该模型通过监督微调(SFT)和直接偏好优化(DPO)进行微调,以确保与人类偏好和安全准则保持一致。
  • 输入:文本。最适合使用聊天格式的提示词。
  • 上下文长度:4K tokens
  • 显卡:512 张 H100-80G
  • 训练时间:42 天
  • 训练数据:4.8T tokens
  • 输出:针对输入生成的文本
  • 日期:我们的模型在 2024 年 2 月至 4 月期间进行训练
  • 状态:这是一个在截止日期为 2023 年 10 月的离线数据集上训练的静态模型。随着我们对模型的改进,未来可能会发布经过调整的模型版本。
  • 发布日期:模型权重于 2024 年 5 月 21 日发布。

数据集

我们的训练数据来源广泛,总计 4.8 万亿 tokens(包含 10% 的多语言数据),由以下部分组合而成:

  1. 经过严格质量筛选的公开可用文档、精选的高质量教育数据和代码;
  2. 新创建的合成“教科书式”数据,用于教授数学、编码、常识推理、世界通识(科学、日常活动、心理理论等);
  3. 高质量的聊天格式监督数据,涵盖各种主题,以反映人类在指令遵循、真实性、诚实性和帮助性等不同方面的偏好。

我们专注于可能提高模型推理能力的数据质量,并对公开可用文档进行筛选,以确保其包含适当水平的知识。例如,某一天英超联赛的比赛结果可能是前沿模型的良好训练数据,但对于小尺寸模型,我们需要移除此类信息,以便为推理保留更多模型容量。有关数据的更多详细信息,请参见 Phi-3 技术报告。

基准测试

我们报告了Phi-3-Medium-4K-Instruct在标准开源基准测试中的结果,这些基准测试用于衡量模型的推理能力(包括常识推理和逻辑推理)。我们将其与Mixtral-8x22b、Gemini-Pro、Command R+ 104B、Llama-3-70B-Instruct、GPT-3.5-Turbo-1106以及GPT-4-Turbo-1106(Chat)进行了比较。

所有报告的数值均通过完全相同的流程生成,以确保数值的可比性。由于评估中略有不同的选择,这些数值可能与其他已发布的数值存在差异。

按照当前标准,我们使用少样本提示来评估模型,温度设为0。 提示和样本数量是Microsoft内部语言模型评估工具的一部分,特别是我们并未针对Phi-3对该流程进行任何优化。 更具体地说,我们不会更改提示、选择不同的少样本示例、修改提示格式或对模型进行任何其他形式的优化。

每个基准测试的k-shot示例数量如下表所示。

基准测试Phi-3-Medium-4K-Instruct
14b
Command R+
104B
Mixtral
8x22B
Llama-3-70B-InstructGPT3.5-Turbo
version 1106
Gemini
Pro
GPT-4-Turbo
version 1106 (Chat)
AGI Eval
5-shot
50.250.154.056.948.449.059.6
MMLU
5-shot
78.073.876.280.271.466.784.0
BigBench Hard
3-shot
81.474.181.880.468.375.687.7
ANLI
7-shot
55.863.465.268.358.164.271.7
HellaSwag
5-shot
82.478.079.082.678.876.288.3
ARC Challenge
10-shot
91.686.991.393.087.488.395.6
ARC Easy
10-shot
97.795.796.998.296.396.198.8
BoolQ
2-shot
86.586.182.789.179.186.491.3
CommonsenseQA
10-shot
82.882.082.084.479.681.886.7
MedQA
2-shot
69.959.267.978.563.458.283.7
OpenBookQA
10-shot
87.486.888.691.886.086.493.4
PIQA
5-shot
87.986.485.085.386.686.290.1
Social IQA
5-shot
80.275.378.281.168.375.481.7
TruthfulQA (MC2)
10-shot
75.157.867.481.967.772.685.2
WinoGrande
5-shot
81.577.075.383.368.872.286.7
TriviaQA
5-shot
73.982.884.578.585.880.273.3
GSM8K Chain of Thought
8-shot
91.078.383.893.578.180.494.2
HumanEval
0-shot
62.261.639.678.762.264.479.9
MBPP
3-shot
75.268.970.781.377.873.286.7
Average78.575.076.382.574.375.485.2

我们在下表中仔细研究了80个公共基准数据集的不同类别:

基准测试Phi-3-Medium-4K-Instruct
14b
Command R+
104B
Mixtral
8x22B
Llama-3-70B-InstructGPT3.5-Turbo
version 1106
Gemini
Pro
GPT-4-Turbo
version 1106 (Chat)
Popular aggregated benchmark75.469.973.476.367.067.580.5
Reasoning84.179.381.586.778.380.489.3
Language understanding73.975.678.176.968.776.280.7
Code generation66.168.660.069.370.466.776.1
Math52.845.352.559.752.850.967.1
Factual knowledge48.360.360.652.463.454.645.9
Multilingual62.967.869.862.067.073.478.2
Robustness66.557.965.578.769.369.784.6

软件

  • PyTorch
  • DeepSpeed
  • Transformers
  • Flash-Attention

跨平台支持

ONNX Runtime 生态系统现已支持 Phi-3 Medium 模型在各种平台和硬件上运行。 优化后的 phi-3 模型也以 ONNX 格式在此发布,可配合 ONNX Runtime 在 CPU 和 GPU 上跨设备运行,包括服务器平台、Windows、Linux 和 Mac 桌面系统以及移动 CPU,并为每个目标设备提供最适合的精度。DirectML GPU 加速支持 Windows 桌面 GPU(AMD、Intel 和 NVIDIA)。 除 DML 外,ONNX Runtime 还为 Phi-3 Medium 提供跨平台支持,覆盖从 CPU、GPU 到移动设备的多种设备。 以下是我们添加的部分优化配置:

  1. int4 DML 的 ONNX 模型:通过 AWQ 量化为 int4
  2. fp16 CUDA 的 ONNX 模型
  3. int4 CUDA 的 ONNX 模型:通过 RTN 量化为 int4
  4. int4 CPU 和移动设备的 ONNX 模型:通过 RTN 量化为 int4

许可证

本模型采用 MIT 许可证。

商标

本项目可能包含项目、产品或服务的商标或徽标。Microsoft 商标或徽标的授权使用须遵守 Microsoft 商标与品牌指南。在本项目的修改版本中使用 Microsoft 商标或徽标不得引起混淆或暗示 Microsoft 的赞助。任何第三方商标或徽标的使用均受该第三方政策的约束。