抽出されたテキストモデルを作成する

段階別の抽出では、大規模な教師モデルを使用して、推論機能を改善し特定のタスクをより適切に実行するように、小規模な生徒モデルをトレーニングします。トレーニングされた抽出モデルでは、大規模な教師モデルで扱う同じ処理を、より低コストかつ低レイテンシで行えます。

基盤モデルを抽出する場合は、教師モデルと生徒モデルを使用します。

  • 教師モデルは、必要なことを実行できる大規模モデルです。ただし、教師モデルは大きさのためにコストが高く、小規模なモデルよりもレイテンシが長くなる可能性があります。

  • 生徒モデルは、教師モデルよりも小さいものになります。トレーニングと抽出のプロセスでは、教師モデルによって生成されたラベル付きの例と推論を使用して、生徒モデルを調整します。結果として得られる抽出モデルのパフォーマンスと推論能力は、元の生徒モデルよりも優れています。

抽出ジョブを作成するときは、教師モデルと生徒モデルを指定します。

サポートされているモデル

教師モデルには、次の項目を指定できます。

  • text-unicorn@001

生徒モデルには、次の項目を指定できます。

  • text-bison@002

データセットのフォーマット

抽出は、ラベル付きとラベルなしのどちらのデータセットでも機能します。数百のサンプルを含む高品質のラベル付きデータセットがある場合は、それを使用することをおすすめします。それ以外の場合は、ラベルのないプロンプト データセットを使用できます。ラベルなしのデータセットを使用すると、教師モデルはラベルと抽出の根拠を生成します。ラベルなしのデータセットを使用する場合は、1,000 を超えるサンプルをおすすめします。

ラベル付きまたはラベルなしの抽出データセットは、JSON Lines(JSONL)形式で、各行に 1 つのチューニング サンプルが含まれている必要があります。モデルを抽出する前に、データセットを Cloud Storage バケットにアップロードします

各データセットの例には、モデル プロンプトを含む input_text フィールドと、抽出モデルで生成されるレスポンスのサンプルを含むオプションの output_text フィールドが含まれます。

input_text の最大トークン長は 7,168 で、output_text の最大トークン長は 1,024 です。いずれかのフィールドがトークンの最大長を超えると、超過分のトークンは切り捨てられます。

テキスト生成モデル用のデータセットに含めることができるサンプルの最大数は 10,000 です。

データセットの例

{"input_text": "question: How many people live in Beijing? context:
With over 21 million residents, Beijing is the world's most populous national
capital city and is China's second largest city after Shanghai. It is
located in Northern China, and is governed as a municipality under the direct
administration of the State Council with 16 urban, suburban, and rural
districts.[14] Beijing is mostly surrounded by Hebei Province with the exception
of neighboring Tianjin to the southeast; together, the three divisions form the
Jingjinji megalopolis and the national capital region of China.",
"output_text": "over 21 million people"}

{"input_text": "question: How many parishes are there in Louisiana? context: The U.S. state of Louisiana is divided into 64 parishes (French: paroisses) in the same manner that 48 other states of the United States are divided into counties, and Alaska is divided into boroughs.", "output_text": "64"}

サンプルに手順を含める

分類などのタスクでは、手順を含まないサンプルのデータセットを作成できます。ただし、データセットのサンプルから手順を除外すると、特に小さなデータセットの場合、手順を含める場合よりも抽出後のパフォーマンスが低下します。

手順を除外:

{"input_text": "5 stocks to buy now",
"output_text": "business"}

手順を含む:

{"input_text": "Classify the following text into one of the following classes:
[business, entertainment] Text: 5 stocks to buy now",
"output_text": "business"}

サンプル データセット

サンプル データセットを使用して抽出を開始できます。以下に示すのは、さまざまな医療専門分野向けの医療用音声文字変換のサンプルを含む、分類タスクのデータセットです。このデータは mtsamples.com からのもので、Kaggle で入手できます。

  • 抽出のサンプル データセットの URI:

    gs://cloud-samples-data/vertex-ai/model-evaluation/peft_train_sample.jsonl

  • サンプル評価用データセットの URI:

    gs://cloud-samples-data/vertex-ai/model-evaluation/peft_eval_sample.jsonl

これらのデータセットを使用するには、テキストモデル抽出ジョブの作成時に、該当するパラメータで URI を指定します。

例:

...
"dataset_uri": "gs://cloud-samples-data/vertex-ai/model-evaluation/peft_train_sample.jsonl",
...
"evaluation_data_uri": "gs://cloud-samples-data/vertex-ai/model-evaluation/peft_eval_sample.jsonl",
...

本番環境データとの整合性を維持する

データセットに含まれるサンプルは、想定される本番環境のトラフィックと一致していなければなりません。データセットに特定の書式、キーワード、指示、情報が含まれている場合は、本番環境のデータも同じ形式にし、同じ指示を含んでいる必要があります。

たとえば、データセットのサンプルに "question:""context:" が含まれている場合は、本番環境のトラフィックにも、データセットの例と同じ順序で "question:""context:" が含まれるように整形する必要があります。コンテキストを除外すると、データセット内の例に正確な質問が含まれていても、モデルはパターンを認識しません。

抽出データセットを Cloud Storage にアップロードする

チューニング ジョブを実行するには、1 つ以上のデータセットを Cloud Storage バケットにアップロードする必要があります。新しい Cloud Storage バケットを作成するか、既存のバケットを使用してデータセット ファイルを保存できます。バケットのリージョンは重要ではありませんが、モデルをチューニングする Google Cloud プロジェクトのバケットを使用することをおすすめします。

バケットの準備ができたら、データセット ファイルをバケットにアップロードします。

抽出のリージョン設定

抽出ジョブを構成するときに、3 つの Google Cloud リージョン設定を指定できます。1 つのリージョンは、モデルをチューニングするパイプラインが実行される場所です。もう 1 つのリージョンでは、抽出プロセスのモデル チューニング部分が実行され、抽出されたモデルがアップロードされます。

パイプライン ジョブ リージョン

パイプライン ジョブ リージョンは、パイプライン ジョブが実行されるリージョンです。オプションのモデル アップロード リージョンが指定されていない場合、モデルはパイプライン ジョブ リージョンにアップロード、デプロイされます。変換済みデータセットなどの中間データは、パイプライン ジョブ リージョンに保存されます。パイプライン ジョブ リージョンに使用できるリージョンについては、サポートされているパイプライン ジョブとモデル アップロード リージョンをご覧ください。

パイプライン ジョブ リージョンは、次のいずれかの方法で指定する必要があります。

  • pipelineJobs.create メソッドで POST リクエストを送信して抽出ジョブを作成する場合は、URL を使用してパイプライン ジョブが実行されるリージョンを指定します。次の URL で、PIPELINE_JOB_REGION の両方のインスタンスをパイプラインが実行されるリージョンに置き換えます。

     https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs
    
  • Google Cloud コンソールを使用して抽出ジョブを作成する場合は、抽出ジョブの作成時に [リージョン] コントロールでパイプライン ジョブ リージョンを指定します。Google Cloud コンソールでは、[リージョン] コントロールでパイプライン ジョブ リージョンとモデル アップロード リージョンの両方を指定します。Google Cloud コンソールを使用して抽出ジョブを作成する場合、両方のリージョンは常に同じです。

モデル アップロード リージョン

オプションの tuned_model_location パラメータを使用して、抽出されたモデルのアップロード先を指定します。モデル アップロード リージョンが指定されていない場合、抽出されたモデルは、パイプライン ジョブ リージョンにアップロードされます。モデル アップロード リージョンには、サポートされているパイプライン ジョブ リージョンとモデル アップロード リージョンのいずれかを使用できます。モデル アップロード リージョンは、次のいずれかの方法で指定できます。

  • pipelineJobs メソッドを使用し、POST リクエストを送信して抽出ジョブを作成する場合は、location パラメータを使用してモデルのアップロード リージョンを指定できます。

  • Google Cloud コンソールを使用して抽出ジョブを作成する場合は、抽出ジョブの作成時に [リージョン] コントロールでモデル アップロード リージョンを指定します。Google Cloud コンソールでは、[リージョン] コントロールでモデル アップロード リージョンとパイプライン ジョブ リージョンの両方を指定します。Google Cloud コンソールを使用して抽出ジョブを作成する場合、両方のリージョンは常に同じです。

モデル チューニング リージョン

チューニング リージョンでは、抽出ジョブの調整部分の計算が行われます。このリージョンは、選択したアクセラレータ タイプによって決まります。アクセラレータ タイプに TPU を指定すると、モデル チューニングの計算は europe-west4 で行われます。アクセラレータ タイプに GPU を指定すると、モデル チューニングは us-central1 で行われます。

サポートされているパイプライン ジョブ リージョンとモデル アップロード リージョン

次のいずれかのリージョンを使用して、モデル アップロード リージョンとパイプライン ジョブ リージョンを指定できます。

  • us-central1
  • europe-west4
  • asia-southeast1
  • us-west1
  • europe-west3
  • europe-west2
  • asia-northeast1
  • us-east4
  • us-west4
  • northamerica-northeast1
  • europe-west9
  • europe-west1
  • asia-northeast3

テキストモデル抽出ジョブを作成する

テキストモデル抽出ジョブは、Google Cloud コンソールか API を使用して作成できます。モデルを抽出する構成のガイダンスについては、推奨構成をご覧ください。

REST

モデルの抽出ジョブを作成するには、pipelineJobs メソッドを使用して POST リクエストを送信します。一部のパラメータは、すべてのモデルでサポートされているわけではないことに注意してください。抽出するモデルに適用可能なパラメータのみを含めるようにしてください。

リクエストのデータを使用する前に、次のように置き換えます。

  • PIPELINEJOB_DISPLAYNAME: pipelineJob の表示名。
  • OUTPUT_DIR: パイプライン アーティファクトの出力先となるバケットの URI。
  • PROJECT_ID: 実際のプロジェクト ID
  • MODEL_DISPLAYNAME: pipelineJob によってアップロードされる抽出モデルの表示名。
  • DATASET_URI: データセット ファイルの URI。
  • PIPELINE_JOB_REGION: パイプライン チューニング ジョブを実行するリージョン。これは、チューニング済みのモデルをアップロードするデフォルトのリージョンでもあります。モデルを別のリージョンにアップロードする場合は、location パラメータを使用して、チューニング済みのモデルをアップロードするリージョンを指定します。詳細については、モデル アップロードのリージョンをご覧ください。
  • MODEL_UPLOAD_REGION: (省略可)チューニング済みモデルがアップロードされるリージョン。モデルのアップロード リージョンを指定しない場合、チューニング済みのモデルは、パイプライン ジョブが実行されるリージョンにアップロードされます。詳細については、モデル アップロードのリージョンをご覧ください。
  • ACCELERATOR_TYPE: (省略可、デフォルト GPU)モデルのチューニングに使用するアクセラレータのタイプ。有効なオプションは次のとおりです。
    • GPU: チューニングに 8 個の A100 80 GB GPU を使用します。割り当てが十分にあることを確認してください。GPU を選択した場合、VPC‐SC がサポートされます。CMEK は、チューニングの場所とモデルのアップロード場所が us-centra1 の場合にサポートされます。詳しくは、管理対象のチューニング リージョンの設定をご覧ください。GPU を選択すると、モデル チューニングの計算は us-central1 リージョンで行われます。
    • TPU: チューニングに TPU v3 Pod の 64 コアを使用します。割り当てが十分にあることを確認してください。CMEK はサポートされていませんが、VPC‐SC はサポートされています。TPU を選択すると、モデル チューニングの計算は europe-west4 リージョンで行われます。
  • TEACHER_MODEL_REFERENCE: 抽出に使用する教師モデルの名前。サポートされているモデルは text-unicorn@001 です。
  • STUDENT_MODEL_REFERENCE: 抽出に使用する生徒モデルの名前。サポートされているモデルは text-bison@002 です。
  • STEPS: モデルのチューニングで実行するステップ数。デフォルト値は 300 です。バッチサイズは、チューニングを行うロケーションとモデルサイズによって異なります。8k モデル(text-bison@002chat-bison@002code-bison@002codechat-bison@002 など)の場合:
    • us-central1 のバッチサイズは 8 です。
    • europe-west4 のバッチサイズは 24 です。
    32k モデル(text-bison-32kchat-bison-32kcode-bison-32kcodechat-bison-32k など)の場合:
    • us-central1 のバッチサイズは 8 です。
    • europe-west4 のバッチサイズは 8 です。

    たとえば、europe-west4text-bison@002 をトレーニングする場合、トレーニング データセットに 240 のサンプルがあり、steps を 20 に設定すると、トレーニングのサンプル数は、20 ステップとバッチサイズ 24 の積、つまり 480 トレーニング ステップになります。この場合、サンプルを 2 回実行するため、トレーニング プロセスにはエポックが 2 つあります。us-central1 では、トレーニング データセットに 240 のサンプルがあり、steps を 15 に設定した場合、トレーニング サンプル数は 15 ステップとバッチサイズ 8 の積、つまり 120 トレーニング ステップになります。この場合、トレーニング ステップ数がサンプルの半分であるため、エポックが 0.5 個になります。

  • LEARNING_RATE_MULTIPLIER: 推奨学習率に適用する乗数。推奨学習率を使用するには、1.0 を使用します。
  • EVAL_DATASET_URI: (省略可)バッチ予測と評価用の評価データセットを含む JSONL ファイルの URI。chat-bison では、評価はサポートされていません。詳細については、コードモデルをチューニングするためのデータセット形式をご覧ください。評価データセットには 10~250 個のサンプルが必要です。
  • EVAL_INTERVAL: (省略可、デフォルト 20)各評価間のチューニング ステップの数。評価間隔はチャットモデルではサポートされていません。評価は評価データセット全体で実行されるため、評価間隔が短いほどチューニング時間が長くなります。たとえば、steps が 200 で EVAL_INTERVAL が 100 の場合、評価指標のデータポイントは 2 つのみになります。このパラメータを使用するには、evaluation_data_uri を設定する必要があります。
  • ENABLE_EARLY_STOPPING: (省略可、デフォルトは trueboolean で、true に設定すると、評価の実行間でモデルのパフォーマンス(予測されるトークンの正確性により評価されます)に十分な改善が見られなかった場合、すべてのチューニング ステップが完了する前にチューニングを停止します。false の場合、すべてのチューニング ステップが完了するまでチューニングが続行されます。このパラメータを使用するには、evaluation_data_uri を設定する必要があります。早期停止の有効化は、チャットモデルではサポートされていません。
  • TENSORBOARD_RESOURCE_ID:(省略可)Vertex AI TensorBoard インスタンスの ID。Vertex AI TensorBoard インスタンスは、チューニング ジョブの完了後にテストを作成するために使用されます。Vertex AI TensorBoard インスタンスは、チューニング パイプラインと同じリージョンに存在する必要があります。
  • ENCRYPTION_KEY_NAME:(省略可)データの暗号化に使用する顧客管理の暗号鍵(CMEK)の完全修飾名。CMEK は us-central1 でのみ使用できます。us-central1 を使用して CMEK を指定しない場合は、Google が管理する暗号鍵が使用されます。その他のすべての利用可能なリージョンでは、Google が管理する暗号鍵がデフォルトで使用されます。詳細については、CMEK の概要をご覧ください。
  • TEMPLATE_URI: 抽出テンプレートの URI(https://us-kfp.pkg.dev/ml-pipeline/distillation/distillation/v1.0.0)。
  • SERVICE_ACCOUNT: (省略可)Vertex AI がパイプライン ジョブの実行に使用するサービス アカウント。デフォルトでは、プロジェクトの Compute Engine のデフォルト サービス アカウント(PROJECT_NUMBER‑compute@developer.gserviceaccount.com)が使用されます。詳細については、カスタム サービス アカウントの接続をご覧ください。

HTTP メソッドと URL:

POST https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs

リクエストの本文(JSON):

{
  "displayName": "PIPELINEJOB_DISPLAYNAME",
  "runtimeConfig": {
    "gcsOutputDirectory": "gs://OUTPUT_DIR",
    "parameterValues": {
      "project": "PROJECT_ID",
      "model_display_name": "MODEL_DISPLAYNAME",
      "dataset_uri": "gs://DATASET_URI",
      "location": "MODEL_UPLOAD_REGION",
      "accelerator_type": "ACCELERATOR_TYPE",
      "teacher_model_reference": TEACHER_MODEL_REFERENCE,
      "student_model_reference": STUDENT_MODEL_REFERENCE,
      "train_steps": STEPS,
      "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER,
      "evaluation_data_uri": "gs://EVAL_DATASET_URI",
      "evaluation_interval": EVAL_INTERVAL,
      "enable_early_stopping": ENABLE_EARLY_STOPPING,
      "enable_checkpoint_selection": "ENABLE_CHECKPOINT_SELECTION",
      "tensorboard_resource_id": "TENSORBOARD_ID",
      "encryption_spec_key_name": "ENCRYPTION_KEY_NAME"
    }
  },
  "encryptionSpec": {
    "kmsKeyName": "ENCRYPTION_KEY_NAME"
  },
  "serviceAccount": "SERVICE_ACCOUNT",
  "templateUri": "TEMPLATE_URI"
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。容量を節約するために、pipelineSpec は切り捨てられています。

Python

Python をインストールまたは更新する方法については、Vertex AI SDK for Python をインストールするをご覧ください。詳細については、Python API リファレンス ドキュメントをご覧ください。

from __future__ import annotations

from typing import Optional

from google.auth import default
import vertexai
from vertexai.preview.language_models import TextGenerationModel, TuningEvaluationSpec

credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])

def distill_model(
    project_id: str,
    location: str,
    dataset: str,
    teacher_model: str,
    train_steps: int = 300,
    evaluation_dataset: Optional[str] = None,
) -> None:
    """Distill a new model.

    Args:
      project_id: GCP Project ID, used to initialize vertexai
      location: GCP Region, used to initialize vertexai
      dataset: GCS URI of jsonl file.
      teacher_model: Name of the teacher model.
      train_steps: Number of training steps to use when tuning the model.
      evaluation_dataset: GCS URI of jsonl file of evaluation data.
    """
    vertexai.init(project=project_id, location=location, credentials=credentials)

    eval_spec = TuningEvaluationSpec(evaluation_data=evaluation_dataset)

    student_model = TextGenerationModel.from_pretrained("text-bison@002")
    distillation_job = student_model.distill_from(
        teacher_model=teacher_model,
        dataset=dataset,
        # Optional:
        train_steps=train_steps,
        evaluation_spec=eval_spec,
    )

    return distillation_job

コンソール

Google Cloud コンソールを使用してテキストモデルを抽出するには、次の操作を行います。

  1. Google Cloud コンソールの [Vertex AI] セクションで、[Vertex AI Studio] ページに移動します。

    Vertex AI Studio に移動

  2. [チューニングと抽出] タブをクリックします。
  3. [ 抽出モデルを作成する] をクリックします。
  4. モデルの詳細を構成します。
    • モデル名: 抽出済みモデルの名前を入力します。
    • 教師モデル: 教師モデルに使用するモデルを選択します。
    • 生徒モデル: 生徒モデルに使用するモデルを選択します。
    • リージョン: パイプライン チューニング ジョブが実行されるリージョンとチューニングされたモデルがデプロイされるリージョンを選択します。
    • 作業ディレクトリ: モデルのチューニング時にアーティファクトが保存される Cloud Storage のロケーションを入力します。
  5. [詳細オプション] を開いて、詳細設定を構成します。
    • ステップをトレーニング: モデルのチューニングのために実行するステップ数を入力します。デフォルト値は 300 です。バッチサイズは、チューニングを行うロケーションとモデルサイズによって異なります。8k モデル(text-bison@002chat-bison@002code-bison@002codechat-bison@002 など)の場合:
      • us-central1 のバッチサイズは 8 です。
      • europe-west4 のバッチサイズは 24 です。
      32k モデル(text-bison-32kchat-bison-32kcode-bison-32kcodechat-bison-32k など)の場合:
      • us-central1 のバッチサイズは 8 です。
      • europe-west4 のバッチサイズは 8 です。

      たとえば、europe-west4text-bison@002 をトレーニングする場合、トレーニング データセットに 240 のサンプルがあり、steps を 20 に設定すると、トレーニングのサンプル数は、20 ステップとバッチサイズ 24 の積、つまり 480 トレーニング ステップになります。この場合、サンプルを 2 回実行するため、トレーニング プロセスにはエポックが 2 つあります。us-central1 では、トレーニング データセットに 240 のサンプルがあり、steps を 15 に設定した場合、トレーニング サンプル数は 15 ステップとバッチサイズ 8 の積、つまり 120 トレーニング ステップになります。この場合、トレーニング ステップ数がサンプルの半分であるため、エポックが 0.5 個になります。

    • 学習率の乗数: 各イテレーションのステップサイズを入力します。デフォルト値は 1 です。
    • アクセラレータ タイプ: (省略可)モデルのチューニングに使用するアクセラレータのタイプを入力します。有効なオプションは次のとおりです。
      • GPU: チューニングに 8 個の A100 80 GB GPU を使用します。割り当てが十分にあることを確認してください。GPU を選択した場合、VPC‐SC がサポートされます。CMEK は、チューニングの場所とモデルのアップロード場所が us-centra1 の場合にサポートされます。詳しくは、管理対象のチューニング リージョンの設定をご覧ください。GPU を選択すると、モデル チューニングの計算は us-central1 リージョンで行われます。
      • TPU: チューニングに TPU v3 Pod の 64 コアを使用します。割り当てが十分にあることを確認してください。CMEK はサポートされていませんが、VPC‐SC はサポートされています。TPU を選択すると、モデル チューニングの計算は europe-west4 リージョンで行われます。
    • TensorBoard インスタンスを追加する:(省略可)Vertex AI TensorBoard インスタンスの ID。Vertex AI TensorBoard インスタンスは、チューニング ジョブの完了後にテストを作成するために使用されます。Vertex AI TensorBoard インスタンスは、チューニング パイプラインと同じリージョンに存在する必要があります。
    • 暗号化: (省略可)Google が管理する暗号鍵または顧客管理の暗号鍵(CMEK)のいずれかを選択します。CMEK は us-central1 リージョンでのみ暗号化に利用できます。他のすべての使用可能なリージョンでは、Google が管理する暗号鍵が使用されます。詳細については、CMEK の概要をご覧ください。
    • サービス アカウント: (省略可)ユーザー管理のサービス アカウントを選択します。サービスコードがアクセスできる Google Cloud リソースはサービス アカウントにより決定されます。サービス アカウントを選択しない場合は、ほとんどのモデルに適した権限を含む Google 管理のサービス アカウントが使用されます。
  6. [続行] をクリックする
  7. 抽出データセット ファイルをアップロードする場合は、 [JSONL ファイルを Cloud Storage にアップロードする] を選択します。データセット ファイルがすでに Cloud Storage バケットにある場合、[Cloud Storage 上の既存の JSONL ファイル] を選択します。

    JSONL ファイルをアップロードする

    • [JSONL ファイルの選択] で [参照] をクリックし、データセット ファイルを選択します。
    • [データセットの場所] で [参照] をクリックし、データセット ファイルを保存する Cloud Storage バケットを選択します。

    既存の JSONL ファイルを使用する

    [Cloud Storage のファイルパス] で [参照] をクリックし、データセット ファイルがある Cloud Storage バケットを選択します。

  8. (省略可)抽出モデルを評価するには、[モデル評価を有効にする] を選択して、モデル評価を構成します。
    • 評価データセット: (省略可)バッチ予測と評価用の評価データセットを含む JSONL ファイルの URI。codechat-bison では、評価はサポートされていません。詳細については、コードモデルをチューニングするためのデータセット形式をご覧ください。評価データセットには 10~250 個のサンプルが必要です。
    • 評価間隔: (省略可、デフォルトは 20)各評価間のチューニング ステップの数。評価間隔はチャットモデルではサポートされていません。評価は評価データセット全体で実行されるため、評価間隔が短いほどチューニング時間が長くなります。たとえば、steps が 200 で EVAL_INTERVAL が 100 の場合、評価指標のデータポイントは 2 つのみになります。このパラメータを使用するには、evaluation_data_uri を設定する必要があります。
    • 早期停止を有効にする: (省略可、デフォルトは trueboolean で、true に設定すると、評価の実行間でモデルのパフォーマンス(予測されるトークンの正確性により測定されます)に十分な改善が見られなかった場合、すべてのチューニング ステップが完了する前にチューニングを停止します。false の場合、すべてのチューニング ステップが完了するまでチューニングが続行されます。このパラメータを使用するには、evaluation_data_uri を設定する必要があります。早期停止の有効化は、チャットモデルではサポートされていません。
    • チェックポイントの選択を有効にする: 有効にすると、Vertex AI はチューニング ジョブ中に作成されたすべてのチェックポイントから、最適なモデル評価パフォーマンスを持つチェックポイントを選択して返します。無効にすると、チューニング ジョブ中に作成された最後のチェックポイントが返されます。各チェックポイントは、チューニング ジョブ中のモデルのスナップショットを参照します。
    • TensorBoard インスタンス:(省略可)Vertex AI TensorBoard インスタンスの ID。Vertex AI TensorBoard インスタンスは、チューニング ジョブの完了後にテストを作成するために使用されます。Vertex AI TensorBoard インスタンスは、チューニング パイプラインと同じリージョンに存在する必要があります。
  9. [抽出を開始] をクリックします。

タスクごとに基盤モデルを抽出するための推奨構成を、次の表に示します。

タスク データセットのサンプル数 ステップをトレーニング
分類 100+ 200~1,000
要約 100~500 以上 1,000~1,500
抽出型の QA 100+ 200~800

トレーニング ステップでは、特定のデータセットに対して最高のパフォーマンスを得るために、複数の値(100、200、500 など)を試すことができます。

抽出されたモデルのリストを表示する

現在のプロジェクトに含まれるモデルのリスト(抽出されたモデルを含む)を表示するには、Google Cloud コンソール、または Vertex AI SDK for Python を使用します。

Python

このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。詳細については、Vertex AI Python API のリファレンス ドキュメントをご覧ください。

Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。


import vertexai
from vertexai.language_models import TextGenerationModel

def list_tuned_models(
    project_id: str,
    location: str,
) -> None:
    """List tuned models."""

    vertexai.init(project=project_id, location=location)
    model = TextGenerationModel.from_pretrained("text-bison@002")
    tuned_model_names = model.list_tuned_model_names()
    print(tuned_model_names)

    return tuned_model_names

コンソール

Google Cloud コンソールで抽出されたモデルを表示するには、[Vertex AI Model Registry] ページに移動します。

Vertex AI Model Registry に移動

抽出されたテキストモデルを読み込む

次のサンプルコードでは、Vertex AI SDK for Python を使用して、抽出されたテキスト生成モデルを読み込みます。

import vertexai
from vertexai.preview.language_models import TextGenerationModel

model = TextGenerationModel.get_tuned_model(TUNED_MODEL_NAME)

TUNED_MODEL_NAME は、抽出されるモデルの修飾リソース名に置き換えます。この名前は、projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID の形式です。抽出されるモデルのモデル ID は、Vertex AI Model Registry で確認できます。

チューニングと評価の指標

モデルのチューニングとモデルの評価の指標を収集して報告するよう、モデルのチューニング ジョブを構成できます。その後で、Vertex AI TensorBoard を使用してこれらの指標を可視化できます。

モデル チューニングの指標

モデルのチューニング ジョブを構成して、chat-bisoncode-bisoncodechat-bisontext-bison のチューニング指標を収集できます。
  • /train_total_loss: トレーニング ステップでのチューニング データセットの損失。
  • /train_fraction_of_correct_next_step_preds: トレーニング ステップでのトークンの精度。1 回の予測は一連のトークンで構成されます。この指標は、チューニング用データセットのグラウンド トゥルースと比較したときに予測される、トークンの精度を測定します。
  • /train_num_predictions: トレーニング ステップで予測されるトークンの数。

モデル検証の指標

モデル評価の指標

モデルのチューニング ジョブを構成して、code-bisontext-bison について次の評価指標を収集できます。

  • /eval_total_loss: 評価ステップでの評価データセットの損失。
  • /eval_fraction_of_correct_next_step_preds: 評価ステップでのトークンの精度。1 回の予測は一連のトークンで構成されます。この指標は、評価データセットのグラウンド トゥルースと比較したときに予測される、トークンの精度を測定します。
  • /eval_num_predictions: 評価ステップで予測されるトークンの数。

指標の可視化は、モデルのチューニング ジョブの完了後に利用できます。チューニング ジョブの作成時に Vertex AI TensorBoard のインスタンス ID のみを指定し、評価データセットを指定しなかった場合、チューニング指標の可視化のみを使用できます。