オンデバイス推論用に PyTorch 生成 AI モデルを変換する

LiteRT Torch Generative API は、変換ベースの PyTorch モデルを LiteRT/LiteRT-LM 形式で作成および変換するために設計された高性能ライブラリです。これにより、デベロッパーは生成 AI モデル、特に大規模言語モデル(LLM)をオンデバイスのテキストと画像の生成にシームレスに簡単にデプロイできます。

Torch Generative API は、CPU、GPU、NPU のモデル変換をサポートしています。Torch Generative API と LiteRT-LM を組み合わせることで、生成モデルを完全にオンデバイスで実行する、応答性の高いプライバシー重視のアプリを構築できます。

Hugging Face Transformer Library から変換する

LiteRT Torch Hugging Face Export 拡張機能は、Hugging Face Transformers ライブラリから LiteRT-LM 形式に生成 AI モデルを直接変換するための合理化されたパスを提供します。カスタムモデルを構築して最適化するための PyTorch ビルディング ブロックを提供する LiteRT Torch Generative API と比較して、このツールは、重みのダウンロード、PyTorch モデル アーキテクチャの変換、グラフの最適化や量子化などの最適化手法の適用といった複雑な処理を単一のワークフローで実行します。LiteRT-LM ランタイムを使用して CPU、GPU、NPU でのオンデバイス推論用に最適化された .litertlm ファイルが出力されます。

前提条件

エクスポート拡張機能を使用する前に、次の設定が完了していることを確認してください。

  • 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 環境は、Hugging Face Hub から直接読み込む場合に設定されます。export_hf ツールは、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

基本的な使用法

export_hf は、コマンドラインまたは Python API を使用して使用できます。このツールは、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 ツールは、次の Transformers モデル アーキテクチャを検証します。これは、config.jsonmodel_type フィールドを確認することで検証できます。

  • Gemma 3Gemma3ForCausalLM
  • Gemma 3nGemma3nForCausalLM
  • Gemma 4Gemma4ForCausalLM
  • LlamaLlamaForCausalLM
  • MistralMistralForCausalLM
  • Qwen 2/2.5Qwen2ForCausalLM
  • Qwen 3Qwen3ForCausalLM
  • SmolLM 3SmolLM3ForCausalLM

詳細設定

拡張機能フラグで利用可能な詳細オプションを試すこともできますが、ここでは一般的なノブをいくつか紹介します。

ビジョン言語モデル

サポートされているモデルでは、--task=image_text_to_text--export_vision_encoder を設定して、ビジョン エンコーダ モデルを読み込んでエクスポートできます。

サポートされているアーキテクチャ:

  • Gemma 3Gemma3ForConditionalGeneration
  • Gemma 4Gemma4ForConditionalGeneration

量子化の構成

生成 AI モデルは、最適化を行わないとエッジ デバイスで効率的に実行するには大きすぎる場合がよくあります。デフォルトでは、export_hfAI 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 Runtime:

前提条件: SDK のセットアップ手順とサポートされているデバイスについては、LiteRT Qualcomm 統合をご覧ください。

例:

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:

前提条件: SDK のセットアップ手順とサポートされているデバイスについては、LiteRT MediaTek 統合をご覧ください。

例:

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

前提条件: SDK の設定手順とサポートされているデバイスについては、LiteRT Intel OpenVINO 統合をご覧ください。

例:

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 リポジトリをご覧ください。