模型简介
模型特点
模型能力
使用案例
🚀 Phi-3.5-Mini-Instruct ONNX模型
本仓库托管了 Phi-3.5-mini-instruct 的优化版本,旨在通过ONNX Runtime加速推理。
优化后的Phi-3.5 Mini模型以 ONNX 格式发布,可在CPU和GPU上跨设备运行,包括服务器平台、Windows、Linux和Mac桌面,以及移动CPU,且针对每个目标设备采用了最合适的精度。
若要轻松开始使用Phi-3.5,你可以使用我们新推出的ONNX Runtime Generate() API。有关如何运行的说明,请参阅 此处。
🚀 快速开始
为了能在各种执行提供程序后端的不同设备和平台上运行Phi-3.5模型,我们引入了一个新的API,用于封装生成式AI推理的多个方面。这个API让你可以轻松地将大语言模型集成到你的应用程序中。若要使用ONNX Runtime运行这些模型的早期版本,请按照 此处 的步骤操作。
例如:
python model-qa.py -m /*{YourModelPath}*/Phi-3.5-mini-instruct-onnx/cpu_and_mobile/cpu-int4-awq-block-128-acc-level-4 -k 40 -p 0.95 -t 0.8 -r 1.0
*输入:* <|user|>Tell me a joke<|end|><|assistant|>
*输出:* Why don't scientists trust atoms?
Because they make up everything!
这个笑话利用了 “make up” 的双重含义。在科学领域,原子是物质的基本组成部分,确实构成了一切。然而,在口语中,“to make up” 可以表示编造或说谎,因此产生了幽默效果。
✨ 主要特性
ONNX模型
以下是我们添加的一些优化配置:
- INT4 CPU的ONNX模型:通过AWQ使用int4量化的CPU ONNX模型。
- INT4 GPU的ONNX模型:通过AWQ使用int4量化的GPU ONNX模型。
模型概述
Phi-3.5 mini是一个轻量级的、最先进的开放模型,它基于Phi-3使用的数据集构建,包括合成数据和经过筛选的公开网站数据,特别注重高质量、富含推理的数据。该模型属于Phi-3模型家族,支持128K的令牌上下文长度。该模型经过了严格的增强过程,包括监督微调、近端策略优化和直接偏好优化,以确保精确遵循指令和强大的安全措施。
预期用途
Phi 3.5 mini模型旨在用于多种语言的商业和研究用途。该模型适用于通用AI系统和应用程序,这些系统和应用程序需要:
- 内存/计算受限的环境
- 低延迟场景
- 强大的推理能力(特别是代码、数学和逻辑方面)
使用案例注意事项
Phi 3.5模型并非专门为所有下游用途而设计或评估。开发者在选择使用案例时应考虑语言模型的常见局限性,并在特定下游用例中使用之前评估和减轻准确性、安全性和公平性方面的问题,特别是在高风险场景中。开发者应了解并遵守适用于其用例的相关法律法规(包括隐私、贸易合规法律等)。
本模型卡片中的任何内容都不应被解释为或视为对模型发布所依据的许可证的限制或修改。
发布说明
这是对经过指令微调的Phi-3 Mini ONNX模型版本的更新。我们相信大多数用例都将从这个版本中受益,但我们鼓励用户测试他们特定的AI应用程序。我们感谢大家对Phi-3模型家族的热情采用,并继续欢迎社区的所有反馈。
支持的硬件
ONNX模型在以下设备上进行了测试:
- GPU型号:RTX 4090 (DirectML)
- GPU型号:1 A100 80GB GPU,型号:Standard_ND96amsr_A100_v4 (CUDA)
- CPU型号:Standard D16s v6 (16 vcpus, 64 GiB内存)
- AMD CPU:Internal_D64as_v5
最低配置要求:
- Windows:支持DirectX 12的GPU,至少4GB的组合内存
- CUDA:计算能力 >= 7.0的NVIDIA GPU
性能指标
在所有批量大小和提示长度的组合下,Phi-3.5 Mini-Instruct在ONNX Runtime中的性能均优于PyTorch。
下表显示了在1个A100 80GB GPU(型号:Standard_ND96amsr_A100_v4)上测量的CUDA上FP16和INT4精度下生成的前256个令牌的平均吞吐量(tps)。GPU的ONNX Runtime模型比PyTorch Compile快21倍,比A100 GPU上的llama.cpp快达8倍。
批量大小, 序列长度 | ONNX RT INT4 | PyTorch Eager INT4 | PyTorch Compile INT4 | Llama.cpp INT4 | INT4加速比ORT/PyTorch Eager | INT4加速比ORT/PyTorch Compile | INT4加速比ORT/Llama.cpp |
---|---|---|---|---|---|---|---|
1, 16 | 238.97 | 17.75 | 11.36 | 183.17 | 13.46 | 21.04 | 1.30 |
1, 64 | 233.74 | 17.74 | 11.32 | 182.77 | 13.17 | 20.65 | 1.28 |
1, 256 | 208.52 | 17.82 | 11.34 | 182.15 | 11.70 | 18.38 | 1.14 |
1, 1024 | 174.19 | 17.85 | 11.36 | 166.39 | 9.76 | 15.34 | 1.05 |
1, 2048 | 146.10 | 17.96 | 11.35 | 153.50 | 8.14 | 12.87 | 0.95 |
1, 3840 | 112.68 | 17.91 | 11.34 | 141.53 | 6.29 | 9.94 | 0.80 |
4, 16 | 286.73 | 60.90 | 40.89 | 180.82 | 4.71 | 7.01 | 1.59 |
4, 64 | 282.87 | 60.88 | 41.03 | 177.69 | 4.65 | 6.89 | 1.59 |
4, 256 | 268.30 | 60.85 | 40.90 | 166.34 | 4.41 | 6.56 | 1.61 |
4, 1024 | 223.30 | 60.86 | 40.90 | 133.39 | 3.67 | 5.46 | 1.67 |
4, 2048 | 187.62 | 60.80 | 40.93 | 106.03 | 3.09 | 4.58 | 1.77 |
4, 3840 | 145.59 | 55.96 | 40.88 | 78.12 | 2.60 | 3.56 | 1.86 |
8, 16 | 541.04 | 121.92 | 81.96 | 171.90 | 4.44 | 6.60 | 3.15 |
8, 64 | 532.68 | 121.87 | 81.98 | 166.33 | 4.37 | 6.50 | 3.20 |
8, 256 | 480.00 | 122.06 | 81.80 | 148.07 | 3.93 | 5.87 | 3.24 |
8, 1024 | 360.60 | 122.48 | 81.59 | 103.58 | 2.94 | 4.42 | 3.48 |
8, 2048 | 274.16 | 105.92 | 81.71 | 74.01 | 2.59 | 3.36 | 3.70 |
8, 3840 | 192.50 | 79.74 | 81.50 | 49.23 | 2.41 | 2.36 | 3.91 |
16, 16 | 1007.69 | 244.16 | 163.09 | 156.99 | 4.13 | 6.18 | 6.42 |
16, 64 | 966.42 | 244.89 | 163.26 | 148.23 | 3.95 | 5.92 | 6.52 |
16, 256 | 827.37 | 244.84 | 163.23 | 121.85 | 3.38 | 5.07 | 6.79 |
16, 1024 | 536.73 | 209.13 | 169.30 | 71.57 | 2.57 | 3.17 | 7.50 |
16, 2048 | 375.31 | 153.95 | 158.77 | 45.97 | 2.44 | 2.36 | 8.16 |
16, 3840 | 243.66 | OOM | OOM | 28.33 | 8.60 |
批量大小, 序列长度 | ONNX RT FP16 | PyTorch Eager FP16 | PyTorch Compile FP16 | Llama.cpp | FP16加速比ORT/PyTorch Eager | FP16加速比ORT/PyTorch Compile | FP16加速比ORT/Llama.cpp |
---|---|---|---|---|---|---|---|
1, 16 | 137.30 | 26.02 | 26.83 | 125.86 | 5.28 | 5.12 | 1.09 |
1, 64 | 135.79 | 26.01 | 26.48 | 125.75 | 5.22 | 5.13 | 1.08 |
1, 256 | 127.92 | 26.17 | 26.61 | 125.24 | 4.89 | 4.81 | 1.02 |
1, 1024 | 114.08 | 26.11 | 26.63 | 117.97 | 4.37 | 4.28 | 0.97 |
1, 2048 | 101.68 | 17.77 | 21.05 | 111.08 | 5.72 | 4.83 | 0.92 |
1, 3840 | 84.94 | 25.17 | 26.77 | 104.88 | 3.37 | 3.17 | 0.81 |
4, 16 | 529.07 | 99.47 | 100.22 | 124.63 | 5.32 | 5.28 | 4.25 |
4, 64 | 513.85 | 99.47 | 100.54 | 123.20 | 5.17 | 5.11 | 4.17 |
4, 256 | 466.56 | 99.21 | 100.22 | 117.61 | 4.70 | 4.66 | 3.97 |
4, 1024 | 352.06 | 99.56 | 100.50 | 100.42 | 3.54 | 3.50 | 3.51 |
4, 2048 | 271.02 | 70.12 | 73.66 | 83.95 | 3.86 | 3.68 | 3.23 |
4, 3840 | 191.36 | 74.35 | 79.68 | 65.51 | 2.57 | 2.40 | 2.92 |
8, 16 | 936.46 | 198.99 | 212.40 | 120.24 | 4.71 | 4.41 | 7.79 |
8, 64 | 926.83 | 200.28 | 213.97 | 117.77 | 4.63 | 4.33 | 7.87 |
8, 256 | 783.95 | 200.66 | 214.88 | 108.33 | 3.91 | 3.65 | 7.24 |
8, 1024 | 511.96 | 183.10 | 201.01 | 82.52 | 2.80 | 2.55 | 6.20 |
8, 2048 | 352.86 | 96.99 | 122.10 | 62.41 | 3.64 | 2.89 | 5.65 |
8, 3840 | 228.97 | 96.81 | 101.60 | 43.89 | 2.37 | 2.25 | 5.22 |
16, 16 | 1675.72 | 396.52 | 422.13 | 112.78 | 4.23 | 3.97 | 14.86 |
16, 64 | 1591.61 | 395.66 | 422.47 | 108.36 | 4.02 | 3.77 | 14.69 |
16, 256 | 1249.94 | 399.30 | 429.10 | 93.68 | 3.13 | 2.91 | 13.34 |
16, 1024 | 685.63 | 270.99 | 292.24 | 60.66 | 2.53 | 2.35 | 11.30 |
16, 2048 | 441.15 | 121.17 | 162.93 | 41.30 | 3.64 | 2.71 | 10.68 |
16, 3840 | 270.38 | OOM | OOM | 26.50 | 0.00 | 0.00 | 10.20 |
下表显示了在Standard D16s v6(16 vcpus, 64 GiB内存)上测量的CPU上INT4精度下生成的前256个令牌的平均吞吐量(tps):
批量大小, 序列长度 | ORT INT4 AWQ | Llama.cpp INT4 | INT4 AWQ加速比Llama.cpp |
---|---|---|---|
1, 16 | 41.99 | 26.72 | 1.57 |
1, 64 | 41.81 | 26.67 | 1.57 |
1, 256 | 41.26 | 26.30 | 1.57 |
1, 1024 | 37.15 | 24.02 | 1.55 |
1, 2048 | 32.68 | 21.82 | 1.50 |
包版本
Pip包名称 | 版本 |
---|---|
torch | 2.4.1 |
triton | 3.0.0 |
onnxruntime-gpu | 1.20.1 |
onnxruntime-genai | 0.5.2 |
onnxruntime-genai-cuda | 0.5.2 |
onnxruntime-genai-directml | 0.5.2 |
transformers | 4.44.2 |
llama.cpp | bdf314f38a2c90e18285f7d7067e8d736a14000a |
附录
激活感知量化(AWQ)的工作原理是识别对保持准确性最重要的前1%的显著权重,并对其余99%的权重进行量化。与许多其他量化技术相比,这导致量化带来的准确性损失更小。有关AWQ的更多信息,请参阅 此处。
模型卡片联系人
parinitarahi
贡献者
Sunghoon Choi, Yufeng Li, Kunal Vaishnavi, Akshay Sonawane, Rui Ren, Parinita Rahi
📄 许可证
该模型遵循MIT许可证。
商标
本项目可能包含项目、产品或服务的商标或标志。经授权使用微软的商标或标志须遵守并必须遵循微软的商标和品牌指南。在本项目的修改版本中使用微软的商标或标志不得造成混淆或暗示微软的赞助。任何第三方商标或标志的使用均须遵守这些第三方的政策。
📚 详细文档
模型信息
属性 | 详情 |
---|---|
模型类型 | ONNX |
开发方 | Microsoft |
支持语言 (NLP) | Python, C, C++ |
许可证 | MIT |
模型描述 | 这是Phi-3.5 Mini-Instruct模型为ONNX Runtime推理进行的转换。 |



