使用模型生成器生成模型

模型生成器極大地加速了建立最佳化的、量化的 ONNX 模型,這些模型可透過 ONNX Runtime 的 generate() API 執行。

當前支援

該工具目前支援以下模型架構。

  • Gemma
  • LLaMA
  • Mistral
  • Phi

安裝

模型生成器作為 Olive 的一個通道提供。它也作為 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