将模型转换为ONNX格式
AI 工具包支持开放神经网络交换(ONNX)格式,用于本地运行模型。ONNX 是一个用于表示机器学习模型的开放标准,定义了一套通用的作符和一种文件格式,使模型能够在各种硬件平台上运行。
要在 AI 工具包中使用其他目录中的模型,如 Microsoft Foundry 或 Hugging Face,首先必须将其转换为 ONNX 格式。
本教程将指导你如何将Hugging Face模型转换为ONNX格式,并将其加载到AI工具包中。
搭建环境
要从Hugging Face或Microsoft Foundry转换模型,你需要使用模型构建工具。
请按照以下步骤搭建您的环境:
-
为模型构建器创建一个专用的conda环境,并安装必要的依赖关系(
onnx,火炬,onnxruntime_genai, 和变压器):conda create -n model_builder python==3.11 -y conda activate model_builder pip install onnx torch onnxruntime_genai==0.6.0 transformers注意:对于某些较新的型号,如 Phi-4-mini,您可能需要直接从 GitHub 安装最新的变换器开发版本:
pip install git+https://github.com/huggingface/transformers
Access Hugging Face 模型
有多种方式可以访问Hugging Face模型。在这个教程中,我们使用huggingface_hub以CLI为例,展示管理模型仓库。
注意:在继续之前,确保你的Python环境设置得当。
要从Hugging Face下载模型:
创建目录结构
AI 工具包从其工作目录加载 ONNX 模型:
- Windows:
%USERPROFILE%\.aitk\models - 类Unix系统(macOS):
$HOME/.aitk/models
为了确保模型正确加载,请在 AI 工具包的工作目录中创建所需的四层目录结构。例如:
mkdir C:\Users\Administrator\.aitk\models\microsoft\Phi-3.5-vision-instruct-onnx\cpu\phi3.5-cpu-int4-rtn-block-32
在这个例子中,四层目录结构为Microsoft\Phi-3.5-vision-instruct-onnx\cpu\phi3.5-cpu-int4-rtn-block-32.
四层目录结构的命名非常重要。每个目录层对应一个特定的系统参数:$publisherName\$modelName\$runtime\$displayName.该$displayName在扩展的左上角的本地模型树视图中出现。使用不同的方法显示名称为避免混淆,不同模型的数值。
将模型转换为ONNX格式
执行以下命令将模型转换为 ONNX 格式:
python -m onnxruntime_genai.models.builder -m $modelPath -p $precision -e $executionProvider -o $outputModelPath -c $cachePath --extra_options include_prompt_templates=1
常见的精度和执行提供者组合包括:FP32 CPU,第32次FP3 CUDA,第16次FP16 CUDA,第16次自由计划(FP16 DML),INT4 CPU,INT4 CUDA, 和INT4 DML.
这里有一个完整的示例命令,用于将模型转换为 ONNX 格式:
python -m onnxruntime_genai.models.builder -m C:\hfmodel\phi3 -p fp16 -e cpu -o C:\Users\Administrator\.aitk\models\microsoft\Phi-3-mini-4k-instruct\cpu\phi3-cpu-int4-rtn-block-32-acc-level-4 -c C:\temp --extra_options include_prompt_templates=1
关于精度和执行提供者的更多细节,请参考以下教程:
将模型加载到 AI 工具包中
转换后,将你的 ONNX 模型文件移到新创建的目录中。AI 工具包在激活时会自动加载该目录中的 ONNX 模型。
你可以在我的模型视图。要使用模型,请双击其名称或打开工具 > 游乐场并从下拉列表中选择模型开始与其交互。
注意:AI 工具包不支持直接手动删除新增的模型。要移除模型,请手动删除其目录。
支持的转换模型
下表列出了AI工具包中支持转换为ONNX格式的模型:
| 支持矩阵 | 现已支持中 | 开发中 | 在路线图上 |
|---|---|---|---|
| 模型架构 | 深搜,杰玛,羊驼,密斯特拉尔,Phi(语言+视觉),Qwen,尼莫特隆,花岗岩,AMD OLMo |
低语 |
稳定扩散 |