Phi-3 小型和中型模型現已透過 ONNX Runtime 和 DirectML 最佳化
2024年5月21日
我們此前分享了對 Phi-3 mini 的最佳化支援。現在,我們推出了新發布的 Phi-3 模型的最佳化版 ONNX 變體。新的 Phi-3-Small 和 Phi-3-Medium 在效能上超越了同等規模甚至大得多的語言模型。Phi-3-small 在各種語言、推理、編碼和數學基準測試中擊敗了 GPT-3.5T。這些新模型為需要強大推理能力、有限計算資源和低延遲的生成式 AI 應用提供了構建模組。
Phi-3-Medium 是一個擁有140億引數的語言模型。它提供短上下文 (4K) 和長上下文 (128K) 兩種變體。您現在可以在 Huggingface 上找到透過 ONNX Runtime 和 DML 最佳化的 Phi-3-medium-4k-instruct-onnx 和 Phi-3-medium-128K-instruct-onnx 模型!請檢視 Phi-3 模型集合 以獲取 ONNX 模型。
我們還增加了對支援 CUDA 的 Nvidia GPU 的 Phi-3 Small 模型的支援,其他變體即將推出。這包括透過 ONNX Runtime generate() API 在最新發布的 ONNX Runtime 1.18 版本中支援塊稀疏核心。
ONNXRuntime 1.18 增加了新功能,例如改進的 4 位量化支援、改進的 CPU 上的 MultiheadAttention 效能,以及 ONNX Runtime generate() API 增強功能,以實現在不同裝置上更輕鬆高效的執行。
我們也很高興地宣佈,用於網路部署的全新最佳化 ONNX Phi-3-mini 現已可用。您可以完全在瀏覽器中執行 Phi3-mini-4K!請在此處檢視模型。更重要的是,我們現在已經更新了用於CPU 和移動裝置的最佳化 ONNX 版本,效能甚至更好。別錯過這篇部落格,瞭解如何在手機和瀏覽器中執行 Phi-3。
如何使用 ONNX Runtime 執行 Phi-3-Medium 和 Small
您可以利用 ONNX Runtime generate() API 無縫執行這些模型。您可以在此處檢視詳細說明。您還可以在本地執行聊天應用程式。
只需根據您的硬體選擇一個包和模型組合。
執行的 3 個簡單步驟
- 下載模型
- 安裝 generate() API
- 使用 phi3-qa.py 執行模型
僅執行您的硬體所需的步驟。
為您的平臺最佳化
Phi-3 Small 8K ONNX 模型
Phi-3 Medium 4k ONNX 模型
- microsoft/Phi-3-medium-4k-instruct-onnx-cpu
- microsoft/Phi-3-medium-4k-instruct-onnx-cuda
- microsoft/Phi-3-medium-4k-instruct-onnx-directml
Phi-3 Medium 128k ONNX 模型
- microsoft/Phi-3-medium-128k-instruct-onnx-cpu
- microsoft/Phi-3-medium-128k-instruct-onnx-cuda
- microsoft/Phi-3-medium-128k-instruct-onnx-directml
效能
ONNX Runtime 模型比 PyTorch 變體執行速度快達 10 倍。不同變體的每秒令牌生成吞吐量 (tokens/sec) 如下所示。
| 模型 | 批處理大小,提示長度 | 模型變體 | 令牌生成吞吐量 (tokens/sec) |
|---|---|---|---|
| Phi-3 Medium 4K | |||
| Phi-3 Medium 4K 14B ONNX CUDA | 1, 16 | 使用 ONNX Runtime 的 FP16 CUDA GPU | 47.32 |
| Phi-3 Medium 4K 14B ONNX CUDA | 16, 64 | 使用 ONNX Runtime 的 FP16 CUDA GPU | 698.22 |
| Phi-3 Medium 4K 14B ONNX CUDA | 1, 16 | 使用 ONNX Runtime 的 INT4 RTN CUDA GPU | 115.68 |
| Phi-3 Medium 4K 14B ONNX CUDA | 16, 64 | 使用 ONNX Runtime 的 INT4 RTN CUDA GPU | 339.45 |
| Phi-3 Medium 4K 14B ONNX DML | 1, 16 | 使用 ONNX Runtime 的 DML INT4 AWQ | 72.39 |
| Phi-3 Medium 4K 14B ONNX CPU | 16, 64 | 使用 ONNX Runtime 的 INT4 RTN CPU | 20.77 |
| Phi-3 Medium 128K | |||
| Phi-3 Medium 128K 14B ONNX CUDA | 1, 16 | 使用 ONNX Runtime 的 FP16 CUDA GPU | 46.27 |
| Phi-3 Medium 128K 14B ONNX CUDA | 16, 64 | 使用 ONNX Runtime 的 FP16 CUDA GPU | 662.23 |
| Phi-3 Medium 128K 14B ONNX CUDA | 1, 16 | 使用 ONNX Runtime 的 INT4 RTN CUDA GPU | 108.59 |
| Phi-3 Medium 128K 14B ONNX CUDA | 16, 64 | 使用 ONNX Runtime 的 INT4 RTN CUDA GPU | 332.57 |
| Phi-3 Medium 128K 14B ONNX DML | 1, 16 | 使用 ONNX Runtime 的 DML INT4 AWQ | 72.26 |
| 模型 | 批處理大小,提示長度 | 模型變體 | 令牌生成吞吐量 (tokens/sec) |
|---|---|---|---|
| Phi-3 Small 8k | |||
| Phi-3 Small 8K 7B ONNX CUDA | 1, 16 | 使用 ONNX Runtime 的 FP16 CUDA GPU | 74.62 |
| Phi-3 Small 8K 7B ONNX CUDA | 16, 64 | 使用 ONNX Runtime 的 FP16 CUDA GPU | 1036.93 |
| Phi-3 Small 8K 7B ONNX CUDA | 1, 16 | 使用 ONNX Runtime 的 INT4 RTN CUDA GPU | 140.68 |
| Phi-3 Small 8K 7B ONNX CUDA | 16, 64 | 使用 ONNX Runtime 的 INT4 RTN CUDA GPU | 582.07 |
| Phi-3 Small 128k | |||
| Phi-3 Small 128K 7B ONNX CUDA | 1, 16 | 使用 ONNX Runtime 的 FP16 CUDA GPU | 68.26 |
| Phi-3 Small 128K 7B ONNX CUDA | 16, 64 | 使用 ONNX Runtime 的 FP16 CUDA GPU | 577.41 |
| Phi-3 Small 128K 7B ONNX CUDA | 1, 16 | 使用 ONNX Runtime 的 INT4 RTN CUDA GPU | 73.60 |
| Phi-3 Small 128K 7B ONNX CUDA | 16, 64 | 使用 ONNX Runtime 的 INT4 RTN CUDA GPU | 1008.35 |
裝置
- CUDA: A100 GPU, SKU: Standard_ND96amsr_A100_v4
- DML: Nvidia GeForce RTX 4080 (專用記憶體 16GB/共享記憶體 24GB)
- CPU: Intel(R) Core(TM) i9-10920X CPU @ 3.50GHz
軟體包
- onnxruntime-gpu: 1.18.0
立即開始
要親身體驗最佳化的 Phi-3,您現在可以使用 ONNX Runtime generate() API 說明輕鬆執行這些模型。要了解更多資訊,請在 Build 大會上參加我們的 ONNX Runtime、DML 和 Phi-3 會議!