使用模型构建器生成模型

模型构建器大大加速了创建优化的和量化的 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 文件,然后运行模型构建器工具

  1. 导航到 PyTorch 模型及其相关文件保存在磁盘上的位置。
  2. config.json 中将 num_hidden_layers 修改为您期望的目标(例如 4 层)。
  3. 为模型构建器工具运行以下命令。
# 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