🚀 Phi-3 Mini-128K-Instruct ONNX模型
本倉庫託管了 Phi-3-mini-128k-instruct 的優化版本,旨在使用ONNX Runtime加速推理。
Phi-3 Mini是一個輕量級、最先進的開放模型,它基於Phi-2所使用的數據集構建,包括合成數據和經過篩選的網站數據,尤其側重於高質量、富含推理的數據。該模型屬於Phi-3模型家族,其迷你版本有兩種變體:4K和128K,這代表了它所能支持的上下文長度(以標記為單位)。該模型經過了嚴格的增強過程,包括監督微調(supervised fine-tuning)和直接偏好優化(direct preference optimization),以確保精確遵循指令並具備強大的安全措施。
優化後的Phi-3 Mini模型以 ONNX 格式發佈,可使用 ONNX Runtime 在CPU和GPU上跨設備運行,包括服務器平臺、Windows、Linux和Mac桌面,以及移動CPU,並且會採用最適合每個目標設備的精度。
DirectML 支持讓開發者能夠在AMD、Intel和NVIDIA GPU的Windows設備上大規模實現硬件加速。除了DirectML,ONNX Runtime還為Phi-3 Mini在一系列設備上提供了跨平臺支持,包括CPU、GPU和移動設備。
要輕鬆開始使用Phi-3,你可以使用我們新推出的ONNX Runtime Generate() API。有關如何運行它的說明,請參閱 此處。
🚀 快速開始
為了使Phi-3模型能夠在一系列設備和平臺上的各種執行提供程序後端上運行,我們引入了一個新的API來封裝生成式AI推理的多個方面。這個API讓你可以輕鬆地將大語言模型直接集成到你的應用程序中。要使用ONNX Runtime運行這些模型的早期版本,請按照 此處 的步驟操作。
例如:
python model-qa.py -m /*{YourModelPath}*/onnx/cpu_and_mobile/phi-3-mini-4k-instruct-int4-cpu -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” 可以表示編造或說謊,因此產生了幽默效果。
✨ 主要特性
- 多設備支持:可在CPU和GPU上跨設備運行,包括服務器平臺、Windows、Linux和Mac桌面,以及移動CPU。
- 硬件加速:支持DirectML,可在AMD、Intel和NVIDIA GPU的Windows設備上實現硬件加速。
- 新API支持:引入ONNX Runtime Generate() API,方便用戶使用。
- 性能優越:在ONNX Runtime中的性能優於PyTorch。
📦 安裝指南
文檔未提及具體安裝步驟,可參考 此處 運行模型的相關步驟。
💻 使用示例
基礎用法
python model-qa.py -m /*{YourModelPath}*/onnx/cpu_and_mobile/phi-3-mini-4k-instruct-int4-cpu -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 DML的ONNX模型:適用於Windows上的AMD、Intel和NVIDIA GPU的ONNX模型,使用 AWQ 量化為int4。
- fp16 CUDA的ONNX模型:可用於NVIDIA GPU的ONNX模型。
- int4 CUDA的ONNX模型:通過RTN使用int4量化的適用於NVIDIA GPU的ONNX模型。
- int4 CPU和移動設備的ONNX模型:適用於CPU和移動設備的ONNX模型,通過RTN使用int4量化。上傳了兩個版本以平衡延遲和準確性。Acc=1版本旨在提高準確性,而Acc=4版本則側重於提高性能。對於移動設備,我們建議使用acc-level-4的模型。
更多關於AMD的更新以及對CPU和移動設備的額外優化將在5月初的官方ORT 1.18版本發佈時添加,敬請關注!
硬件支持
這些模型在以下設備上進行了測試:
- GPU型號:RTX 4090 (DirectML)
- GPU型號:1 A100 80GB GPU,型號:Standard_ND96amsr_A100_v4 (CUDA)
- CPU型號:Standard F64s v2(64個虛擬CPU,128 GiB內存)
- 移動設備型號:Samsung Galaxy S21
所需的最低配置:
模型描述
屬性 |
詳情 |
開發方 |
Microsoft |
模型類型 |
ONNX |
語言(NLP) |
Python、C、C++ |
許可證 |
MIT |
模型描述 |
這是Phi-3 Mini-4K-Instruct模型為ONNX Runtime推理進行的轉換版本。 |
附加詳情
性能指標
Phi-3 Mini-128K-Instruct在ONNX Runtime中的所有批量大小和提示長度組合下的性能均優於PyTorch。對於FP16 CUDA,ORT的速度比PyTorch快達5倍,而對於INT4 CUDA,速度比PyTorch快達9倍。
下表顯示了在 1 A100 80GB GPU,型號:Standard_ND96amsr_A100_v4 上測量的FP16和INT4精度在CUDA上生成的前256個標記的平均吞吐量(tps)。
批量大小,提示長度 |
ORT FP16 CUDA |
PyTorch Eager FP16 CUDA |
FP16 CUDA加速比(ORT/PyTorch) |
1, 16 |
134.46 |
25.35 |
5.30 |
1, 64 |
132.21 |
25.69 |
5.15 |
1, 256 |
124.51 |
25.77 |
4.83 |
1, 1024 |
110.03 |
25.73 |
4.28 |
1, 2048 |
96.93 |
25.72 |
3.77 |
1, 4096 |
62.12 |
25.66 |
2.42 |
4, 16 |
521.10 |
101.31 |
5.14 |
4, 64 |
507.03 |
101.66 |
4.99 |
4, 256 |
459.47 |
101.15 |
4.54 |
4, 1024 |
343.60 |
101.09 |
3.40 |
4, 2048 |
264.81 |
100.78 |
2.63 |
4, 4096 |
158.00 |
77.98 |
2.03 |
16, 16 |
1689.08 |
394.19 |
4.28 |
16, 64 |
1567.13 |
394.29 |
3.97 |
16, 256 |
1232.10 |
405.30 |
3.04 |
16, 1024 |
680.61 |
294.79 |
2.31 |
16, 2048 |
350.77 |
203.02 |
1.73 |
16, 4096 |
192.36 |
OOM |
|
批量大小,提示長度 |
PyTorch Eager INT4 CUDA |
INT4 CUDA加速比(ORT/PyTorch) |
1, 16 |
25.35 |
8.89 |
1, 64 |
25.69 |
8.58 |
1, 256 |
25.77 |
7.69 |
1, 1024 |
25.73 |
6.34 |
1, 2048 |
25.72 |
5.24 |
1, 4096 |
25.66 |
2.97 |
4, 16 |
101.31 |
2.82 |
4, 64 |
101.66 |
2.77 |
4, 256 |
101.15 |
2.64 |
4, 1024 |
101.09 |
2.20 |
4, 2048 |
100.78 |
1.84 |
4, 4096 |
77.98 |
1.62 |
16, 16 |
394.19 |
2.52 |
16, 64 |
394.29 |
2.41 |
16, 256 |
405.30 |
2.00 |
16, 1024 |
294.79 |
1.79 |
16, 2048 |
203.02 |
1.81 |
16, 4096 |
OOM |
|
注意:PyTorch compile和Llama.cpp目前不支持Phi-3 Mini-128K-Instruct模型。
包版本
Pip包名稱 |
版本 |
torch |
2.2.0 |
triton |
2.2.0 |
onnxruntime-gpu |
1.18.0 |
onnxruntime-genai |
0.2.0 |
onnxruntime-genai-cuda |
0.2.0 |
onnxruntime-genai-directml |
0.2.0 |
transformers |
4.39.0 |
bitsandbytes |
0.42.0 |
附錄 - 激活感知量化
AWQ通過識別對保持準確性最重要的前1%最顯著的權重,並對其餘99%的權重進行量化。與許多其他量化技術相比,這導致量化帶來的準確性損失更小。有關AWQ的更多信息,請參閱 此處。
📄 許可證
本模型採用MIT許可證。
模型卡片聯繫人
parinitarahi, kvaishnavi, natke
貢獻者
Kunal Vaishnavi, Sunghoon Choi, Yufeng Li, Akshay Sonawane, Sheetal Arun Kadam, Rui Ren, Edward Chen, Scott McKay, Ryan Hill, Emma Ning, Natalie Kershaw, Parinita Rahi, Patrice Vignola, Chai Chaoweeraprasit, Logan Iyer, Vicente Rivera, Jacques Van Rhyn