轉換 PyTorch 生成式 AI 模型,用於裝置端推論

LiteRT Torch Generative API 是一套高效能程式庫,專為編寫及轉換以 Transformer 為基礎的 PyTorch 模型而設計,可將模型轉換為 LiteRT/LiteRT-LM 格式。開發人員可輕鬆部署生成式 AI 模型,特別是大型語言模型 (LLM),在裝置端生成文字和圖片。

Torch Generative API 支援 CPU、GPU 和 NPU 的模型轉換。 將 Torch Generative API 與 LiteRT-LM 配對,即可建構以隱私權為重心的回應式應用程式,完全在裝置端執行生成模型。

從 Hugging Face Transformer 程式庫轉換

LiteRT Torch Hugging Face Export 擴充功能提供簡化的路徑,可直接將Hugging Face Transformers Library 中的生成式 AI 模型轉換為 LiteRT-LM 格式。相較於 LiteRT Torch Generative API,這項工具可讓您使用 PyTorch 建構區塊建構及最佳化自訂模型,並在單一工作流程中處理下載權重、轉換 PyTorch 模型架構,以及套用圖形最佳化和量化等最佳化技術的複雜性。這項工具會輸出 .litertlm 檔案,並使用 LiteRT-LM 執行階段,針對 CPU、GPU 和 NPU 上的裝置端推論進行最佳化。

必要條件

使用匯出擴充功能前,請確認您已完成下列設定:

  • 安裝 LiteRT Torch Python 套件。Hugging Face Export 擴充功能直接建構在 litert-torch 套件中。
  • (選用) 如要進行 NPU 編譯,請使用 pip install ai-edge-litert[npu-sdk] 安裝 LiteRT NPU SDK 擴充功能。如要瞭解詳情,請參閱 LiteRT NPU AOT 編譯 Colab
  • 如果您打算直接從 Hugging Face Hub 載入,請設定 Hugging Face 環境。export_hf 工具會使用標準的 Transformers 驗證機制,例如 HF_TOKEN 或 CLI。詳見範例如下:

如要下載封閉式模型 (例如 Gemma 或 Llama),必須使用 CLI 或環境變數向 Hugging Face 進行驗證:

# Set your Hugging Face token as an environment variable
export HF_TOKEN="your_hugging_face_token"

# Or use the Hugging Face CLI login
hf auth login

基本用法

您可以使用指令列或 Python API 執行 export_hf。這項工具會自動從 Hugging Face 下載模型,或從提供的本機路徑載入模型、追蹤模型、套用預設最佳化設定,並將模型轉換為與 CPU 和 GPU 推論相容的 .litertlm 檔案。

指令列介面 (CLI)

使用 litert-torch export_hf 指令。您必須提供 Hugging Face 模型 ID 和所選輸出目錄。

litert-torch export_hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-it-litertlm

如要匯出本機或自訂模型,您也可以將路徑傳遞至 safetensor 檢查點:

litert-torch export_hf \
  --model=/path/to/safetensor/dir \
  --output_dir=/my_custom_litertlm

Python API

如要整合至 Python 指令碼或筆記本,請從 litert_torch.generative.export_hf 匯入 export 模組。

from litert_torch.generative.export_hf import export

export.export(
    model='google/gemma-3-270m-it',
    output_dir='/tmp/gemma3-270m-it-litertlm',
)

使用 LiteRT-LM 進行裝置端部署

成功將模型匯出為 .litertlm 檔案後,即可使用 LiteRT-LM 直接在裝置端部署模型,在 CPU 和 GPU 上以高效能執行。詳情請參閱如何使用 LiteRT-LM API。如需 NPU 加速功能,請參閱 NPU AOT 編譯指南

支援的架構

export_hf 工具會驗證下列 Transformer 模型架構。 如要驗證這點,請檢查 config.json 中的 model_type 欄位。

  • Gemma 3 (Gemma3ForCausalLM)
  • Gemma 3n (Gemma3nForCausalLM)
  • Gemma 4 (Gemma4ForCausalLM)
  • Llama (LlamaForCausalLM)
  • Mistral (MistralForCausalLM)
  • Qwen 2/2.5 (Qwen2ForCausalLM)
  • Qwen 3 (Qwen3ForCausalLM)
  • SmolLM 3 (SmolLM3ForCausalLM)

進階設定

雖然您可以探索擴充功能標記中提供的進階選項,但以下是一些常見的旋鈕,您可以嘗試使用。

視覺語言模型

對於支援的模型,您可以設定 --task=image_text_to_text--export_vision_encoder,載入及匯出視覺編碼器模型。

支援的架構:

  • Gemma 3 (Gemma3ForConditionalGeneration)
  • Gemma 4 (Gemma4ForConditionalGeneration)

量化設定

生成式 AI 模型通常過於龐大,未經最佳化就無法在邊緣裝置上有效率地執行。根據預設,export_hf 會使用 AI Edge Quantizer 套用 dynamic_wi8_afp32 量化配方,將權重量化為每個管道的 INT8,同時將啟動保留在 FP32 中。

您可以使用 --quantization_recipe 旗標 (或 Python 中的 quantization_recipe 參數) 覆寫這項預設行為。您可以提供 AI Edge Quantizer 的內建配方名稱,或指定自訂 JSON 配方的路徑。

範例:

litert-torch export_hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-it-litertlm \
  --quantization_recipe=/path/to/my/quantization_recipe.json

覆寫 Jinja 範本

Transformer 模型隨附的 Jinja 範本可能與 LiteRT-LM 不相容 (例如 Gemma4 模型),您可以將 use_jinja_template 標記設為 False,或使用 jinja_chat_template_override 選項覆寫範本。

範例:

 litert-torch export_hf \
   --model=google/gemma-4-E2B-it \
  --output_dir=/tmp/gemma4_2b_litertlm \
  --externalize_embedder \
  --jinja_chat_template_override=litert-community/gemma-4-E2B-it-litert-lm

NPU AOT 編譯

除了 CPU 和 GPU,您也可以在匯出模型時提供 NPU 專屬選項,指定支援的 NPU 加速器。

Google Tensor

必要條件:請按照 Google Tensor SDK 頁面的說明設定開發環境。

如要匯出以 Google Tensor TPU 為目標的 LLM,請按照範例操作,瞭解 TPU 編譯所需的額外標記。

範例:

litert-torch export-hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-google-tensor-g5 \
  --split_cache \
  --externalize_embedder \
  --prefill_lengths=128, \
  --cache_length=1280 \
  --quantization_recipe="weight_only_wi8_afp32"
  --aot_backend=GOOGLE \
  --aot_soc_model=Tensor_G5 \
  --aot_compilation_config_dict='{"google_tensor_enable_large_model_support": True}'

詳情請參閱「使用 Google Tensor SDK 編譯模型」。

Qualcomm AI 執行階段:

必要條件:請按照「LiteRT Qualcomm 整合」的說明設定 SDK,並瞭解支援的裝置。

範例:

litert-torch export-hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-google-tensor-g5 \
  --split_cache \
  --externalize_embedder \
  --quantization_recipe='' \
  --aot_backend=qualcomm \
  --aot_soc_model=SM8750

MediaTek NeuroPilot:

必要條件:請按照「LiteRT MediaTek 整合」的 SDK 設定說明操作,並確認支援的裝置。

範例:

litert-torch export-hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-google-tensor-g5 \
  --split_cache \
  --externalize_embedder \
  --aot_backend=mediatek \
  --aot_soc_model=MT8189

Intel OpenVINO

必要條件:請按照 LiteRT Intel OpenVINO 整合的 SDK 設定說明操作,並確認裝置是否支援這項功能。

範例:

litert-torch export-hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-google-tensor-g5 \
  --split_cache \
  --externalize_embedder \
  --aot_backend=intel_openvino \
  --aot_soc_model=PTL

使用 LiteRT Torch Generative API 重新授權及轉換

LiteRT Torch Generative API 也提供建構和最佳化自訂 PyTorch 模型的建構區塊,包括但不限於正規化層、注意力和其他基本模組。如果您的模型未涵蓋在 LiteRT Torch Hugging Face Export 擴充功能中,您可以自行建構與 LiteRT 和 LiteRT-LM 相容的模型。

模型範例包括 LLM、擴散模型和 ASR 模型。歡迎查看這些範例,並部署自己的模型。

詳情請參閱 Generative Torch API GitHub 存放區