许可证: mit
许可证链接: https://huggingface.co/microsoft/Phi-3-mini-4k-instruct/resolve/main/LICENSE
语言:
- 英语
- 法语
任务标签: 文本生成
标签:
- 自然语言处理
- 代码
推理参数:
温度: 0
示例输入:
- 消息:
- 角色: 用户
内容: 你能提供香蕉和火龙果的搭配吃法吗?
🎉 Phi-3.5系列: [迷你指导版]; [混合专家指导版]; [视觉指导版]
模型概述
Phi-3-Mini-4K-Instruct是一个拥有38亿参数的轻量级尖端开源模型,使用Phi-3数据集训练而成。该数据集包含合成数据以及经过筛选的公开网站数据,重点关注高质量和推理密集的特性。该模型属于Phi-3系列,迷你版有两个变体:4K和128K,分别表示支持的上下文长度(以令牌计)。
该模型经过后训练过程,包括监督微调和直接偏好优化,以确保遵循指令并采取安全措施。在测试常识、语言理解、数学、代码、长上下文和逻辑推理的基准测试中,Phi-3 Mini-4K-Instruct在参数少于130亿的模型中表现出强大且领先的性能。
资源与技术文档:
🏡 Phi-3门户
📰 Phi-3微软博客
📖 Phi-3技术报告
🛠️ Azure AI Studio上的Phi-3
👩🍳 Phi-3使用手册
🖥️ 立即试用
预期用途
主要用例
该模型旨在广泛用于英语的商业和研究用途。适用于需要以下场景的通用人工智能系统和应用:
- 内存/计算受限环境;
- 延迟敏感场景;
- 强推理能力(尤其是数学和逻辑)。
我们的模型旨在加速语言和多模态模型的研究,作为生成式AI功能的构建模块。
超出范围的用例
我们的模型并非专门设计或评估用于所有下游用途。开发者在选择用例时应考虑语言模型的常见限制,并在特定下游用例(尤其是高风险场景)中使用前评估和缓解准确性、安全性和公平性问题。
开发者应了解并遵守适用于其用例的相关法律法规(包括隐私、贸易合规法律等)。
本模型卡中的任何内容均不应解释为或视为对模型发布许可证的限制或修改。
发布说明
这是基于宝贵客户反馈对原始指令调优版Phi-3-mini的更新。模型使用了额外的后训练数据,显著提升了指令遵循和结构化输出的能力。我们还改进了多轮对话质量,明确支持<|system|>
标签,并显著提升了推理能力。我们相信大多数用例将受益于此版本,但鼓励用户在其特定AI应用中进行测试。我们感谢社区对Phi-3模型系列的热情采用,并继续欢迎所有反馈。
下表突出了新版本在公共和内部基准数据集上对指令遵循、结构化输出和推理能力的改进:
基准测试 |
原始版本 |
2024年6月更新 |
指令超难 |
5.7 |
6.0 |
指令难 |
4.9 |
5.1 |
指令挑战 |
24.6 |
42.3 |
JSON结构化输出 |
11.5 |
52.3 |
XML结构化输出 |
14.4 |
49.8 |
GPQA |
23.7 |
30.6 |
MMLU |
68.8 |
70.9 |
平均值 |
21.9 |
36.7 |
注:如需查看旧版本,可使用git提交ID ff07dc01615f8113924aed013115ab2abd32115b。对于模型转换(如GGUF等格式),我们邀请社区尝试各种方法并分享宝贵反馈。让我们一起创新!
使用方法
Phi-3 Mini-4K-Instruct已集成到transformers
的4.41.2
版本中。当前transformers
版本可通过以下命令验证:pip list | grep transformers
。
所需包示例:
flash_attn==2.5.8
torch==2.3.1
accelerate==0.31.0
transformers==4.41.2
Phi-3 Mini-4K-Instruct也可在Azure AI Studio中使用。
分词器
Phi-3 Mini-4K-Instruct支持最多32064
个令牌的词汇量。分词器文件已提供可用于下游微调的占位符令牌,但也可扩展至模型的词汇量上限。
聊天格式
鉴于训练数据的性质,Phi-3 Mini-4K-Instruct模型最适合使用以下聊天格式的提示。您可以使用通用模板提供问题提示:
<|system|>
你是一个乐于助人的助手。<|end|>
<|user|>
问题?<|end|>
<|assistant|>
例如:
<|system|>
你是一个乐于助人的助手。<|end|>
<|user|>
如何向中世纪骑士解释互联网?<|end|>
<|assistant|>
模型将在<|assistant|>
后生成文本。对于少量示例提示,可按以下格式组织:
<|system|>
你是一个乐于助人的旅行助手。<|end|>
<|user|>
我要去巴黎,应该看什么?<|end|>
<|assistant|>
巴黎是法国的首都,以其令人惊叹的建筑、艺术博物馆、历史地标和浪漫氛围而闻名。以下是巴黎的一些顶级景点:\n\n1. 埃菲尔铁塔:这座标志性建筑是世界公认的地标之一,可俯瞰城市美景。\n2. 卢浮宫博物馆:卢浮宫是世界上最大、最著名的博物馆之一,收藏了大量艺术品和文物,包括《蒙娜丽莎》。\n3. 巴黎圣母院:这座美丽的大教堂是巴黎最著名的地标之一,以其哥特式建筑和精美的彩色玻璃窗而闻名。\n\n这些只是巴黎众多景点中的一小部分。有如此多的景点和活动,难怪巴黎是世界上最受欢迎的旅游目的地之一。"<|end|>
<|user|>
#1有什么特别之处?<|end|>
<|assistant|>
示例推理代码
此代码片段展示了如何在GPU上快速启动模型运行:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
torch.random.manual_seed(0)
model = AutoModelForCausalLM.from_pretrained(
"microsoft/Phi-3-mini-4k-instruct",
device_map="cuda",
torch_dtype="auto",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained("microsoft/Phi-3-mini-4k-instruct")
messages = [
{"role": "system", "content": "你是一个乐于助人的AI助手。"},
{"role": "user", "content": "你能提供香蕉和火龙果的搭配吃法吗?"},
{"role": "assistant", "content": "当然!以下是香蕉和火龙果一起食用的几种方法:1. 香蕉火龙果奶昔:将香蕉和火龙果与牛奶和蜂蜜一起搅拌。2. 香蕉火龙果沙拉:将切片的香蕉和火龙果混合,加入柠檬汁和蜂蜜。"},
{"role": "user", "content": "如何解方程2x + 3 = 7?"},
]
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'])
注:如需使用闪存注意力,调用AutoModelForCausalLM.from_pretrained()
时添加参数attn_implementation="flash_attention_2"
。
负责任AI考量
与其他语言模型一样,Phi系列模型可能表现出不公平、不可靠或冒犯性的行为。需要注意的一些限制行为包括:
- 服务质量:Phi模型主要基于英语文本训练。非英语语言的性能会较差。训练数据中代表性较少的英语变体可能比标准美式英语表现更差。
- 伤害表现与刻板印象延续:这些模型可能过度或不足代表某些群体,抹去某些群体的表现,或强化贬低或负面刻板印象。尽管进行了安全后训练,但由于训练数据中不同群体的代表程度不同或负面刻板印象示例的普遍性反映了现实世界模式和社会偏见,这些限制可能仍然存在。
- 不当或冒犯性内容:这些模型可能产生其他类型的不当或冒犯性内容,因此在敏感环境中部署时可能需要额外的缓解措施。
- 信息可靠性:语言模型可能生成无意义的内容或编造听起来合理但不准确或过时的内容。
- 代码范围有限:Phi-3的大部分训练数据基于Python并使用常见包如"typing, math, random, collections, datetime, itertools"。如果模型生成使用其他包或其他语言的Python脚本,我们强烈建议用户手动验证所有API使用。
开发者应应用负责任的AI最佳实践,并负责确保特定用例符合相关法律法规(如隐私、贸易等)。重要考虑领域包括:
- 分配:模型可能不适合对法律地位或资源或生活机会分配(如住房、就业、信贷等)有重大影响的场景,除非进行进一步评估并应用额外的去偏技术。
- 高风险场景:开发者应评估在高风险场景中使用模型的适用性,其中不公平、不可靠或冒犯性的输出可能代价极高或导致伤害。这包括在准确性