Google AI Edge スタックを使用してファインチューニングされた Gemma 270m モデルをデプロイする

このチュートリアルでは、カスタマイズされた Gemma モデルを Android サンプルアプリにデプロイするエンドツーエンドのプロセスについて説明します。

このチュートリアルでは、次のことを行います。

  1. ファインチューニングされたモデルから始める
  2. AI Edge Torch ライブラリを使用してファインチューニングされたモデルを変換します。
    1. これにより、HuggingFace チェックポイントが .litertlm ファイルに変換されます。
  3. ファインチューニングされたモデルの品質を評価する
  4. adb コマンドを実行して、カスタムモデルをテストデバイスにプッシュします。
    1. これにより、.litertlm 形式のモデルがローカル テスト用に Android デバイスにプッシュされます。
  5. Pirate Gemma サンプルアプリを実行します。
    1. これにより、LiteRT-LM Kotlin ライブラリを使用して、サンプル Android アプリでファインチューニングされたモデルの推論が実行されます。

ステップ 1: ファインチューニングされたモデルから始める

このチュートリアルでは、ファインチューニングされたモデルから始めます。ベースモデルとファインチューニングされたモデルの違いを明確に示すために、ベースの Gemma270m モデルを取得し、海賊のように話すようにファインチューニングしました。

事前ファインチューニングされた Pirate Gemma モデルは、https://huggingface.co/erintwalsh/pirate-gemma で確認できます。

モデルのファインチューニングの詳細については、Gemma CookbookUnsloth のガイドをご覧ください。

ステップ 2: コマンドラインでカスタムモデルを変換して実行する

HuggingFace にカスタムモデルを公開したので、AI Edge Torch ライブラリを使用して、そのモデルをダウンロードして .litertlm 形式に変換できます。

前提条件

デバイスに uv ツールと Python 3.11 以降がインストールされていることを確認してください。

モデルを変換する

uv tool install litert-torch-nightly

litert-torch export_hf \
  --model=[YOUR-HF-USERNAME]/pirate-gemma \
  --output_dir=/tmp/pirate-gemma \
  --externalize_embedder

モデルをローカルで実行する

uv tool install litert-lm

litert-lm run  \
  /tmp/pirate-gemma/model.litertlm \
  --prompt="Where is the nearest buried treasure?"

ステップ 3: モデルの品質を評価する

ファインチューニングの品質を評価する

モデルをローカルで実行したら、AI Edge 評価 CLI ツールを使用して、ファインチューニングの LiteRT-LM モデルの品質を分析できます。このツールには、元の HF モデルと変換された LiteRT-LM モデル間の変換後の品質パリティ検証が組み込まれており、公開データセットを使用します。公開データセット以外にも、独自のデータと特定の指標を使用して、カスタマイズされた評価タスクを作成できます。LLM-as-a-Judge を使用してこのファインチューニングされたモデルを評価するカスタムタスクの例をご覧ください。

uv tool install ai-edge-eval

GEMINI_API_KEY="your_actual_api_key_here"
ai_edge_eval \
  --framework custom \
  --runner litert-lm \
  --model-path /path/to/your/model.litertlm \
  --custom-tasks-file pirate_gemma_custom_task.py \
  --tasks pirate_gemma_eval \
  --output-dir /tmp/results

ステップ 4: ローカルモデルをテストデバイスに push する

次の adb の手順に沿って、実行したモデルを物理 Android デバイスにプッシュします。

adb shell rm -r /data/local/tmp/llm/ # Remove any previously loaded models

adb shell mkdir -p /data/local/tmp/llm/

adb push /tmp/pirate-gemma/model.litertlm  /data/local/tmp/llm/pirate-gemma.litertlm

ステップ 5: Captain Gemma サンプルアプリを使用してカスタムモデルで推論を実行する

Captain Gemma は、デバイス上のモデルとのインターフェースを実証するアプリです。GitHub で見つけて、リポジトリのクローンを作成して Android Studio で実行します。

Captain Gemma サンプルアプリを開き、デバイスで実行します。Android Compose 要素を使用して、Android デバイスでファインチューニングされたモデルで推論を実行する方法を示すアプリです。アプリはユーザーからテキスト入力を受け取り、ファインチューニングされた Gemma モデルの海賊の知恵を返します。

.litertlm ファイルをプッシュしたテストデバイスでアプリを実行します。クエリを入力すると、白い吹き出しにモデルの出力が表示されます。

サンプルアプリのメイン画面

サンプルコード

Captain Gemma のサンプルコードで、LiteRT-LM API を使用してモデルを設定し、推論を実行する例をご覧ください。

ステップ 6: モデルのデプロイ

カスタムモデルのローカルテストが完了し、デプロイの準備ができたら、モデルをホストするオプションがあります。

  • .litertlm ファイルを、以前に作成した HuggingFace モデル リポジトリに push し、HuggingFace API を使用してアプリでダウンロードできます。
  • Firebase などのホスティング サービスを使用できます。このサービスでは、アプリがモデルの URL を取得して Android または iOS 向けにダウンロードするための API が提供されます。