模型简介
模型特点
模型能力
使用案例
🚀 Phi-3-Medium-128K-Instruct
Phi-3-Medium-128K-Instruct 是一款轻量级的先进开源模型,拥有 140 亿参数。它基于 Phi-3 数据集进行训练,该数据集包含合成数据和经过筛选的公开网站数据,注重高质量和强推理能力。该模型在常识、语言理解、数学、代码、长上下文和逻辑推理等基准测试中表现出色。
🚀 快速开始
Phi-3-Medium-128k-Instruct 已集成到 transformers
的开发版本(4.40.2)中。在通过 pip
发布官方版本之前,请确保执行以下操作之一:
- 加载模型时,确保将
trust_remote_code=True
作为from_pretrained()
函数的参数传入。 - 将本地的
transformers
更新到开发版本:pip uninstall -y transformers && pip install git+https://github.com/huggingface/transformers
。此命令是克隆并从源代码安装的替代方法。
可以使用 pip list | grep transformers
验证当前的 transformers
版本。
Phi-3-Medium-128k-Instruct 也可在 Azure AI Studio 中使用。
分词器
Phi-3-Medium-128k-Instruct 支持最多 32064
个标记的词汇量。分词器文件 已经提供了可用于下游微调的占位符标记,但也可以扩展到模型的词汇量大小。
聊天格式
鉴于训练数据的性质,Phi-3-Medium-128k-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-128k-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>
)。请确保包含该标记,因为这样可以获得更可靠的结果。
✨ 主要特性
模型家族与版本
Phi-3-Medium-128K-Instruct 属于 Phi-3 家族的中型版本,有 4k 和 128K 两种变体,分别代表其支持的上下文长度(以标记为单位)。
性能表现
该模型经过了后训练过程,结合了监督微调(Supervised fine-tuning)和直接偏好优化(Direct preference optimization),以实现指令遵循和安全措施。在常识、语言理解、数学、代码、长上下文和逻辑推理等基准测试中,Phi-3-Medium-128K-Instruct 在同规模和稍大尺寸的模型中展现出了强大而先进的性能。
适用场景
- 内存/计算受限环境:模型轻量级的特点使其适合在资源有限的环境中运行。
- 低延迟场景:能够在对延迟要求较高的场景中快速响应。
- 强推理任务:尤其在代码、数学和逻辑推理方面表现出色。
相关资源
不同版本对比
短上下文 | 长上下文 | |
---|---|---|
Mini | 4K [HF] ; [ONNX] ; [GGUF] | 128K [HF] ; [ONNX] |
Small | 8K [HF] ; [ONNX] | 128K [HF] ; [ONNX] |
Medium | 4K [HF] ; [ONNX] | 128K [HF] ; [ONNX] |
Vision | 128K [HF] ; [ONNX] |
📚 详细文档
预期用途
主要用例
该模型旨在广泛用于英语的商业和研究领域。适用于通用人工智能系统和应用,特别是以下场景:
- 内存/计算受限的环境。
- 对延迟敏感的场景。
- 需要强推理能力(特别是代码、数学和逻辑方面)的场景。
使用场景考虑
- 模型并非专门为所有下游用途设计或评估。开发者在选择使用场景时应考虑语言模型的常见局限性,并在特定下游用例中使用之前,评估和缓解准确性、安全性和公平性问题,特别是在高风险场景中。
- 开发者应了解并遵守与其用例相关的适用法律法规(包括隐私、贸易合规法等)。
负责任的人工智能考虑
与其他语言模型一样,Phi 系列模型可能会出现不公平、不可靠或冒犯性的行为。需要注意的一些局限性包括:
- 服务质量:Phi 模型主要在英语文本上进行训练,非英语语言的性能可能会较差。训练数据中代表性较少的英语变体可能比标准美式英语的性能更差。
- 伤害表示与刻板印象延续:这些模型可能会过度或不足地代表某些人群,抹去某些群体的代表性,或强化贬低性或负面的刻板印象。尽管经过了安全后训练,但由于不同群体的代表性水平不同,或者训练数据中反映现实世界模式和社会偏见的负面刻板印象示例普遍存在,这些局限性可能仍然存在。
- 不适当或冒犯性内容:模型可能会产生其他类型的不适当或冒犯性内容,在没有针对特定用例进行额外缓解措施的情况下,可能不适合在敏感环境中部署。
- 信息可靠性:语言模型可能会生成无意义的内容或编造看似合理但不准确或过时的内容。
- 代码范围有限:Phi-3 的大部分训练数据基于 Python,并使用常见的包,如 "typing, math, random, collections, datetime, itertools"。如果模型生成的 Python 脚本使用了其他包或其他语言的脚本,强烈建议用户手动验证所有 API 的使用。
开发者应应用负责任的人工智能最佳实践,并确保特定用例符合相关法律法规(如隐私、贸易等)。需要考虑的重要领域包括:
- 资源分配:在没有进一步评估和额外去偏技术的情况下,模型可能不适合对法律地位、资源分配或生活机会(如住房、就业、信贷等)有重大影响的场景。
- 高风险场景:开发者应评估在高风险场景中使用模型的适用性,在这些场景中,不公平、不可靠或冒犯性的输出可能会造成极大的损失或伤害。这包括在敏感或专业领域提供建议,如法律或健康建议。应根据部署上下文在应用层面实施额外的保障措施。
- 错误信息:模型可能会产生不准确的信息。开发者应遵循透明度最佳实践,并告知最终用户他们正在与人工智能系统交互。在应用层面,开发者可以构建反馈机制和管道,将响应与特定用例的上下文信息相结合,即检索增强生成(Retrieval Augmented Generation,RAG)技术。
- 有害内容生成:开发者应根据上下文评估输出,并使用适合其用例的可用安全分类器或自定义解决方案。
- 滥用风险:可能存在其他形式的滥用,如欺诈、垃圾邮件或恶意软件生成。开发者应确保其应用不违反适用的法律法规。
训练
模型信息
属性 | 详情 |
---|---|
架构 | Phi-3-Medium-128k-Instruct 是一个具有 140 亿参数的密集型仅解码器 Transformer 模型。经过监督微调(Supervised fine-tuning)和直接偏好优化(Direct preference optimization)进行微调,以确保与人类偏好和安全指南保持一致。 |
输入 | 文本,最适合使用聊天格式的提示。 |
上下文长度 | 128k 标记 |
GPU | 512 个 H100-80G |
训练时间 | 42 天 |
训练数据 | 4.8 万亿标记 |
输出 | 对输入文本生成的响应文本 |
训练日期 | 2024 年 2 月至 4 月 |
状态 | 这是一个基于截止日期为 2023 年 10 月的离线数据集训练的静态模型。随着模型的改进,可能会发布调优模型的未来版本。 |
发布日期 | 2024 年 5 月 21 日发布模型权重。 |
数据集
训练数据包括多种来源,总计 4.8 万亿标记(包括 10% 的多语言数据),由以下部分组成:
- 经过严格质量筛选的公开可用文档、精选的高质量教育数据和代码。
- 为教授数学、编码、常识推理、世界常识(科学、日常活动、心智理论等)而新创建的合成“教科书式”数据。
- 涵盖各种主题的高质量聊天格式监督数据,以反映人类在指令遵循、真实性、诚实性和有用性等不同方面的偏好。
团队专注于可能提高模型推理能力的数据质量,并对公开可用文档进行筛选,以包含适当水平的知识。例如,英超联赛某一天的比赛结果可能是前沿模型的良好训练数据,但对于小尺寸模型,需要去除此类信息,以便为推理留出更多的模型容量。有关数据的更多详细信息,请参阅 Phi-3 技术报告。
基准测试
报告了 Phi-3-Medium-128k-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 对管道进行优化。具体而言,不会更改提示、选择不同的少样本示例、更改提示格式或进行任何其他形式的优化。
每个基准测试的少样本示例数量如下所示:
基准测试 | Phi-3-Medium-128k-Instruct 14b |
Command R+ 104B |
Mixtral 8x22B |
Llama-3-70B-Instruct | GPT3.5-Turbo version 1106 |
Gemini Pro |
GPT-4-Turbo version 1106 (Chat) |
---|---|---|---|---|---|---|---|
AGI Eval 5-shot |
49.7 | 50.1 | 54.0 | 56.9 | 48.4 | 49.0 | 59.6 |
MMLU 5-shot |
76.6 | 73.8 | 76.2 | 80.2 | 71.4 | 66.7 | 84.0 |
BigBench Hard 3-shot |
77.9 | 74.1 | 81.8 | 80.4 | 68.3 | 75.6 | 87.7 |
ANLI 7-shot |
57.3 | 63.4 | 65.2 | 68.3 | 58.1 | 64.2 | 71.7 |
HellaSwag 5-shot |
81.6 | 78.0 | 79.0 | 82.6 | 78.8 | 76.2 | 88.3 |
ARC Challenge 10-shot |
91.0 | 86.9 | 91.3 | 93.0 | 87.4 | 88.3 | 95.6 |
ARC Easy 10-shot |
97.6 | 95.7 | 96.9 | 98.2 | 96.3 | 96.1 | 98.8 |
BoolQ 2-shot |
86.5 | 86.1 | 82.7 | 89.1 | 79.1 | 86.4 | 91.3 |
CommonsenseQA 10-shot |
82.2 | 82.0 | 82.0 | 84.4 | 79.6 | 81.8 | 86.7 |
MedQA 2-shot |
67.6 | 59.2 | 67.9 | 78.5 | 63.4 | 58.2 | 83.7 |
OpenBookQA 10-shot |
87.2 | 86.8 | 88.6 | 91.8 | 86.0 | 86.4 | 93.4 |
PIQA 5-shot |
87.8 | 86.4 | 85.0 | 85.3 | 86.6 | 86.2 | 90.1 |
Social IQA 5-shot |
79.0 | 75.3 | 78.2 | 81.1 | 68.3 | 75.4 | 81.7 |
TruthfulQA (MC2) 10-shot |
74.3 | 57.8 | 67.4 | 81.9 | 67.7 | 72.6 | 85.2 |
WinoGrande 5-shot |
78.9 | 77.0 | 75.3 | 83.3 | 68.8 | 72.2 | 86.7 |
TriviaQA 5-shot |
73.9 | 82.8 | 84.5 | 78.5 | 85.8 | 80.2 | 73.3 |
GSM8K Chain of Thought 8-shot |
87.5 | 78.3 | 83.8 | 93.5 | 78.1 | 80.4 | 94.2 |
HumanEval 0-shot |
58.5 | 61.6 | 39.6 | 78.7 | 62.2 | 64.4 | 79.9 |
MBPP 3-shot |
73.8 | 68.9 | 70.7 | 81.3 | 77.8 | 73.2 | 86.7 |
平均 | 77.3 | 75.0 | 76.3 | 82.5 | 74.3 | 75.4 | 85.2 |
下面的表格进一步展示了在 80 个公共基准测试数据集上不同类别的详细结果:
基准测试 | Phi-3-Medium-128k-Instruct 14b |
Command R+ 104B |
Mixtral 8x22B |
Llama-3-70B-Instruct | GPT3.5-Turbo version 1106 |
Gemini Pro |
GPT-4-Turbo version 1106 (Chat) |
---|---|---|---|---|---|---|---|
流行综合基准测试 | 72.3 | 69.9 | 73.4 | 76.3 | 67.0 | 67.5 | 80.5 |
推理能力 | 83.2 | 79.3 | 81.5 | 86.7 | 78.3 | 80.4 | 89.3 |
语言理解能力 | 75.3 | 75.7 | 78.7 | 77.9 | 70.4 | 75.3 | 81.6 |
代码生成能力 | 64.2 | 68.6 | 60.0 | 69.3 | 70.4 | 66.7 | 76.1 |
数学能力 | 52.9 | 45.3 | 52.5 | 59.7 | 52.8 | 50.9 | 67.1 |
事实知识 | 47.5 | 60.3 | 60.6 | 52.4 | 63.4 | 54.6 | 45.9 |
多语言能力 | 62.2 | 67.8 | 69.8 | 62.0 | 67.0 | 73.4 | 78.2 |
鲁棒性 | 70.2 | 57.9 | 65.5 | 78.7 | 69.3 | 69.7 | 84.6 |
软件依赖
硬件要求
默认情况下,Phi-3-Medium 模型使用 Flash Attention,这需要特定类型的 GPU 硬件才能运行。已在以下 GPU 类型上进行了测试:
- NVIDIA A100
- NVIDIA A6000
- NVIDIA H100
如果要在以下设备上运行模型:
- 在 GPU、CPU 和移动设备上进行优化推理:使用 ONNX 模型 128k
跨平台支持
ONNX 运行时生态系统现在支持 Phi3 Medium 模型在跨平台和硬件上运行。优化后的 phi-3 模型也以 ONNX 格式发布,可在 CPU 和 GPU 上跨设备运行,包括服务器平台、Windows、Linux 和 Mac 桌面以及移动 CPU,并针对每个目标提供最适合的精度。Windows 桌面 GPU(AMD、Intel 和 NVIDIA)支持 DirectML GPU 加速。以下是一些添加的优化配置:
- ONNX 模型(int4 DML):通过 AWQ 量化为 int4。
- ONNX 模型(fp16 CUDA)。
- ONNX 模型(int4 CUDA):通过 RTN 量化为 int4。
- ONNX 模型(int4 CPU 和移动设备):通过 RTN 量化为 int4。
📄 许可证
该模型根据 MIT 许可证 发布。
商标说明
本项目可能包含项目、产品或服务的商标或标志。对 Microsoft 商标或标志的授权使用需遵循 Microsoft 商标和品牌指南。在本项目的修改版本中使用 Microsoft 商标或标志不得造成混淆或暗示 Microsoft 的赞助。任何第三方商标或标志的使用需遵循这些第三方的政策。



