Phi-3 小型和中型模型现已通过 ONNX Runtime 和 DirectML 进行优化


2024年5月21日

我们之前分享过对 Phi-3 mini 的优化支持。现在,我们推出了最新发布的 Phi-3 模型的优化 ONNX 变体。新的 Phi-3-SmallPhi-3-Medium 模型在性能上超越了同等大小的语言模型,甚至比许多更大的模型表现更好。Phi-3-small 在各种语言、推理、编码和数学基准测试中击败了 GPT-3.5T。这些新模型为需要强大推理能力、有限计算资源和对延迟敏感的应用场景下的生成式 AI 应用提供了基础构建模块。

Phi-3-Medium 是一个具有 140 亿参数的语言模型。它提供了短上下文 (4K) 和长上下文 (128K) 两种变体。您现在可以在 Huggingface 上找到通过 ONNX Runtime 和 DML 优化的 Phi-3-medium-4k-instruct-onnxPhi-3-medium-128K-instruct-onnx 模型!请查看 Phi-3 Collection 以获取 ONNX 模型。

我们还增加了对适用于 CUDA NVIDIA GPU 的 Phi-3 Small 模型的支持,其他变体即将推出。我们还增加了对适用于 CUDA NVIDIA GPU 的 Phi-3 Small 模型的支持,其他变体即将推出。我们还增加了对适用于 CUDA NVIDIA GPU 的 Phi-3 Small 模型的支持,其他变体即将推出。这包括通过 ONNX Runtime generate() API 在新发布的 ONNX Runtime 1.18 版本中对 Block Sparse kernel 的支持。

ONNXRuntime 1.18 增加了新功能,例如改进的 4bit 量化支持、改进的 CPU MultiheadAttention 性能,以及 ONNX Runtime generate() API 的增强,以便更轻松高效地在各种设备上运行。

我们也很高兴分享,新的优化版 ONNX Phi-3-mini 模型现已可用于 Web 部署。您可以在浏览器中完全运行 Phi3-mini-4K!请在此处查看模型。更棒的是,我们现在更新了适用于CPU 和移动设备的优化版 ONNX,性能更佳。请不要错过这篇博客,了解如何在手机和浏览器中运行 Phi-3。

如何使用 ONNX Runtime 运行 Phi-3-Medium 和 Small 模型

您可以使用 ONNX Runtime generate() API 无缝运行这些模型。您可以在此处查看详细说明。您也可以在本地运行聊天应用

根据您的硬件,只需要一个包和模型组合。

3个简单的运行步骤

  1. 下载模型
  2. 安装 generate() API
  3. 使用 phi3-qa.py 运行模型

只需执行您硬件所需的步骤。

针对您的平台进行优化

Mapping of which model to use based on hardware

Phi-3 Small 8K ONNX 模型

Phi-3 Medium 4k ONNX 模型

Phi-3 Medium 128k ONNX 模型

性能

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 专题会议!