PyTorch-Modelle für generative KI für die On-Device-Inferenz konvertieren

Die LiteRT Torch Generative API ist eine leistungsstarke Bibliothek, die für das Erstellen und Konvertieren von Transformer-basierten PyTorch-Modellen in das LiteRT-/LiteRT-LM-Format entwickelt wurde. So können Entwickler generative KI-Modelle, insbesondere Large Language Models (LLMs), ganz einfach für die On-Device-Text- und ‑Bildgenerierung bereitstellen.

Die Torch Generative API unterstützt die Modellkonvertierung für CPU, GPU und NPU. Durch die Kombination der Torch Generative API mit LiteRT-LM können Sie reaktionsschnelle, datenschutzorientierte Anwendungen entwickeln, die generative Modelle vollständig auf dem Gerät ausführen.

Aus der Hugging Face Transformer-Bibliothek konvertieren

Die LiteRT Torch-Erweiterung Hugging Face Export bietet einen optimierten Weg, um generative KI-Modelle direkt aus der Hugging Face Transformers Library in das LiteRT-LM-Format zu konvertieren. Im Vergleich zu den generativen LiteRT-Torch-APIs, die Ihnen Pytorch-Bausteine zum Erstellen und Optimieren benutzerdefinierter Modelle zur Verfügung stellen, werden mit diesem Tool die komplexen Aufgaben des Herunterladens von Gewichten, des Übersetzens von PyTorch-Modellarchitekturen und des Anwendens von Optimierungstechniken wie Graphoptimierungen und Quantisierung in einem einzigen Workflow erledigt. Es wird eine .litertlm-Datei ausgegeben, die für die On-Device-Inferenz auf CPU, GPU und NPU mit der LiteRT-LM-Laufzeit optimiert ist.

Vorbereitung

Bevor Sie die Export-Erweiterung verwenden, müssen Sie Folgendes einrichten:

  • Installieren Sie das LiteRT Torch Python-Paket. Die Hugging Face Export-Erweiterung ist direkt in das litert-torch-Paket integriert.
  • Optional: Installieren Sie für die NPU-Kompilierung die LiteRT NPU SDK-Erweiterungen mit pip install ai-edge-litert[npu-sdk]. Weitere Informationen finden Sie im Colab-Notebook zur AOT-Kompilierung für LiteRT-NPUs.
  • Die Hugging Face-Umgebung wird eingerichtet, wenn Sie direkt aus dem Hugging Face Hub laden möchten. Das Tool „export_hf“ verwendet die standardmäßigen Authentifizierungsmechanismen von Transformers wie HF_TOKEN oder die CLI. Beispiel:

Wenn Sie Modelle mit eingeschränktem Zugriff (z. B. Gemma oder Llama) herunterladen möchten, müssen Sie sich mit Hugging Face authentifizieren. Verwenden Sie dazu entweder die CLI oder eine Umgebungsvariable:

# 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

Grundlegende Nutzung

Sie können export_hf über die Befehlszeile oder die Python API verwenden. Das Tool lädt das Modell automatisch von Hugging Face herunter oder lädt das Modell vom angegebenen lokalen Pfad, führt einen Trace aus, wendet Standardoptimierungen an und konvertiert es in eine .litertlm-Datei, die mit CPU- und GPU-Inferenz kompatibel ist.

Befehlszeile

Führen Sie den Befehl litert-torch export_hf aus. Sie müssen die Hugging Face-Modell-ID und das ausgewählte Ausgabeverzeichnis angeben.

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

Wenn Sie ein lokales oder benutzerdefiniertes Modell exportieren möchten, können Sie auch den Pfad zum Safetensor-Checkpoint übergeben:

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

Python API

Für die Einbindung in Python-Scripts oder ‑Notebooks importieren Sie das Modul export aus litert_torch.generative.export_hf.

from litert_torch.generative.export_hf import export

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

On-Device-Bereitstellung mit LiteRT-LM

Nachdem Sie Ihr Modell erfolgreich in eine .litertlm-Datei exportiert haben, können Sie es direkt auf dem Gerät mit LiteRT-LM bereitstellen, um es sowohl auf der CPU als auch auf der GPU mit hoher Leistung auszuführen. Weitere Informationen zur Verwendung der LiteRT-LM API Informationen zur NPU-Beschleunigung finden Sie im Leitfaden zur AOT-Kompilierung für NPUs.

Unterstützte Architekturen

Mit dem export_hf-Tool werden die folgenden Transformers-Modellarchitekturen überprüft. Sie können dies überprüfen, indem Sie das Feld model_type in config.json prüfen.

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

Erweiterte Einstellungen

Sie können sich zwar die erweiterten Optionen ansehen, die in den Erweiterungs-Flags verfügbar sind, aber hier sind einige gängige Einstellungen, die Sie ausprobieren können.

Vision Language Models

Bei unterstützten Modellen können Sie --task=image_text_to_text und --export_vision_encoder festlegen, um das Vision-Encoder-Modell zu laden und zu exportieren.

Unterstützte Architekturen:

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

Quantisierungskonfiguration

Generative KI-Modelle sind oft zu groß, um ohne Optimierung effizient auf Edge-Geräten ausgeführt zu werden. Standardmäßig wendet export_hf das dynamic_wi8_afp32-Quantisierungsrezept mit AI Edge Quantizer an. Dabei werden Gewichte auf INT8 pro Channel quantisiert, während Aktivierungen in FP32 bleiben.

Sie können dieses Standardverhalten mit dem Flag --quantization_recipe (oder dem Parameter quantization_recipe in Python) überschreiben. Sie können den Namen eines integrierten Rezeptes aus AI Edge Quantizer angeben oder den Pfad zu einem benutzerdefinierten JSON-Rezept.

Beispiel:

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-Vorlagen überschreiben

Die Jinja-Vorlage, die mit dem Transformer-Modell geliefert wird, ist möglicherweise nicht mit LiteRT-LM (z. B. Gemma4-Modellen) kompatibel. Sie können das Flag use_jinja_template auf False setzen oder die Option jinja_chat_template_override verwenden, um die Vorlage zu überschreiben.

Beispiel:

 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

AOT-Kompilierung für NPU

Neben CPU und GPU können Sie beim Exportieren Ihrer Modelle auch unterstützte NPU-Beschleuniger als Ziel angeben, indem Sie die NPU-spezifischen Optionen angeben.

Google Tensor

Voraussetzungen: Folgen Sie der Anleitung auf der Seite Google Tensor SDK, um die Entwicklungsumgebung einzurichten.

Wenn Sie LLMs exportieren möchten, die auf Google Tensor-TPUs ausgerichtet sind, folgen Sie dem Beispiel für die zusätzlichen Flags, die für die TPU-Kompilierung erforderlich sind.

Beispiel:

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}'

Weitere Informationen finden Sie unter Modelle mit dem Google Tensor SDK kompilieren.

Qualcomm AI Runtime:

Voraussetzungen: Folgen Sie der Anleitung unter LiteRT Qualcomm Integration, um das SDK einzurichten und Informationen zu unterstützten Geräten zu erhalten.

Beispiel:

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:

Voraussetzungen: Folgen Sie der Anleitung unter LiteRT MediaTek Integration, um das SDK einzurichten und Informationen zu unterstützten Geräten zu erhalten.

Beispiel:

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

Voraussetzungen: Folgen Sie der Anleitung unter LiteRT Intel OpenVINO Integration für die Einrichtung des SDK und unterstützte Geräte.

Beispiel:

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

Inhalte mit der LiteRT Torch Generative API neu erstellen und konvertieren

Die LiteRT Torch Generative API bietet auch Bausteine zum Erstellen und Optimieren benutzerdefinierter PyTorch-Modelle, einschließlich, aber nicht beschränkt auf Normalisierungsschichten, Attentions und andere grundlegende Module. Wenn Ihr Modell nicht von der LiteRT Torch Hugging Face Export-Erweiterung abgedeckt wird, können Sie eigene Modelle erstellen, die mit LiteRT und LiteRT-LM kompatibel sind.

Es gibt Beispiele für Modelle, darunter LLMs, Diffusionsmodelle und ASR-Modelle. Sehen Sie sich die Beispiele an und stellen Sie Ihr eigenes Modell bereit.

Weitere Informationen finden Sie im GitHub-Repository für die Generative Torch API.