ONNX Runtime 1.17:CUDA 12 支持、Phi-2 优化、WebGPU 及更多新功能!
作者
Sophie Schoenmeyer, Parinita Rahi, Kshama Pawar, Caroline Zhu, Chad Pralle, Emma Ning, Natalie Kershaw, Jian Chen2024 年 2 月 28 日
最近,我们发布了 ONNX Runtime 1.17 版本,其中包含大量新功能,旨在进一步简化在各种平台上更快地推理和训练机器学习模型的过程。此版本不仅改进了我们现有的一些功能,还引入了令人兴奋的新功能,例如 Phi-2 优化、使用设备端训练在浏览器中训练模型、带有 WebGPU 的 ONNX Runtime Web 等。
有关新功能的完整列表以及各种资源,请查看 GitHub 上的 1.17 版本 和我们最近的 1.17.1 补丁版本。
模型优化
ONNX Runtime (ORT) 1.17 版本为多种模型提供了改进的推理性能,例如 Phi-2、Mistral、CodeLlama、Google 的 Gemma、SDXL-Turbo 等,这得益于使用最先进的融合和内核优化,并包括对 float16 和 int4 量化的支持。此版本中添加的特定 ORT 优化包括 Attention、Multi-Head Attention、Grouped-Query Attention 和 Rotary Embedding ORT 内核更改。在提示和令牌生成吞吐量方面,ORT 优于 PyTorch、DeepSpeed 和 Llama.cpp 等其他框架,速度提升高达 20 倍。特别是,我们观察到 Phi-2 的性能提升高达 20.5 倍,Orca-2 为 16.0 倍,Gemma 为 19.8 倍(有关每种模型的更多详细信息,请参阅下面链接的博客)。由于特殊的 GemV 内核实现,ONNX Runtime 与 int4 量化在批量大小为 1 时表现最佳。总体而言,ONNX Runtime 在多种批量大小和提示长度上都表现出显着的性能提升。
ONNX Runtime 在训练 LLM 方面也显示出显着优势,并且这些优势通常随着批量大小的增加而增加。例如,在 2 个 A100 GPU 上使用 LoRA 进行 Phi-2 训练时,ORT 比 PyTorch Eager 模式快 1.2 倍,比 torch.compile 快 1.5 倍。ORT 在其他 LLM(如 Llama、Mistral 和 Orca-2)以及 LoRA 或 QLoRA 的组合中也显示出优势。
要了解有关使用 ONNX Runtime 1.17 提高生成式 AI 模型性能的更多信息,请查看我们在 ONNX Runtime 博客上的最新文章:使用 ONNX Runtime 加速 Phi-2、CodeLlama、Gemma 和其他 Gen AI 模型。




浏览器内训练
设备端训练允许您使用设备数据来改善开发者应用程序的用户体验。它支持联邦学习等场景,联邦学习使用设备上的数据训练全局模型。在 1.17 版本中,ORT 现在将支持使用设备端训练在浏览器中训练机器学习模型。
要了解有关使用设备端训练在浏览器中训练模型的更多信息,请查看 Microsoft Open Source Blog 上的这篇最新文章:设备端训练:在浏览器中训练模型。

DirectML NPU 支持
随着 DirectML 1.13.1 和 ONNX Runtime 1.17 的发布,Windows 机器学习平台 API DirectML 现在提供神经处理单元 (NPU) 加速的开发者预览支持。此开发者预览版支持在配备 Intel® AI Boost 的 Intel® Core™ Ultra 处理器的全新 Windows 11 设备上运行部分模型。
要了解有关 DirectML 中 NPU 支持的更多信息,请查看 Windows Developer Blog 上的这篇最新文章:DirectML 中引入神经处理器单元 (NPU) 支持(开发者预览版)。
WebGPU 与 ONNX Runtime Web
WebGPU 使 Web 开发者能够利用 GPU 硬件进行高性能计算。ONNX Runtime 1.17 版本在 ONNX Runtime Web 中正式发布了 WebGPU 执行提供程序,从而允许复杂的模型完全且高效地在浏览器中运行(请参阅 WebGPU 浏览器兼容性列表)。这项进步,通过 SD-Turbo 等模型的有效执行得到证明,在基于 CPU 的浏览器内机器学习在满足性能标准方面面临挑战的场景中,开启了新的可能性。
要了解有关 ONNX Runtime Web 如何使用 WebGPU 进一步加速浏览器内机器学习的更多信息,请查看 Microsoft Open Source Blog 上的这篇最新文章:ONNX Runtime Web 使用 WebGPU 在浏览器中释放生成式 AI 的潜力。
YOLOv8 姿势估计场景与 ONNX Runtime Mobile
此版本增加了对运行 YOLOv8 模型进行姿势估计的支持。姿势估计涉及处理图像中检测到的对象,并识别图像中人物的位置和方向。核心 YOLOv8 模型返回一组关键点,代表检测到的人体特定部位,例如关节和其他独特特征。在 ONNX 模型中包含预处理和后处理,使开发者可以直接提供输入图像,无论是常见的图像格式还是原始 RGB 值,并输出带有边界框和关键点的图像。
要了解有关如何在移动设备上构建和运行 ONNX 模型,并使用内置的预处理和后处理进行对象检测和姿势估计的更多信息,请查看我们在 ONNX Runtime 文档中的最新教程:使用 YOLOv8 进行对象检测和姿势估计。

CUDA 12 软件包
作为 1.17 版本的一部分,ONNX Runtime 现在通过为 Python 和 NuGet 引入 CUDA 12 软件包,确保跨多个 Nvidia CUDA 执行提供程序版本的兼容性。借助这种更灵活的方法,用户现在可以同时访问 CUDA 11 和 CUDA 12,从而更无缝地集成尖端的硬件加速技术。
要为 ONNX Runtime GPU 安装 CUDA 12,请参阅 ONNX Runtime 文档中的说明:安装 ONNX Runtime GPU (CUDA 12.X)。