本仓库托管了 Phi-3-small-8k-instruct 的优化版本,旨在通过 ONNX Runtime 为配备 NVIDIA GPU 的机器加速推理过程。
Phi-3 Small 是一个拥有 70 亿参数的轻量级、最先进的开放模型,它使用 Phi-3 数据集进行训练,该数据集既包含合成数据,也包含经过筛选的公开网站数据,重点关注高质量和推理密集型特性。该模型属于 Phi-3 系列,其中小型版本有两个变体:8K 和 128K,这代表了它们支持的上下文长度(以 tokens 为单位)。
基础模型经过了后训练过程,其中包括监督微调以及针对指令遵循和安全措施的直接偏好优化。在针对常识、语言理解、数学、代码、长上下文和逻辑推理的基准测试中,Phi-3-Small-8K-Instruct 在同尺寸及更大尺寸的模型中展现了强大且最先进的性能。
Phi-3 Small 模型的优化变体在此以 ONNX 格式发布,并可通过 ONNX Runtime 在 GPU 上运行,适用于多种设备,包括服务器平台、Windows 和 Linux。
以下是我们添加的一些优化配置:
注意:如果磁盘空间有限,您可以使用 Hugging Face CLI 下载子文件夹,而不必下载所有模型。对于较大的批处理大小,建议使用 FP16 模型;而 INT4 模型则针对较小的批处理大小优化了性能。
示例:
# Download just the FP16 model
$ huggingface-cli download microsoft/Phi-3-small-8k-instruct-onnx-cuda --include cuda-fp16/* --local-dir . --local-dir-use-symlinks False为了在各种设备、平台和EP后端上支持Phi-3模型,我们引入了一个新的API,用于封装生成式AI推理的多个方面。此API使您能够轻松地将LLM直接集成到应用程序中。要使用ONNX运行这些模型的早期版本,请按照此处的步骤操作。您也可以通过此聊天应用测试模型。
ONNX模型已在以下环境中测试:
所需最低配置:
在所有批量大小和提示长度组合下,Phi-3 Small-8K-Instruct在ONNX Runtime上的性能均优于PyTorch。对于FP16 CUDA,ORT比PyTorch快高达4倍;而对于INT4 CUDA,ORT比PyTorch快高达10.9倍。
下表显示了在1块A100 80GB GPU,SKU:Standard_ND96amsr_A100_v4上测量的FP16和INT4精度在CUDA上生成的前256个令牌的平均吞吐量(tps)。
| 批量大小,提示长度 | ORT FP16 CUDA | PyTorch Eager FP16 CUDA | ORT/PyTorch 加速比 |
|---|---|---|---|
| 1, 16 | 74.62 | 16.81 | 4.44 |
| 4, 16 | 290.36 | 65.56 | 4.43 |
| 16,16 | 1036.93 | 267.33 | 3.88 |
| 批量大小,提示长度 | ORT INT4 CUDA | PyTorch Eager INT4 CUDA | ORT/PyTorch 加速比 |
|---|---|---|---|
| 1, 16 | 140.68 | 12.93 | 10.88 |
| 4, 16 | 152.90 | 44.04 | 3.47 |
| 16,16 | 582.07 | 160.57 | 3.62 |
| Pip 包名称 | 版本 |
|---|---|
| torch | 2.3.0 |
| triton | 2.3.0 |
| onnxruntime-gpu | 1.18.0 |
| transformers | 4.40.2 |
| bitsandbytes | 0.43.1 |
parinitarahi, kvaishnavi, natke
Kunal Vaishnavi, Sunghoon Choi, Yufeng Li, Tianlei Wu, Sheetal Arun Kadam, Rui Ren, Baiju Meswani, Natalie Kershaw, Parinita Rahi