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 合集 以获取 ONNX 模型。

我们还为支持 CUDA 的 Nvidia GPU 添加了 Phi-3 Small 模型支持,其他变体即将推出。这包括通过最新发布的 ONNX Runtime 1.18 版本中的 generate() API,对 Block Sparse 内核的支持。

ONNXRuntime 1.18 增加了多项新特性,如改进的 4bit 量化支持、提升了 CPU 上 MultiheadAttention 的性能,以及增强了 ONNX Runtime generate() API,从而实现更轻松、高效的跨设备运行。

我们很高兴地分享,全新的 Web 部署版优化 ONNX Phi-3-mini 现已可用。您可以在浏览器中直接运行 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 倍。以下是不同变体的 Token 生成吞吐量(Tokens/秒)。

模型 批量大小 (Batch Size), 提示长度 (Prompt Length) 模型变体 Token 生成吞吐量 (tokens/秒)
Phi-3 Medium 4K
Phi-3 Medium 4K 14B ONNX CUDA 1, 16 FP16 CUDA GPU (使用 ONNX Runtime) 47.32
Phi-3 Medium 4K 14B ONNX CUDA 16, 64 FP16 CUDA GPU (使用 ONNX Runtime) 698.22
Phi-3 Medium 4K 14B ONNX CUDA 1, 16 INT4 RTN CUDA GPU (使用 ONNX Runtime) 115.68
Phi-3 Medium 4K 14B ONNX CUDA 16, 64 INT4 RTN CUDA GPU (使用 ONNX Runtime) 339.45
Phi-3 Medium 4K 14B ONNX DML 1, 16 DML INT4 AWQ (使用 ONNX Runtime) 72.39
Phi-3 Medium 4K 14B ONNX CPU 16, 64 INT4 RTN CPU (使用 ONNX Runtime) 20.77
Phi-3 Medium 128K
Phi-3 Medium 128K 14B ONNX CUDA 1, 16 FP16 CUDA GPU (使用 ONNX Runtime) 46.27
Phi-3 Medium 128K 14B ONNX CUDA 16, 64 FP16 CUDA GPU (使用 ONNX Runtime) 662.23
Phi-3 Medium 128K 14B ONNX CUDA 1, 16 INT4 RTN CUDA GPU (使用 ONNX Runtime) 108.59
Phi-3 Medium 128K 14B ONNX CUDA 16, 64 INT4 RTN CUDA GPU (使用 ONNX Runtime) 332.57
Phi-3 Medium 128K 14B ONNX DML 1, 16 DML INT4 AWQ (使用 ONNX Runtime) 72.26
模型 批量大小 (Batch Size), 提示长度 (Prompt Length) 模型变体 Token 生成吞吐量 (tokens/秒)
Phi-3 Small 8k
Phi-3 Small 8K 7B ONNX CUDA 1, 16 FP16 CUDA GPU (使用 ONNX Runtime) 74.62
Phi-3 Small 8K 7B ONNX CUDA 16, 64 FP16 CUDA GPU (使用 ONNX Runtime) 1036.93
Phi-3 Small 8K 7B ONNX CUDA 1, 16 INT4 RTN CUDA GPU (使用 ONNX Runtime) 140.68
Phi-3 Small 8K 7B ONNX CUDA 16, 64 INT4 RTN CUDA GPU (使用 ONNX Runtime) 582.07
Phi-3 Small 128k
Phi-3 Small 128K 7B ONNX CUDA 1, 16 FP16 CUDA GPU (使用 ONNX Runtime) 68.26
Phi-3 Small 128K 7B ONNX CUDA 16, 64 FP16 CUDA GPU (使用 ONNX Runtime) 577.41
Phi-3 Small 128K 7B ONNX CUDA 1, 16 INT4 RTN CUDA GPU (使用 ONNX Runtime) 73.60
Phi-3 Small 128K 7B ONNX CUDA 16, 64 INT4 RTN CUDA GPU (使用 ONNX Runtime) 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,您现在可以按照 API 说明轻松使用 ONNX Runtime generate() 运行这些模型。了解更多信息,欢迎参加 Build 大会上的 ONNX Runtime、DML 和 Phi-3 专题会议!