模型简介
模型特点
模型能力
使用案例
🚀 Phi-3.5-mini-instruct项目
Phi-3.5-mini-instruct是一款轻量级、先进的开源模型,基于Phi-3使用的数据集构建,专注于高质量、富含推理的数据。它属于Phi-3模型家族,支持128K令牌上下文长度,经过严格的增强过程,确保精确遵循指令和强大的安全措施。
🚀 快速开始
本仓库是对 https://huggingface.co/microsoft/Phi-3.5-mini-instruct 的复刻,用于修复 'DynamicCache' object has no attribute 'get_max_length'
问题。
相关链接
✨ 主要特性
模型概述
Phi-3.5-mini是基于Phi-3使用的数据集构建的轻量级、最先进的开放模型,数据集包括合成数据和经过筛选的公开网站数据,重点关注高质量、富含推理的数据。该模型属于Phi-3模型家族,支持128K令牌上下文长度。模型经过了严格的增强过程,包括监督微调、近端策略优化和直接偏好优化,以确保精确遵循指令和强大的安全措施。
多语言能力
在多语言MMLU、MEGA和多语言MMLU-pro数据集上,Phi-3.5 Mini展现出了出色的多语言能力。即使只有3.8B的有效参数,该模型在多语言任务上也能与其他拥有更多有效参数的模型竞争。
长上下文处理能力
Phi-3.5-mini支持128K的上下文长度,能够处理包括长文档/会议摘要、长文档问答、长文档信息检索等在内的多个长上下文任务。与仅支持8K上下文长度的Gemma-2系列相比,Phi-3.5-mini明显更优,并且能与其他更大的开放权重模型(如Llama-3.1-8B-instruct、Mistral-7B-instruct-v0.3和Mistral-Nemo-12B-instruct-2407)竞争。
📦 安装指南
环境要求
Phi-3系列已集成在 transformers
的 4.43.0
版本中。可以使用以下命令验证当前 transformers
版本:
pip list | grep transformers
所需包示例
flash_attn==2.5.8
torch==2.3.1
accelerate==0.31.0
transformers==4.43.0
Phi-3.5-mini-instruct也可在 Azure AI Studio 中使用。
💻 使用示例
基础用法
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
torch.random.manual_seed(0)
model = AutoModelForCausalLM.from_pretrained(
"microsoft/Phi-3.5-mini-instruct",
device_map="cuda",
torch_dtype="auto",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained("microsoft/Phi-3.5-mini-instruct")
messages = [
{"role": "system", "content": "You are a helpful AI assistant."},
{"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'])
注意:如果要使用闪存注意力机制,请在调用 AutoModelForCausalLM.from_pretrained()
时添加参数 attn_implementation="flash_attention_2"
。
输入格式
鉴于训练数据的性质,Phi-3.5-mini-instruct模型最适合使用以下聊天格式的提示:
<|system|>
You are a helpful assistant.<|end|>
<|user|>
How to explain Internet for a medieval knight?<|end|>
<|assistant|>
📚 详细文档
预期用途
主要用例
该模型旨在用于多种语言的商业和研究用途。适用于通用人工智能系统和应用,特别是在以下场景中:
- 内存/计算资源受限的环境。
- 对延迟有要求的场景。
- 需要强大推理能力的场景(特别是代码、数学和逻辑方面)。
使用案例考虑因素
我们的模型并非专门为所有下游用途设计或评估。开发者在选择用例时应考虑语言模型的常见局限性,并在特定下游用例中使用之前,评估和缓解准确性、安全性和公平性方面的问题,特别是在高风险场景中。开发者应了解并遵守与其用例相关的适用法律或法规(包括隐私、贸易合规法等)。
发布说明
这是基于用户宝贵反馈对2024年6月发布的指令微调版Phi-3 Mini的更新。该模型使用了额外的训练后数据,在多语言、多轮对话质量和推理能力方面取得了显著提升。我们相信大多数用例将受益于此次发布,但鼓励用户在其特定的人工智能应用中进行测试。我们感谢社区对Phi-3模型家族的热情采用,并继续欢迎所有反馈。
多语言能力
多语言基准测试结果
基准测试 | Phi-3.5 Mini-Ins | Phi-3.0-Mini-128k-Instruct (June2024) | Mistral-7B-Instruct-v0.3 | Mistral-Nemo-12B-Ins-2407 | Llama-3.1-8B-Ins | Gemma-2-9B-Ins | Gemini 1.5 Flash | GPT-4o-mini-2024-07-18 (Chat) |
---|---|---|---|---|---|---|---|---|
多语言MMLU | 55.4 | 51.08 | 47.4 | 58.9 | 56.2 | 63.8 | 77.2 | 72.9 |
多语言MMLU-Pro | 30.9 | 30.21 | 15.0 | 34.0 | 21.4 | 43.0 | 57.9 | 53.2 |
MGSM | 47.9 | 41.56 | 31.8 | 63.3 | 56.7 | 75.1 | 75.8 | 81.7 |
MEGA MLQA | 61.7 | 55.5 | 43.9 | 61.2 | 45.2 | 54.4 | 61.6 | 70.0 |
MEGA TyDi QA | 62.2 | 55.9 | 54.0 | 63.7 | 54.5 | 65.6 | 63.6 | 81.8 |
MEGA UDPOS | 46.5 | 48.1 | 57.2 | 58.2 | 54.1 | 56.6 | 62.4 | 66.0 |
MEGA XCOPA | 63.1 | 62.4 | 58.8 | 10.8 | 21.1 | 31.2 | 95.0 | 90.3 |
MEGA XStoryCloze | 73.5 | 73.6 | 75.5 | 92.3 | 71.0 | 87.0 | 20.7 | 96.6 |
平均 | 55.2 | 52.3 | 47.9 | 55.3 | 47.5 | 59.6 | 64.3 | 76.6 |
部分支持语言的多语言MMLU分数
基准测试 | Phi-3.5 Mini-Ins | Phi-3.0-Mini-128k-Instruct (June2024) | Mistral-7B-Instruct-v0.3 | Mistral-Nemo-12B-Ins-2407 | Llama-3.1-8B-Ins | Gemma-2-9B-Ins | Gemini 1.5 Flash | GPT-4o-mini-2024-07-18 (Chat) |
---|---|---|---|---|---|---|---|---|
阿拉伯语 | 44.2 | 35.4 | 33.7 | 45.3 | 49.1 | 56.3 | 73.6 | 67.1 |
中文 | 52.6 | 46.9 | 45.9 | 58.2 | 54.4 | 62.7 | 66.7 | 70.8 |
荷兰语 | 57.7 | 48.0 | 51.3 | 60.1 | 55.9 | 66.7 | 80.6 | 74.2 |
法语 | 61.1 | 61.7 | 53.0 | 63.8 | 62.8 | 67.0 | 82.9 | 75.6 |
德语 | 62.4 | 61.3 | 50.1 | 64.5 | 59.9 | 65.7 | 79.5 | 74.3 |
意大利语 | 62.8 | 63.1 | 52.5 | 64.1 | 55.9 | 65.7 | 82.6 | 75.9 |
俄语 | 50.4 | 45.3 | 48.9 | 59.0 | 57.4 | 63.2 | 78.7 | 72.6 |
西班牙语 | 62.6 | 61.3 | 53.9 | 64.3 | 62.6 | 66.0 | 80.0 | 75.5 |
乌克兰语 | 45.2 | 36.7 | 46.9 | 56.6 | 52.9 | 62.0 | 77.4 | 72.6 |
长上下文处理能力
长上下文基准测试结果
基准测试 | Phi-3.5-mini-instruct | Llama-3.1-8B-instruct | Mistral-7B-instruct-v0.3 | Mistral-Nemo-12B-instruct-2407 | Gemini-1.5-Flash | GPT-4o-mini-2024-07-18 (Chat) |
---|---|---|---|---|---|---|
GovReport | 25.9 | 25.1 | 26.0 | 25.6 | 27.8 | 24.8 |
QMSum | 21.3 | 21.6 | 21.3 | 22.1 | 24.0 | 21.7 |
Qasper | 41.9 | 37.2 | 31.4 | 30.7 | 43.5 | 39.8 |
SQuALITY | 25.3 | 26.2 | 25.9 | 25.8 | 23.5 | 23.8 |
SummScreenFD | 16.0 | 17.6 | 17.5 | 18.2 | 16.3 | 17.0 |
平均 | 26.1 | 25.5 | 24.4 | 24.5 | 27.0 | 25.4 |
RULER长上下文理解基准测试结果
模型 | 4K | 8K | 16K | 32K | 64K | 128K | 平均 |
---|---|---|---|---|---|---|---|
Phi-3.5-mini-instruct | 94.3 | 91.1 | 90.7 | 87.1 | 78.0 | 63.6 | 84.1 |
Llama-3.1-8B-instruct | 95.5 | 93.8 | 91.6 | 87.4 | 84.7 | 77.0 | 88.3 |
Mistral-Nemo-12B-instruct-2407 | 87.8 | 87.2 | 87.7 | 69.0 | 46.8 | 19.0 | 66.2 |
RepoQA长上下文代码理解基准测试结果
模型 | Python | C++ | Rust | Java | TypeScript | 平均 |
---|---|---|---|---|---|---|
Phi-3.5-mini-instruct | 86 | 67 | 73 | 77 | 82 | 77 |
Llama-3.1-8B-instruct | 80 | 65 | 73 | 76 | 63 | 71 |
Mistral-7B-instruct-v0.3 | 61 | 57 | 51 | 61 | 80 | 62 |
分词器
Phi-3.5-mini-Instruct支持最多 32064
个令牌的词汇量。分词器文件 已经提供了可用于下游微调的占位符令牌,但也可以扩展到模型的词汇量。
🔧 技术细节
模型信息
属性 | 详情 |
---|---|
模型类型 | 具有3.8B参数的密集解码器Transformer模型 |
训练数据 | 包括严格筛选的公开文档、高质量教育数据、代码、新创建的合成数据和高质量聊天格式监督数据,总计3.4万亿令牌 |
上下文长度 | 128K令牌 |
GPU数量 | 512个H100-80G |
训练时间 | 10天 |
支持语言 | 阿拉伯语、中文、捷克语、丹麦语、荷兰语、英语、芬兰语、法语、德语、希伯来语、匈牙利语、意大利语、日语、韩语、挪威语、波兰语、葡萄牙语、俄语、西班牙语、瑞典语、泰语、土耳其语、乌克兰语 |
发布日期 | 2024年8月 |
训练数据集
我们的训练数据包括多种来源,总计3.4万亿令牌,是以下数据的组合:
- 经过严格质量筛选的公开文档、选定的高质量教育数据和代码。
- 为教授数学、编码、常识推理、世界常识(科学、日常活动、心理理论等)而新创建的合成的“教科书式”数据。
- 涵盖各种主题的高质量聊天格式监督数据,以反映人类在遵循指令、真实性、诚实性和乐于助人等不同方面的偏好。
我们专注于可能提高模型推理能力的数据质量,并筛选公开文档以包含适当水平的知识。例如,某一天英超联赛的比赛结果可能是前沿模型的良好训练数据,但我们需要去除此类信息,以便为小尺寸模型留出更多的推理能力。有关数据的更多详细信息,请参阅 Phi-3技术报告。
微调
多GPU监督微调(SFT)与TRL和Accelerate模块的基本示例可在 这里 找到。
📄 许可证
本模型采用MIT许可证,详情请见 许可证链接。
🔒 负责任的AI考虑因素
与其他语言模型一样,Phi系列模型可能会表现出不公平、不可靠或冒犯性的行为。需要注意的一些限制行为包括:
- 服务质量:Phi模型主要在英语文本和一些额外的多语言文本上进行训练。非英语语言的性能会较差,并且不同非英语语言之间的性能也会存在差异。训练数据中代表性较少的英语变体的性能可能会比标准美式英语差。
- 多语言性能和安全差距:我们认为让语言模型在不同语言中更广泛可用很重要,但Phi 3模型在多语言发布中仍然存在常见的挑战。与任何大语言模型的部署一样,开发者应更好地针对其语言和文化背景测试性能或安全差距,并通过额外的微调和适当的保障措施对模型进行定制。
- 伤害的表现和刻板印象的延续:这些模型可能会过度或不足地代表某些人群,抹去某些群体的代表性,或强化贬低性或负面的刻板印象。尽管进行了安全训练后处理,但由于不同群体的代表性水平不同、文化背景不同或训练数据中反映现实世界模式和社会偏见的负面刻板印象示例的普遍性,这些局限性可能仍然存在。
- 不适当或冒犯性内容:这些模型可能会产生其他类型的不适当或冒犯性内容,在没有针对具体情况进行额外缓解措施的情况下,可能不适合在敏感环境中部署。
- 信息可靠性:语言模型可能会生成无意义的内容或编造听起来合理但不准确或过时的内容。
- 代码范围有限:Phi-3的大部分训练数据基于Python,并使用常见的包(如“typing, math, random, collections, datetime, itertools”)。如果模型生成使用其他包的Python脚本或其他语言的脚本,我们强烈建议用户手动验证所有API的使用。
- 长对话问题:与其他模型一样,Phi-3模型在某些情况下可能会在非常长的聊天会话(英语和非英语)中生成重复、无用或不一致的回复。鼓励开发者采取适当的缓解措施,例如限制对话轮数以解决可能的对话漂移问题。
开发者应应用负责任的AI最佳实践,包括映射、测量和缓解与其特定用例以及文化、语言背景相关的风险。Phi-3系列模型是通用模型。当开发者计划将这些模型用于特定用例时,鼓励他们针对其用例对模型进行微调,并在具有特定语言保障措施的更广泛AI系统中使用这些模型。需要考虑的重要领域包括:
- 资源分配:模型可能不适用于可能对法律地位、资源分配或生活机会产生重大影响的场景(例如住房、就业、信贷等),除非进行进一步评估和采用额外的去偏技术。
- 高风险场景:开发者应评估在高风险场景中使用模型的适用性,在这些场景中,不公平、不可靠或冒犯性的输出可能会造成极大的代价或导致伤害。这包括在准确性和可靠性至关重要的敏感或专业领域提供建议(例如法律或健康建议)。应根据部署上下文在应用层面实施额外的保障措施。
- 错误信息:模型可能会产生不准确的信息。开发者应遵循透明度最佳实践,并告知最终用户他们正在与人工智能系统进行交互。在应用层面,开发者可以构建反馈机制和管道,以将回复与特定用例的上下文信息相结合,这种技术称为检索增强生成(RAG)。
- 有害内容生成:开发者应根据其上下文评估输出,并使用适合其用例的可用安全分类器或自定义解决方案。
- 滥用:可能存在其他形式的滥用,如欺诈、垃圾邮件或恶意软件生产,开发者应确保其应用不违反适用的法律法规。



