使用模型生成器生成模型
模型生成器極大地加速了建立最佳化的、量化的 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 檔案,然後執行模型生成器工具
- 導航到 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