LLM 推論ガイド

<ph type="x-smartling-placeholder">で確認できます。

LLM Inference API を使用すると、大規模言語モデル(LLM)を完全に実行できます。 など、幅広いタスクを実行できます。 テキストの生成、自然言語形式での情報の取得、 ドキュメントの要約などを行いますこのタスクには、複数の Google Cloud サービス テキストからテキストへの大規模言語モデルにより、最新のオンデバイスで 生成 AI モデルをアプリやプロダクトに実装できます。

<ph type="x-smartling-placeholder"></ph> お試しください。

このタスクは、Gemma 2B および 7B 同じモデルを使って構築された軽量で最先端のオープンモデルのファミリーです。 Gemini の開発に使用された研究と技術 構築できますまた、次の外部モデルもサポートしています。 Phi-2 Falcon-RW-1BStableLM-3B

ネイティブでサポートされているモデルに加えて、ユーザーは他の Google の AI エッジを使用したモデル (例: PyTorch モデルのマッピングをご覧ください)。 これにより、マッピングされたモデルをマルチ署名にエクスポートできます。 トークナイザ パラメータとバンドルされている TensorFlow Lite モデルを使用すると、 タスクバンドルを作成します。

使ってみる

以下の実装ガイドのいずれかに沿って、このタスクの使用を開始する ターゲット プラットフォームです。これらのプラットフォーム固有のガイドでは、基本的な このタスクの実装について、利用可能なモデルを使用したコード例と、 推奨される構成オプションは次のとおりです。

タスクの詳細

このセクションでは、機能、入力、出力、構成について説明します。 オプションを選択できます。

機能

LLM Inference API の主な機能は次のとおりです。

  1. テキストからテキストの生成 - 入力テキスト プロンプトに基づいてテキストを生成します。
  2. LLM の選択 - 複数のモデルを適用して、アプリをカスタマイズする 特定するユースケースに適していますまた、再トレーニングして、カスタマイズした重みを モデルです。
  3. LoRA のサポート - LoRA モデルによる LLM 機能の拡張とカスタマイズ すべてのデータセットでトレーニングするか 事前構築済みの LoRA を使用して 簡単に入手できます(ネイティブ モデルのみ)。
タスクの入力 タスク出力
LLM Inference API は、次の入力を受け入れます。
<ph type="x-smartling-placeholder">
    </ph>
  • テキスト プロンプト(質問、メールの件名、要約するドキュメントなど)
LLM Inference API は、次の結果を出力します。
<ph type="x-smartling-placeholder">
    </ph>
  • 入力プロンプトに基づいて生成されたテキスト(質問への回答、メールの下書き、ドキュメントの要約など)

構成オプション

このタスクには、次の構成オプションがあります。

オプション名 説明 値の範囲 デフォルト値
modelPath プロジェクト ディレクトリ内でモデルが保存されている場所のパス。 経路 なし
maxTokens モデルが処理するトークン(入力トークン + 出力トークン)の最大数。 Integer 512
topK 生成の各ステップでモデルが考慮するトークンの数。 予測を上位 k 個の最も確率の高いトークンに制限します。 Integer 40
temperature 生成時に導入されるランダム性の量。やや高い 温度を使用すると、生成される文章のクリエイティビティが高くなりますが、 温度を低くすると、生成がより予測しやすくなります。 浮動小数点数 0.8
randomSeed テキスト生成時に使用されるランダムシード。 Integer 0
loraPath デバイス上のローカルの LoRA モデルの絶対パス。注: GPU モデルにのみ対応しています。 経路 なし
resultListener 結果を非同期で受け取るように結果リスナーを設定します。 非同期生成メソッドを使用する場合にのみ適用されます。 なし なし
errorListener オプションのエラーリスナーを設定します。 なし なし

モデル

LLM Inference API には、分割可能なテキストからテキストへの変換をサポートする機能が組み込まれている ブラウザやモバイル デバイスで実行できるように最適化された言語モデルです。これらの 軽量のモデルをダウンロードして、完全にデバイス上で推論を実行できます。

LLM Inference API を初期化する前に、サポートされているモデルのいずれかをダウンロードして、 プロジェクト ディレクトリ内にファイルを保存します。

Gemma 2B

Gemma 2B は、 同じ研究と研究に基づいて構築された軽量で最先端のオープンモデルであり、 モデルの作成に使用されたテクノロジーです。Gemini「 20 億のパラメータとオープン ウェイトが含まれています。このモデルは、トレーニング データ、 テキスト生成タスクにも使用できます。たとえば、質問応答、要約、 学習します。

<ph type="x-smartling-placeholder"></ph> Gemma 2B をダウンロードする

Gemma 2B モデルには 4 つのバリエーションがあります。

アプリに追加する前に、モデルをチューニングして新しい重みを追加することもできます。対象 Gemma のチューニングとカスタマイズの詳細については、Gemma のチューニングをご覧ください。 Kaggle モデルから Gemma をダウンロードしたら、 モデルはすでに MediaPipe で使用するのに適した形式になっています。

Hugging から Gemma 2B をダウンロードした場合: 顔認証 MediaPipe に適した形式に変換しますLLM Inference API 次のファイルをダウンロードして変換する必要があります。

  • model-00001-of-00002.safetensors
  • model-00002-of-00002.safetensors
  • tokenizer.json
  • tokenizer_config.json

Gemma 7B

<ph type="x-smartling-placeholder">

Gemma 7B は、7B の大規模な Gemma モデルです。 オープン ウェイトです。このモデルはさまざまなテキストに対してより強力になる 質問応答、要約、推論などの生成タスクが含まれます。 Gemma 7B はウェブでのみサポートされています。

<ph type="x-smartling-placeholder"></ph> Gemma 7B をダウンロードする

Gemma 7B モデルには 1 つのバリエーションがあります。

Hugging Face から Gemma 7B をダウンロードした場合: MediaPipe に適した形式にモデルを変換する必要があります。「 LLM Inference API では、次のファイルをダウンロードして変換する必要があります。

  • model-00001-of-00004.safetensors
  • model-00002-of-00004.safetensors
  • model-00003-of-00004.safetensors
  • model-00004-of-00004.safetensors
  • tokenizer.json
  • tokenizer_config.json

Falcon 1B

Falcon-1B は、350B でトレーニングされた 10 億パラメータの因果的デコーダのみのモデルです。 トークン RefinedWeb:

<ph type="x-smartling-placeholder"></ph> Falcon 1B をダウンロード

LLM Inference API では、次のファイルをダウンロードして保存する必要があります 使用します。

  • tokenizer.json
  • tokenizer_config.json
  • pytorch_model.bin

Falcon モデルファイルをダウンロードすると、モデルを MediaPipe 形式を使用します。モデルを MediaPipe に変換する手順を実施します。 形式

StableLM 3B

StableLM-3B は、30 億のパラメータ デコーダのみの言語モデルで、 4 エポックの多様な英語とコード データセットの 1 兆トークン。

<ph type="x-smartling-placeholder"></ph> StableLM 3B をダウンロードする

LLM Inference API では、次のファイルをダウンロードして保存する必要があります 使用します。

  • tokenizer.json
  • tokenizer_config.json
  • model.safetensors

StableLM モデルファイルをダウンロードしたら、モデルを変換できる MediaPipe 形式に変換されます。モデルを MediaPipe に変換する手順を実施します。 形式

Phi-2

Phi-2 は、パラメータ数 27 億の Transformer モデルです。トレーニングには、さまざまな NLP 合成テキストとフィルタされたウェブサイト。このモデルはプロンプトに最も適している 質問と回答、チャット、コードの形式を使用します。

<ph type="x-smartling-placeholder"></ph> Phi-2 をダウンロード

LLM Inference API では、次のファイルをダウンロードして保存する必要があります 使用します。

  • tokenizer.json
  • tokenizer_config.json
  • model-00001-of-00002.safetensors
  • model-00002-of-00002.safetensors

Phi-2 モデルファイルをダウンロードしたら、モデルを MediaPipe 形式を使用します。モデルを MediaPipe に変換する手順を実施します。 形式

AI Edge でエクスポートされたモデル

AI Edge は、ユーザーがマッピングしたモデルを変換できる Google プロダクト マルチシグネチャ TensorFlow Lite モデルに組み込んでいます。マッピングとロギングについて詳しくは、 詳細を確認するには、AI Edge Torch GitHub ページ

モデルを TFLite 形式でエクスポートしたら、 MediaPipe 形式に変換されます詳細については、次をご覧ください。 モデルを MediaPipe 形式に変換します

モデルを MediaPipe 形式に変換する

ネイティブ モデルの変換

外部の LLM(Phi-2、Falcon、StableLM)または Kaggle 以外の言語を使用している場合 作成したら、Google の変換スクリプトを使用して、 MediaPipe との互換性があります。

モデル変換プロセスには MediaPipe PyPI パッケージが必要です。コンバージョン スクリプトは、0.10.11 以降、すべての MediaPipe パッケージで使用できます。

次のように依存関係をインストールしてインポートします。

$ python3 -m pip install mediapipe

genai.converter ライブラリを使用してモデルを変換します。

import mediapipe as mp
from mediapipe.tasks.python.genai import converter

config = converter.ConversionConfig(
  input_ckpt=INPUT_CKPT,
  ckpt_format=CKPT_FORMAT,
  model_type=MODEL_TYPE,
  backend=BACKEND,
  output_dir=OUTPUT_DIR,
  combine_file_only=False,
  vocab_model_file=VOCAB_MODEL_FILE,
  output_tflite_file=OUTPUT_TFLITE_FILE,
)

converter.convert_checkpoint(config)

LoRA モデルを変換するには、ConversionConfig でベースモデルを指定する必要があります。 追加の LoRA オプションを選択できます。API のみを使用するため、 GPU を使用した LoRA 推論をサポートしている場合、バックエンドを 'gpu' に設定する必要があります。

import mediapipe as mp
from mediapipe.tasks.python.genai import converter

config = converter.ConversionConfig(
  # Other params related to base model
  ...
  # Must use gpu backend for LoRA conversion
  backend='gpu',
  # LoRA related params
  lora_ckpt=LORA_CKPT,
  lora_rank=LORA_RANK,
  lora_output_tflite_file=LORA_OUTPUT_TFLITE_FILE,
)

converter.convert_checkpoint(config)

コンバータは 2 つの TFLite フラットバッファ ファイル(ベースモデル用)を出力します。 LoRA モデル用です

パラメータ 説明 許容値
input_ckpt model.safetensors ファイルまたは pytorch.bin ファイルへのパス。モデルのセーフテンソル形式が複数のファイルにシャーディングされている場合があります。たとえば、model-00001-of-00003.safetensorsmodel-00001-of-00003.safetensors。ファイル パターンを指定できます(例: model*.safetensors)。 経路
ckpt_format モデルのファイル形式。 {"safetensors", "pytorch"}
model_type 変換される LLM。 {&quot;PHI_2&quot;, &quot;FALCON_RW_1B&quot;, &quot;STABLELM_4E1T_3B&quot;, &quot;GEMMA_2B&quot;}
backend モデルの実行に使用されるプロセッサ(委任)。 {&quot;cpu&quot;, &quot;gpu&quot;}
output_dir レイヤごとの重みファイルをホストする出力ディレクトリのパス。 経路
output_tflite_file 出力ファイルのパス。例: model_cpu.bin"model_gpu.bin"ですこのファイルは LLM Inference API にのみ対応しており、一般的な「tflite」ファイルとしては使用できません。 経路
vocab_model_file tokenizer.json とファイルを格納するディレクトリのパス tokenizer_config.json ファイル。Gemma の場合は、単一の tokenizer.model ファイルにカーソルを合わせます。 経路
lora_ckpt LoRA アダプタの重みを格納する Safetensors ファイルのパス。 経路
lora_rank LoRA チェックポイントのランクを表す整数。Lora の重みを変換するために必要です。指定しない場合、コンバータは LoRA の重みはないと見なします。注: LoRA をサポートしているのは GPU バックエンドのみです。 Integer
lora_output_tflite_file LoRA の重みの tflite ファイル名を出力します。 経路

AI Edge モデル変換

AI Edge を介して TFLite モデルにマッピングされた LLM を使用している場合は、Google の Task Bundle を作成するためのバンドル スクリプト。バンドルプロセスでは 追加のメタデータ(トークナイザ パラメータ)が必要です。 エンドツーエンドの推論を実行できます

モデルのバンドル プロセスには、MediaPipe PyPI パッケージが必要です。コンバージョン スクリプトは、0.10.14 以降、すべての MediaPipe パッケージで使用できます。

次のように依存関係をインストールしてインポートします。

$ python3 -m pip install mediapipe

genai.bundler ライブラリを使用してモデルをバンドルします。

import mediapipe as mp
from mediapipe.tasks.python.genai import bundler

config = bundler.BundleConfig(
    tflite_model=TFLITE_MODEL,
    tokenizer_model=TOKENIZER_MODEL,
    start_token=START_TOKEN,
    stop_tokens=STOP_TOKENS,
    output_filename=OUTPUT_FILENAME,
    enable_bytes_to_unicode_mapping=ENABLE_BYTES_TO_UNICODE_MAPPING,
)
bundler.create_bundle(config)
パラメータ 説明 許容値
tflite_model AI Edge でエクスポートされた TFLite モデルのパス。 経路
tokenizer_model SentencePiece トークナイザ モデルのパス。 経路
start_token モデル固有の開始トークン。開始トークンは トークナイザ モデルを使用できます。 STRING
stop_tokens モデル固有のストップ トークン。ストップ トークンは トークナイザ モデルを使用できます。 リスト [STRING]
output_filename 出力タスク バンドル ファイルの名前。 経路

LoRA のカスタマイズ

Mediapipe LLM 推論 API は、Low-Rank Adaptation(LoRA)をサポートするように構成できる 大規模言語モデルの場合ですファインチューニングされた LoRA モデルを利用することで、開発者は 費用対効果の高いトレーニング プロセスを通じて LLM の動作をカスタマイズできます。

LLM Inference API の LoRA サポートは、Gemma-2B モデルと Phi-2 モデルで機能します。 アテンション レイヤにのみ適用される LoRA の重みを持つ GPU バックエンド。この 初期実装は将来の開発のための試験運用版 API として機能する 今後、さらに多くのモデルとさまざまな種類のレイヤをサポートする予定です。 あります。

LoRA モデルを準備する

HuggingFace の手順に沿って、サポートされているモデルタイプ(Gemma-2B または Phi-2)を使用して独自のデータセットでファインチューニングされた LoRA モデルをトレーニングします。Gemma-2B モデルと Phi-2 モデルはどちらも、セーフテンソル形式で HuggingFace で利用できます。LLM 推論 API はアテンション レイヤの LoRA のみをサポートするため、次のように LoraConfig の作成時にアテンション レイヤのみを指定します。

# For Gemma-2B
from peft import LoraConfig
config = LoraConfig(
    r=LORA_RANK,
    target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
)

# For Phi-2
config = LoraConfig(
    r=LORA_RANK,
    target_modules=["q_proj", "v_proj", "k_proj", "dense"],
)

テスト用に、HuggingFace で利用可能な LLM Inference API に適合するファインチューニング済みの LoRA モデルが一般公開されています。たとえば、Gemma-2B の場合は monsterapi/gemma-2b-lora-maths-orca-200k、Phi-2 の場合は lole25/phi-2-sft-ultrachat-lora になります。

準備したデータセットでトレーニングしてモデルを保存したら、ファインチューニングされた LoRA モデルの重みを含む adapter_model.safetensors ファイルを取得します。Safetensors ファイルは、モデル変換で使用される LoRA チェックポイントです。

次のステップとして、MediaPipe Python Package を使用してモデルの重みを TensorFlow Lite Flatbuffer に変換する必要があります。ConversionConfig では、ベースモデル オプションと追加の LoRA オプションを指定する必要があります。API は GPU を使用した LoRA 推論のみをサポートしているため、バックエンドを 'gpu' に設定する必要があります。

import mediapipe as mp
from mediapipe.tasks.python.genai import converter

config = converter.ConversionConfig(
  # Other params related to base model
  ...
  # Must use gpu backend for LoRA conversion
  backend='gpu',
  # LoRA related params
  lora_ckpt=LORA_CKPT,
  lora_rank=LORA_RANK,
  lora_output_tflite_file=LORA_OUTPUT_TFLITE_FILE,
)

converter.convert_checkpoint(config)

コンバータは 2 つの TFLite フラットバッファ ファイル(ベースモデル用)を出力します。 LoRA モデル用です

LoRA モデルの推論

ウェブ、Android、iOS の LLM Inference API が更新され、LoRA モデル推論がサポートされるようになりました。ウェブは動的 LoRA をサポートしており、実行時に異なる LoRA モデルを切り替えることができます。Android と iOS は静的 LoRA をサポートしています。これは、タスクの存続期間中に同じ LoRA 重みを使用します。

Android は初期化時に静的 LoRA をサポートします。LoRA モデルを読み込むには、LoRA モデルのパスとベース LLM を指定します。

// Set the configuration options for the LLM Inference task
val options = LlmInferenceOptions.builder()
        .setModelPath('<path to base model>')
        .setMaxTokens(1000)
        .setTopK(40)
        .setTemperature(0.8)
        .setRandomSeed(101)
        .setLoraPath('<path to LoRA model>')
        .build()

// Create an instance of the LLM Inference task
llmInference = LlmInference.createFromOptions(context, options)

LoRA を使用して LLM 推論を実行するには、ベースモデルと同じ generateResponse() メソッドまたは generateResponseAsync() メソッドを使用します。