Chapter 40
使用 onnxruntime 的生成式 AI 扩展进行 Phi 系列量化
使用 onnxruntime 的生成式 AI 扩展进行 Phi 系列量化
什么是 onnxruntime 的生成式 AI 扩展
该扩展帮助您使用 ONNX Runtime 运行生成式 AI(https://github.com/microsoft/onnxruntime-genai )。它为 ONNX 模型提供生成式 AI 循环,包括使用 ONNX Runtime 进行推理、logits 处理、搜索和采样,以及 KV 缓存管理。开发者可以调用高级的 generate() 方法,或者在循环中每次生成一个 token,选择性地在循环内更新生成参数。它支持贪婪/光束搜索和 TopP、TopK 采样来生成 token 序列,同时内置了重复惩罚等 logits 处理。您也可以轻松添加自定义评分。
在应用层,您可以使用 onnxruntime 的生成式 AI 扩展用 C++/C#/Python 构建应用程序;在模型层,可用于合并微调后的模型及其相关的量化部署工作。
使用 onnxruntime 的生成式 AI 扩展量化 Phi-3.5
支持的模型
onnxruntime 的生成式 AI 扩展支持 Microsoft Phi、Google Gemma、Mistral、Meta LLaMA 的量化转换。
onnxruntime 生成式 AI 扩展中的模型构建器
模型构建器大幅加速了优化和量化 ONNX 模型的创建,这些模型可通过 ONNX Runtime 的 generate() API 运行。
利用模型构建器,您可以将模型量化为 INT4、INT8、FP16、FP32,并结合 CPU、CUDA、DirectML、Mobile 等不同硬件加速方式。
使用模型构建器需要安装
pip install torch transformers onnx onnxruntime
pip install --pre onnxruntime-genai安装完成后,您可以通过终端运行模型构建器脚本,执行模型格式和量化转换。
python3 -m onnxruntime_genai.models.builder -m model_name -o path_to_output_folder -p precision -e execution_provider -c cache_dir_to_save_hf_files了解相关参数
-
model_name 这是 Hugging Face 上的模型名称,如 microsoft/Phi-3.5-mini-instruct、microsoft/Phi-3.5-vision-instruct 等,也可以是您存储模型的路径
-
path_to_output_folder 量化转换后的保存路径
-
execution_provider 不同硬件加速支持,如 cpu、cuda、DirectML
-
cache_dir_to_save_hf_files 我们从 Hugging Face 下载模型并本地缓存的位置
注意: 虽然 onnxruntime 的生成式 AI 扩展处于预览状态,但已经集成到 Microsoft Olive,您也可以通过 Microsoft Olive 调用生成式 AI 扩展的模型构建器功能。
如何使用模型构建器量化 Phi-3.5
模型构建器现支持 Phi-3.5 Instruct 和 Phi-3.5-Vision 的 ONNX 模型量化
Phi-3.5-Instruct
CPU 加速的 INT4 量化转换
python3 -m onnxruntime_genai.models.builder -m microsoft/Phi-3.5-mini-instruct -o ./onnx-cpu -p int4 -e cpu -c ./Phi-3.5-mini-instructCUDA 加速的 INT4 量化转换
python3 -m onnxruntime_genai.models.builder -m microsoft/Phi-3.5-mini-instruct -o ./onnx-cpu -p int4 -e cuda -c ./Phi-3.5-mini-instruct
python3 -m onnxruntime_genai.models.builder -m microsoft/Phi-3.5-mini-instruct -o ./onnx-cpu -p int4 -e cuda -c ./Phi-3.5-mini-instructPhi-3.5-Vision
Phi-3.5-vision-instruct-onnx-cpu-fp32
- 在终端设置环境
mkdir models
cd models -
下载 microsoft/Phi-3.5-vision-instruct 至 models 文件夹 https://huggingface.co/microsoft/Phi-3.5-vision-instruct
-
请下载这些文件到您的 Phi-3.5-vision-instruct 文件夹
-
https://huggingface.co/lokinfey/Phi-3.5-vision-instruct-onnx-cpu/resolve/main/onnx/config.json
-
https://huggingface.co/lokinfey/Phi-3.5-vision-instruct-onnx-cpu/blob/main/onnx/modeling_phi3_v.py
-
下载该文件到 models 文件夹 https://huggingface.co/lokinfey/Phi-3.5-vision-instruct-onnx-cpu/blob/main/onnx/build.py
-
进入终端
支持 FP32 的 ONNX 转换
python build.py -i .\Your Phi-3.5-vision-instruct Path\ -o .\vision-cpu-fp32 -p f32 -e cpu注意:
-
模型构建器目前支持 Phi-3.5-Instruct 和 Phi-3.5-Vision 的转换,但不支持 Phi-3.5-MoE
-
想使用 ONNX 量化模型,可以通过 onnxruntime 的生成式 AI 扩展 SDK 使用
-
我们需要更负责任的 AI,因此在模型量化转换后建议进行更有效的结果测试
-
通过量化 CPU INT4 模型,我们可以将其部署到边缘设备,这有更好的应用场景,因此我们已完成了 Phi-3.5-Instruct 的 INT4 量化工作
资源
-
了解更多关于 onnxruntime 的生成式 AI 扩展 https://onnxruntime.ai/docs/genai/
-
onnxruntime 生成式 AI 扩展 GitHub 仓库 https://github.com/microsoft/onnxruntime-genai
免责声明: 本文件由 AI 翻译服务 Co-op Translator 翻译完成。尽管我们力求准确,但请注意,自动翻译可能包含错误或不准确之处。原始语言版文件应视为权威来源。对于重要信息,建议使用专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。
