# **使用 onnxruntime 的生成式 AI 扩展进行 Phi 系列量化** ## **什么是 onnxruntime 的生成式 AI 扩展** 该扩展帮助您使用 ONNX Runtime 运行生成式 AI([https://github.com/microsoft/onnxruntime-genai](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 等不同硬件加速方式。 使用模型构建器需要安装 ```bash pip install torch transformers onnx onnxruntime pip install --pre onnxruntime-genai ``` 安装完成后,您可以通过终端运行模型构建器脚本,执行模型格式和量化转换。 ```bash 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 ``` 了解相关参数 1. **model_name** 这是 Hugging Face 上的模型名称,如 microsoft/Phi-3.5-mini-instruct、microsoft/Phi-3.5-vision-instruct 等,也可以是您存储模型的路径 2. **path_to_output_folder** 量化转换后的保存路径 3. **execution_provider** 不同硬件加速支持,如 cpu、cuda、DirectML 4. **cache_dir_to_save_hf_files** 我们从 Hugging Face 下载模型并本地缓存的位置 ***注意:*** ## **如何使用模型构建器量化 Phi-3.5** 模型构建器现支持 Phi-3.5 Instruct 和 Phi-3.5-Vision 的 ONNX 模型量化 ### **Phi-3.5-Instruct** **CPU 加速的 INT4 量化转换** ```bash 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-instruct ``` **CUDA 加速的 INT4 量化转换** ```bash 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 ``` ```python 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 ``` ### **Phi-3.5-Vision** **Phi-3.5-vision-instruct-onnx-cpu-fp32** 1. 在终端设置环境 ```bash mkdir models cd models ``` 2. 下载 microsoft/Phi-3.5-vision-instruct 至 models 文件夹 [https://huggingface.co/microsoft/Phi-3.5-vision-instruct](https://huggingface.co/microsoft/Phi-3.5-vision-instruct) 3. 请下载这些文件到您的 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/resolve/main/onnx/config.json) - [https://huggingface.co/lokinfey/Phi-3.5-vision-instruct-onnx-cpu/blob/main/onnx/image_embedding_phi3_v_for_onnx.py](https://huggingface.co/lokinfey/Phi-3.5-vision-instruct-onnx-cpu/blob/main/onnx/image_embedding_phi3_v_for_onnx.py) - [https://huggingface.co/lokinfey/Phi-3.5-vision-instruct-onnx-cpu/blob/main/onnx/modeling_phi3_v.py](https://huggingface.co/lokinfey/Phi-3.5-vision-instruct-onnx-cpu/blob/main/onnx/modeling_phi3_v.py) 4. 下载该文件到 models 文件夹 [https://huggingface.co/lokinfey/Phi-3.5-vision-instruct-onnx-cpu/blob/main/onnx/build.py](https://huggingface.co/lokinfey/Phi-3.5-vision-instruct-onnx-cpu/blob/main/onnx/build.py) 5. 进入终端 支持 FP32 的 ONNX 转换 ```bash python build.py -i .\Your Phi-3.5-vision-instruct Path\ -o .\vision-cpu-fp32 -p f32 -e cpu ``` ### **注意:** 1. 模型构建器目前支持 Phi-3.5-Instruct 和 Phi-3.5-Vision 的转换,但不支持 Phi-3.5-MoE 2. 想使用 ONNX 量化模型,可以通过 onnxruntime 的生成式 AI 扩展 SDK 使用 3. 我们需要更负责任的 AI,因此在模型量化转换后建议进行更有效的结果测试 4. 通过量化 CPU INT4 模型,我们可以将其部署到边缘设备,这有更好的应用场景,因此我们已完成了 Phi-3.5-Instruct 的 INT4 量化工作 ## 资源 1. 了解更多关于 onnxruntime 的生成式 AI 扩展 [https://onnxruntime.ai/docs/genai/](https://onnxruntime.ai/docs/genai/) 2. onnxruntime 生成式 AI 扩展 GitHub 仓库 [https://github.com/microsoft/onnxruntime-genai](https://github.com/microsoft/onnxruntime-genai) --- **免责声明**: 本文件由 AI 翻译服务 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻译完成。尽管我们力求准确,但请注意,自动翻译可能包含错误或不准确之处。原始语言版文件应视为权威来源。对于重要信息,建议使用专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。