Model Overview
Model Features
Model Capabilities
Use Cases
🚀 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推理進行的轉換。 |



