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



