转换 PyTorch 生成式 AI 模型以进行设备端推理

LiteRT Torch Generative API 是一个 高性能库,旨在创作基于 Transformer 的 PyTorch 模型并将其转换为 LiteRT/LiteRT-LM 格式。借助此 API,开发者可以轻松地无缝部署生成式 AI 模型,尤其是大语言模型 (LLM),以在设备上生成文本和图片。

Torch Generative API 支持 CPU、GPU 和 NPU 的模型转换。 通过将 Torch Generative API 与 LiteRT-LM 配对,您可以构建 响应迅速、注重隐私的应用,这些应用完全 在设备上运行生成式模型。

从 Hugging Face Transformer 库转换

LiteRT Torch Hugging Face Export 扩展程序提供了一种 简化的途径,可将生成式 AI 模型直接从 Hugging Face Transformers 库转换为 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 工具使用标准 Transformer 身份验证机制,例如 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 应用 dynamic_wi8_afp32 量化配方,使用 AI Edge Quantizer, 将权重量化为每个通道 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 Integration 中的说明设置 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 Integration 中的说明设置 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 Integration 中的说明设置 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 代码库