使用模型构建器生成模型
模型构建器大大加速了创建优化的和量化的 ONNX 模型,这些模型可以使用 ONNX Runtime generate() API 运行。
当前支持
该工具目前支持以下模型架构。
- Gemma
- LLaMA
- Mistral
- Phi
安装
模型构建器可以作为 Olive pass 使用。它也作为 onnxruntime-genai Python 包的一部分发布。您也可以下载并单独运行它。
在任何情况下,您都需要安装以下软件包。
pip install torch transformers onnx onnxruntime
从软件包安装
pip install --pre onnxruntime-genai
直接下载
curl https://raw.githubusercontent.com/microsoft/onnxruntime-genai/main/src/python/py/models/builder.py -o builder.py
用法
有关所有可用选项,请使用 -h/--help
标志。
# From wheel:
python3 -m onnxruntime_genai.models.builder --help
# From source:
python3 builder.py --help
来自 HuggingFace 的原始 PyTorch 模型
此场景适用于您的 PyTorch 模型未在本地下载(在默认 Hugging Face 缓存目录中或磁盘上的本地文件夹中)。
# From wheel:
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
# From source:
python3 builder.py -m model_name -o path_to_output_folder -p precision -e execution_provider -c cache_dir_to_save_hf_files
来自磁盘的原始 PyTorch 模型
此场景适用于您的 PyTorch 模型已在本地下载(在默认 Hugging Face 缓存目录中或磁盘上的本地文件夹中)。
# From wheel:
python3 -m onnxruntime_genai.models.builder -m model_name -o path_to_output_folder -p precision -e execution_provider -c cache_dir_where_hf_files_are_saved
# From source:
python3 builder.py -m model_name -o path_to_output_folder -p precision -e execution_provider -c cache_dir_where_hf_files_are_saved
自定义或微调的 PyTorch 模型
此场景适用于您的 PyTorch 模型已针对当前支持的模型架构之一进行了自定义或微调,并且您的模型可以在 Hugging Face 中加载。
# From wheel:
python3 -m onnxruntime_genai.models.builder -i path_to_local_folder_on_disk -o path_to_output_folder -p precision -e execution_provider
# From source:
python3 builder.py -i path_to_local_folder_on_disk -o path_to_output_folder -p precision -e execution_provider
GGUF 模型
此场景适用于您的 float16/float32 GGUF 模型已在磁盘上。
# From wheel:
python3 -m onnxruntime_genai.models.builder -m model_name -i path_to_gguf_file -o path_to_output_folder -p precision -e execution_provider -c cache_dir_for_hf_files
# From source:
python3 builder.py -m model_name -i path_to_gguf_file -o path_to_output_folder -p precision -e execution_provider -c cache_dir_for_hf_files
额外选项
此场景适用于您想要控制某些特定设置的情况。以下示例展示了如何将键值参数传递给 --extra_options
。
# From wheel:
python3 -m onnxruntime_genai.models.builder -m model_name -o path_to_output_folder -p precision -e execution_provider -c cache_dir_for_hf_files --extra_options filename=decoder.onnx
# From source:
python3 builder.py -m model_name -o path_to_output_folder -p precision -e execution_provider -c cache_dir_for_hf_files --extra_options filename=decoder.onnx
要查看通过 --extra_options
的所有可用选项,请使用上面 完整用法
部分中的 help
命令。
仅配置
此场景适用于您已经拥有优化的和/或量化的 ONNX 模型,并且您需要创建配置文件以使用 ONNX Runtime generate() API 运行的情况。
# From wheel:
python3 -m onnxruntime_genai.models.builder -m model_name -o path_to_output_folder -p precision -e execution_provider -c cache_dir_for_hf_files --extra_options config_only=true
# From source:
python3 builder.py -m model_name -o path_to_output_folder -p precision -e execution_provider -c cache_dir_for_hf_files --extra_options config_only=true
之后,请打开输出文件夹中的 genai_config.json
文件,并根据您的模型需要修改字段。您也应该将您的 ONNX 模型存储在输出文件夹中。
单元测试模型
此场景适用于您的 PyTorch 模型已在本地下载(在默认 Hugging Face 缓存目录中或磁盘上的本地文件夹中)。如果尚未在本地下载,这是一个如何下载它的示例。
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "your_model_name"
cache_dir = "cache_dir_to_save_hf_files"
model = AutoModelForCausalLM.from_pretrained(model_name, cache_dir=cache_dir)
model.save_pretrained(cache_dir)
tokenizer = AutoTokenizer.from_pretrained(model_name, cache_dir=cache_dir)
tokenizer.save_pretrained(cache_dir)
选项 1:直接使用模型构建器工具
此选项最简单,但它会将 PyTorch 模型的另一个副本下载到磁盘上,以适应隐藏层数量的变化。
# From wheel:
python3 -m onnxruntime_genai.models.builder -m model_name -o path_to_output_folder -p precision -e execution_provider --extra_options num_hidden_layers=4
# From source:
python3 builder.py -m model_name -o path_to_output_folder -p precision -e execution_provider --extra_options num_hidden_layers=4
选项 2:编辑磁盘上的 config.json 文件,然后运行模型构建器工具
- 导航到 PyTorch 模型及其相关文件保存在磁盘上的位置。
- 在
config.json
中将num_hidden_layers
修改为您期望的目标(例如 4 层)。 - 为模型构建器工具运行以下命令。
# From wheel:
python3 -m onnxruntime_genai.models.builder -m model_name -o path_to_output_folder -p precision -e execution_provider -c cache_dir_where_hf_files_are_saved
# From source:
python3 builder.py -m model_name -o path_to_output_folder -p precision -e execution_provider -c cache_dir_where_hf_files_are_saved