コードモデルをチューニングする

コードモデルは、教師ありチューニングでチューニングできます。教師ありチューニングでは、推論時にコード生成モデルまたはコードチャット モデルから得ようとしている出力のタイプを示すラベル付きサンプルを使用します。コードモデルは、人間のフィードバックからの強化学習(RLHF)チューニングをサポートしていません。

コードモデルのチューニングを行うシナリオ

一般的な言語やコードパターンから逸脱する、ニッチな情報や具体的な情報をモデルに学習させる場合は、チューニングが必要になります。次に、code-bison モデルと codechat-bison モデルに指示できる内容の例を示します。

  • カスタム ライブラリのコードを生成する方法。カスタム ライブラリのラベル付きサンプルを使用してコードモデルをトレーニングすると、そのカスタム ライブラリに固有のコードを生成できます。また、そのコードについてチャットすることもできます。
  • コードベースを使用する方法。コードベースのラベル付きサンプルでモデルをトレーニングすると、コードベース内で独自の品質のコードを生成できます。また、そのコードについてチャットすることもできます。
  • プログラミング言語のバリアントを使用してコードを生成する方法。言語バリエーションのラベル付きサンプルを使用してコードモデルをトレーニングすると、その言語バリエーションの特定の規則と標準に準拠するコードを生成できます。また、そのコードについてチャットすることもできます。

これらのシナリオには、プロンプトの指示だけでは把握しづらいコード要件が含まれています。いくつか例を示します。

コード生成

  • このサンプル プロンプトとレスポンスは、特定のデータセットで動作するように code-bison をチューニングする際に役立ちます。

  • このサンプル プロンプトとレスポンスは、code-bison が Python を使用して商品を作成する際に役立ちます。

コードチャット

  • このサンプル プロンプトとレスポンスは、ユーザーが特定のデータセットの操作方法を学習できるように codechat-bison をチューニングする際に役立ちます。

  • このサンプル プロンプトとレスポンスは、チャット セッション中に Python を使用して製品を作成する方法をユーザーが学習できるように、codechat-bison をチューニングする際に役立ちます。

コードモデルのチューニング用データセットを準備する

コードモデルのチューニングに使用されるデータセットには、モデルに実行させるタスクに対応する例が含まれています。データセットは少なくとも 10 個のサンプルを含む必要があります。良好な結果を得るには、最低でも 500 個のサンプルを含めることをおすすめします。サンプルが多いほど良い結果が得られます。

コードモデルをチューニングするためのデータセット形式

コード生成モデルとコードチャット モデル用のチューニング データセットは、JSON Lines(JSONL)形式である必要があります。以下では、各モデルのデータセット形式とデータセットの例について説明します。

コード生成

コード生成モデルのチューニング用データセットは、JSON Lines(JSONL)形式で、各行に 1 つのチューニング サンプルが含まれている必要があります。それぞれのサンプルは、モデルへのプロンプトを含む input_text フィールドと、チューニング済みのモデルで生成が期待されるレスポンスのサンプルを含む output_text フィールドで構成されます。

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

コード生成モデル用チューニング データセットの例

このトピックでは、コード生成モデル用のチューニング データセットの例を 2 つ示します。以下は、コード生成のチューニング データセットの最初の例です。

{"input_text": "How to create a product in Python with the Cloud Vision API?", "output_text": "Use this
Python code sample to learn how to create a
product with the Cloud Vision API:\n\n```python\n\r\n\r\n\r\n\r\n\r\nfrom google.cloud import
vision\r\nfrom google.protobuf import field_mask_pb2 as field_mask\r\n\r\ndef
create_product(\r\n project_id, location, product_id, product_display_name,\r\n
product_category):\r\n \"\"\"Create one product.\r\n Args:\r\n project_id: Id of
the project.\r\n location: A compute region name.\r\n product_id: Id of the
product.\r\n product_display_name: Display name of the product.\r\n
product_category: Category of the product.\r\n \"\"\"\r\n client =
vision.ProductSearchClient()\r\n\r\n # A resource that represents Google Cloud
Platform location.\r\n location_path =
f\"projects/{project_id}/locations/{location}\"\r\n\r\n # Create a product with
the product specification in the region.\r\n # Set product display name and
product category.\r\n product = vision.Product(\r\n
display_name=product_display_name,\r\n
product_category=product_category)\r\n\r\n # The response is the product with
the `name` field populated.\r\n response = client.create_product(\r\n
parent=location_path,\r\n product=product,\r\n product_id=product_id)\r\n\r\n #
Display the product information.\r\n print('Product name:
{}'.format(response.name))\r\n```"}

以下は、コード生成のチューニング データセットの 2 番目の例です。

{"input_text": "python to retrieve the labels of a dataset for a given dataset
ID in BigQuery", "output_text": "Here is a Python code sample to retrieve the labels of a
dataset for a given dataset ID in BigQuery.\n\n```python\n\n from google.cloud import
bigquery\n\n # Construct a BigQuery client object.\n client =
bigquery.Client()\n\n # TODO(developer): Set dataset_id to the ID of the dataset
to fetch.\n # dataset_id = \"your-project.your_dataset\"\n\n dataset =
client.get_dataset(dataset_id) # Make an API request.\n\n # View dataset
labels.\n print(\"Dataset ID: {}\".format(dataset_id))\n print(\"Labels:\")\n if
dataset.labels:\n for label, value in dataset.labels.items():\n print(\"\\t{}:
{}\".format(label, value))\n else:\n print(\"\\tDataset has no labels
defined.\")\n```"}

コードチャット

コードチャット モデルのチューニング用データセットは、JSON Lines(JSONL)形式で、各行に 1 つのチューニング サンプルが含まれている必要があります。それぞれのサンプルは 1 つの messages フィールドで構成されています。これには、チューニング済みモデルによる生成が期待されるチャット プロンプトとレスポンスの例が含まれています。

コードチャット モデル用のデータセットのサンプルに含めることができる author フィールドの最大数は 10,000 です。この最大値は、すべてのサンプルのすべての messages に含まれている、すべての author フィールドの合計です。

コードチャット モデル用チューニング データセットの例

このトピックでは、コードチャット モデル用のチューニング データセットの例を 2 つ示します。以下は、コードチャットのチューニング データセットの最初の例です。

{"messages": [{"author":"user", "content": "How to create a product in
Python with Cloud Vision?"}, {"author": "assistant", "content": "Use this Python code sample to
learn how to create a product with Cloud Vision:\n\n```python\n\r\n\r\n\r\n\r\n\r\nfrom
google.cloud import vision\r\nfrom google.protobuf import field_mask_pb2 as
field_mask\r\n\r\ndef create_product(\r\n project_id, location, product_id,
product_display_name,\r\n product_category):\r\n \"\"\"Create one product.\r\n
Args:\r\n project_id: Id of the project.\r\n location: A compute region
name.\r\n product_id: Id of the product.\r\n product_display_name: Display name
of the product.\r\n product_category: Category of the product.\r\n \"\"\"\r\n
client = vision.ProductSearchClient()\r\n\r\n # A resource that represents
Google Cloud Platform location.\r\n location_path =
f\"projects/{project_id}/locations/{location}\"\r\n\r\n # Create a product with
the product specification in the region.\r\n # Set product display name and
product category.\r\n product = vision.Product(\r\n
display_name=product_display_name,\r\n
product_category=product_category)\r\n\r\n # The response is the product with
the `name` field populated.\r\n response = client.create_product(\r\n
parent=location_path,\r\n product=product,\r\n product_id=product_id)\r\n\r\n #
Display the product information.\r\n print('Product name:
{}'.format(response.name))\r\n```"}]}

以下は、コードチャットのチューニング データセットの 2 番目の例です。

{"messages": [{"author":"user", "content": "Python to retrieve the labels of a
dataset for a given dataset ID in BigQuery"}, {"author": "assistant", "content": "Here is a
Python code sample to retrieve the labels of a dataset for a given dataset
ID in BigQuery.\n\n```python\n\n from google.cloud import bigquery\n\n # Construct a
BigQuery client object.\n client = bigquery.Client()\n\n # TODO(developer): Set
dataset_id to the ID of the dataset to fetch.\n # dataset_id =
\"your-project.your_dataset\"\n\n dataset = client.get_dataset(dataset_id) #
Make an API request.\n\n # View dataset labels.\n print(\"Dataset ID:
{}\".format(dataset_id))\n print(\"Labels:\")\n if dataset.labels:\n for label,
value in dataset.labels.items():\n print(\"\\t{}: {}\".format(label, value))\n
else:\n print(\"\\tDataset has no labels defined.\")\n```"}]}

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

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

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

サンプルに手順を含める

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

手順を除外:

{
  "input_text": "Calculate the sum of a list of integers.",
  "output_text": "```python\nnums = [1, 2, 3]\ntotal_sum = sum(nums)\n```"
}

手順を含む:

{
  "input_text": "Write the code in Python: calculate the sum of a list of integers",
  "output_text": "```python\nnums = [1, 2, 3]\ntotal_sum = sum(nums)\n```"
}

チューニング用データセットを Cloud Storage にアップロードする

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

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

教師ありチューニング リージョンの設定

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

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

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

  • Vertex AI SDK を使用する場合は、チューニングするモデルを表すオブジェクトの tune_model メソッド(TextGenerationModel.tune_model メソッドなど)で tuning_job_location パラメータを使用して、パイプライン ジョブを実行するリージョンを指定できます。

  • 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 パラメータを使用して、チューニングされたモデルのアップロード先を指定します。モデル アップロード リージョンが指定されていない場合、チューニングされたモデルは、パイプライン ジョブ リージョンにアップロードされます。モデル アップロード リージョンの場合は、サポートされているパイプライン ジョブ リージョンとモデル アップロード リージョンのいずれかを使用できます。モデル アップロード リージョンは、次のいずれかの方法で指定できます。

  • Vertex AI SDK を使用する場合は、tuned_model_location パラメータは、チューニングしているモデルを表すオブジェクトの tune_model メソッド(例: TextGenerationModel.tune_modelメソッド)で指定されます。

  • 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、または Vertex AI SDK for Python を使用して作成できます。モデルのチューニング構成のガイダンスについては、推奨構成をご覧ください。

コード生成モデルのチューニング ジョブを作成する

以下は、Google Cloud コンソールまたは REST API コマンドを使用してコード生成モデルのチューニング ジョブを作成する方法を示しています。

REST

コード生成モデルのチューニング ジョブを作成するには、pipelineJobs メソッドを使用して POST リクエストを送信します。

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

  • PROJECT_ID: 実際のプロジェクト ID
  • TUNINGPIPELINE_DISPLAYNAME: pipelineJob の表示名。
  • OUTPUT_DIR: パイプライン アーティファクトの出力先となるバケットの URI。
  • MODEL_DISPLAYNAME: pipelineJob によってアップロード(作成)されたモデルの表示名。
  • DATASET_URI: データセット ファイルの URI。
  • EVAL_DATASET_URI: (省略可)バッチ予測と評価用の評価データセットを含む JSONL ファイルの URI。codechat-bison では、評価はサポートされていません。詳細については、コードモデルをチューニングするためのデータセット形式をご覧ください。評価データセットには 10~250 個のサンプルが必要です。
  • EVAL_INTERVAL: (省略可、デフォルト 20)各評価間のチューニング ステップの数。評価間隔はチャットモデルではサポートされていません。評価は評価データセット全体で実行されるため、評価間隔が短いほどチューニング時間が長くなります。たとえば、steps が 200 で EVAL_INTERVAL が 100 の場合、評価指標のデータポイントは 2 つのみになります。このパラメータを使用するには、evaluation_data_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 リージョンで行われます。
  • ENABLE_EARLY_STOPPING: (省略可、デフォルトは truebooleantrue に設定すると、評価の実行でモデルのパフォーマンス(予測されたトークンの正確性)に十分な改善が見られなかった場合、すべてのチューニング ステップが完了する前にチューニングが停止します。false の場合、すべてのチューニング ステップが完了するまでチューニングが続行されます。このパラメータを使用するには、evaluation_data_uri を設定する必要があります。早期停止の有効化は、チャットモデルではサポートされていません。
  • ENABLE_CHECKPOINT_SELECTION: truefalsedefault のいずれかにできる文字列値。true に設定すると、Vertex AI は、チューニング ジョブ中に作成されたすべてのチェックポイントから、最適なモデル評価パフォーマンスを持つチェックポイントを選択して返します。false に設定すると、チューニング ジョブ中に作成された最後のチェックポイントが返されます。各チェックポイントは、チューニング ジョブ中のモデルのスナップショットを参照します。
  • 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 の概要をご覧ください。
  • 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 です。

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",
      "evaluation_data_uri": "EVAL_DATASET_URI",
      "evaluation_interval": "EVAL_INTERVAL",
      "enable_early_stopping": "ENABLE_EARLY_STOPPING",
      "enable_checkpoint_selection": "ENABLE_CHECKPOINT_SELECTION",
      "tensorboard_resource_id": "TENSORBOARD_RESOURCE_ID",
      "location": "MODEL_UPLOAD_REGION",
      "accelerator_type": "ACCELERATOR_TYPE",
      "large_model_reference": "code-bison@002",
      "train_steps": STEPS,
      "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER
    }
  }
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-model/v3.0.0"
}

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

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 は切り捨てられています。

コンソール

Google Cloud コンソールを使用して教師ありチューニングでコード生成モデルまたはコードチャット モデルをチューニングするには、次の操作を行います。

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

    Vertex AI Studio に移動

  2. [チューニングと抽出] タブをクリックします。
  3. [ チューニング済みモデルを作成] をクリックします。
  4. [教師ありチューニング] をクリックします。
  5. モデルの詳細を構成します。
    • チューニング済みモデル名: チューニングされたモデルの名前を入力します。
    • ベースモデル: チューニングするモデルを選択します。
    • リージョン: パイプライン チューニング ジョブが実行されるリージョンとチューニングされたモデルがデプロイされるリージョンを選択します。
    • 作業ディレクトリ: モデルのチューニング時にアーティファクトが保存される Cloud Storage のロケーションを入力します。
  6. [詳細オプション] を開いて、詳細設定を構成します。
    • ステップをトレーニング: モデルのチューニングのために実行するステップ数を入力します。デフォルト値は 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 管理のサービス アカウントが使用されます。
  7. [続行] をクリックする
  8. データセット ファイルをアップロードする場合は、[ JSONL ファイルを Cloud Storage にアップロードする] を選択します。データセット ファイルがすでに Cloud Storage バケットにある場合、[Cloud Storage 上の既存の JSONL ファイル] を選択します。

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

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

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

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

  9. (省略可)チューニング済みモデルを評価するには、[モデル評価を有効にする] を選択して、モデル評価を構成します。
    • 評価データセット: (省略可)バッチ予測と評価用の評価データセットを含む 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 ID: (省略可)Vertex AI TensorBoard インスタンスの ID。Vertex AI TensorBoard インスタンスは、チューニング ジョブの完了後にテストを作成するために使用されます。Vertex AI TensorBoard インスタンスは、チューニング パイプラインと同じリージョンに存在する必要があります。
  10. [チューニングを開始] をクリックします。

Python

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

from __future__ import annotations

def tune_code_generation_model(
    project_id: str
) -> None:

    from google.auth import default
    import vertexai
    from vertexai.language_models import CodeGenerationModel

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

    # TODO(developer): Update and un-comment below lines
    # project_id = "PROJECT_ID"

    vertexai.init(project=project_id, location="us-central1", credentials=credentials)

    model = CodeGenerationModel.from_pretrained("code-bison@002")

    tuning_job = model.tune_model(
        training_data="gs://cloud-samples-data/ai-platform/generative_ai/headline_classification.jsonl",
        tuning_job_location="europe-west4",
        tuned_model_location="us-central1",
    )

    print(tuning_job._status)

    return model

コード生成モデルをチューニングする curl コマンドの例

PROJECT_ID=myproject
DATASET_URI=gs://my-gcs-bucket-uri/dataset
EVAL_DATASET_URI=gs://cloud-samples-data/vertex-ai/model-evaluation/eval_sample.jsonl
OUTPUT_DIR=gs://my-gcs-bucket-uri/output
ACCELERATOR_TYPE=GPU
LOCATION=us-central1

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/pipelineJobs?pipelineJobId=tune-large-model-$(date +%Y%m%d%H%M%S)" -d \
$'{
  "displayName": "'${PIPELINE_NAME}'",
  "runtimeConfig": {
    "gcsOutputDirectory": "'${OUTPUT_DIR}'",
    "parameterValues": {
      "project": "'${PROJECT_ID}'",
      "model_display_name": "The display name for your model in the UI",
      "dataset_uri": "'${DATASET_URI}'",
      "evaluation_data_uri:": "'${EVAL_DATASET_URI}'",
      "location": "'${LOCATION}'",
      "accelerator_type": "'${ACCELERATOR_TYPE}'",
      "large_model_reference": "code-bison@002",
      "learning_rate_multiplier": 1,
      "train_steps": 300
    }
  },
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-model/v3.0.0"
}'

コードチャット モデルのチューニング ジョブを作成する

以下は、Google Cloud コンソールまたは REST API コマンドを使用してコードチャット モデルのチューニング ジョブを作成する方法を示しています。

REST

コードチャット モデルのチューニング ジョブを作成するには、pipelineJobs メソッドを使用して POST リクエストを送信します。

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

  • PROJECT_ID: 実際のプロジェクト ID
  • TUNINGPIPELINE_DISPLAYNAME: pipelineJob の表示名。
  • OUTPUT_DIR: パイプライン アーティファクトの出力先となるバケットの 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 リージョンで行われます。
  • MODEL_DISPLAYNAME: pipelineJob によってアップロード(作成)されたモデルの表示名。
  • DATASET_URI: データセット ファイルの 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 の概要をご覧ください。
  • DEFAULT_CONTEXT: チューニング データセット内のすべてのチューニング サンプルに適用されるコンテキスト。サンプルで context フィールドを設定すると、デフォルトのコンテキストがオーバーライドされます。
  • 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 です。

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",
      "tensorboard_resource_id": "TENSORBOARD_RESOURCE_ID",
      "location": "MODEL_UPLOAD_REGION",
      "accelerator_type": "ACCELERATOR_TYPE",
      "large_model_reference": "codechat-bison@002",
      "default_context": "DEFAULT_CONTEXT",
      "train_steps": STEPS,
      "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER
    }
  },
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-chat-model/v3.0.0"
}

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

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 は切り捨てられています。

コンソール

Google Cloud コンソールを使用して教師ありチューニングでコード生成モデルまたはコードチャット モデルをチューニングするには、次の操作を行います。

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

    Vertex AI Studio に移動

  2. [チューニングと抽出] タブをクリックします。
  3. [ チューニング済みモデルを作成] をクリックします。
  4. [教師ありチューニング] をクリックします。
  5. モデルの詳細を構成します。
    • チューニング済みモデル名: チューニングされたモデルの名前を入力します。
    • ベースモデル: チューニングするモデルを選択します。
    • リージョン: パイプライン チューニング ジョブが実行されるリージョンとチューニングされたモデルがデプロイされるリージョンを選択します。
    • 作業ディレクトリ: モデルのチューニング時にアーティファクトが保存される Cloud Storage のロケーションを入力します。
  6. [詳細オプション] を開いて、詳細設定を構成します。
    • ステップをトレーニング: モデルのチューニングのために実行するステップ数を入力します。デフォルト値は 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 管理のサービス アカウントが使用されます。
  7. [続行] をクリックする
  8. データセット ファイルをアップロードする場合は、[ JSONL ファイルを Cloud Storage にアップロードする] を選択します。データセット ファイルがすでに Cloud Storage バケットにある場合、[Cloud Storage 上の既存の JSONL ファイル] を選択します。

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

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

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

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

  9. (省略可)チューニング済みモデルを評価するには、[モデル評価を有効にする] を選択して、モデル評価を構成します。
    • 評価データセット: (省略可)バッチ予測と評価用の評価データセットを含む 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 ID: (省略可)Vertex AI TensorBoard インスタンスの ID。Vertex AI TensorBoard インスタンスは、チューニング ジョブの完了後にテストを作成するために使用されます。Vertex AI TensorBoard インスタンスは、チューニング パイプラインと同じリージョンに存在する必要があります。
  10. [チューニングを開始] をクリックします。

コードチャット モデルをチューニングする curl コマンドの例

PROJECT_ID=myproject
DATASET_URI=gs://my-gcs-bucket-uri/dataset
OUTPUT_DIR=gs://my-gcs-bucket-uri/output
ACCELERATOR_TYPE=GPU
LOCATION=us-central1

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/pipelineJobs?pipelineJobId=tune-large-chat-model-$(date +%Y%m%d%H%M%S)" -d \
$'{
  "displayName": "'${PIPELINE_NAME}'",
  "runtimeConfig": {
    "gcsOutputDirectory": "'${OUTPUT_DIR}'",
    "parameterValues": {
      "project": "'${PROJECT_ID}'",
      "model_display_name": "your-model-display-name",
      "dataset_uri": "'${DATASET_URI}'",
      "location": "'${LOCATION}'",
      "large_model_reference": "codechat-bison@002",
      "train_steps": 300,
      "learning_rate_multiplier": 1,
      "encryption_spec_key_name": "projects/myproject/locations/us-central1/keyRings/sample-key/cryptoKeys/sample-key"
    }
  },
  "encryptionSpec": {
    "kmsKeyName": "projects/myproject/locations/us-central1/keyRings/sample-key/cryptoKeys/sample-key"
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-chat-model/v3.0.0"
}'

次の表に、タスクごとにコードモデルをチューニングするための推奨構成を示します。

タスク データセットのサンプル数 トレーニング ステップ
コード生成 500+ 200~1,000
コードチャット 500+ 200~1,000

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

チューニング済みモデルのリストを表示する

現在のプロジェクトでチューニング済みのコードモデルのリストを表示するには、Google Cloud コンソールまたは Vertex AI SDK for Python を使用します。

チューニング済みコードモデルのリストを表示する(コンソール)

Google Cloud コンソールでチューニング済みのコードチャット モデルとコード生成モデルを表示するには、[Vertex AI Model Registry] ページに移動します。

[Vertex AI Model Registry] に移動

チューニング済みのコード生成モデルのリストを表示する(SDK)

次のサンプルコードでは、Vertex AI SDK for Python を使用して、現在のプロジェクトでチューニング済みのコード生成モデルを一覧表示します。

import vertexai
from vertexai.preview.language_models import CodeGenerationModel

model = CodeGenerationModel.from_pretrained("code-bison@002").list_tuned_model_names()

チューニング済みのコードチャット モデルのリストを表示する(SDK)

次のサンプルコードでは、Vertex AI SDK for Python を使用して、現在のプロジェクトでチューニング済みのコードチャット モデルを一覧表示します。

import vertexai
from vertexai.preview.language_models import CodeChatModel

model = CodeChatModel.from_pretrained("codechat-bison@002").list_tuned_model_names()

チューニング済みモデルを読み込む

Vertex AI SDK for Python を使用して、チューニング済みのコードモデルを読み込むことができます。

チューニング済みのコード生成モデルを読み込む

次のサンプルコードでは、Vertex AI SDK for Python を使用して、チューニング済みのコード生成モデルを読み込みます。サンプルコードで、TUNED_MODEL_NAME はチューニング済みモデルの修飾リソース名に置き換えます。この名前は、projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID の形式です。チューニング済みモデルのモデル ID は、Vertex AI Model Registry で確認できます。

import vertexai
from vertexai.preview.language_models import CodeGenerationModel

model = CodeGenerationModel.get_tuned_model(TUNED_MODEL_NAME)

チューニング済みのコードチャット モデルを読み込む

次のサンプルコードでは、Vertex AI SDK for Python を使用して、チューニング済みのコードチャット モデルを読み込みます。

import vertexai
from vertexai.preview.language_models import CodeChatModel

model = CodeChatModel.get_tuned_model(TUNED_MODEL_NAME)

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

モデルのチューニングとモデルの評価の指標を収集して報告するよう、モデルのチューニング ジョブを構成できます。その後で、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 のみを指定し、評価データセットを指定しなかった場合、チューニング指標の可視化のみを使用できます。

割り当て

us-central1 のチューニング ジョブでは、8 つの A100 80 GB GPU を使用します。

europe-west4 のチューニング ジョブは、TPU v3 pod カスタムモデル トレーニング リソースの 64 コアを使用します。

割り当てが不足している場合、または Google Cloud プロジェクトで複数のチューニング ジョブを同時に実行する場合は、追加の割り当てをリクエストする必要があります。

  • us-central1 の場合は、us-central1 リージョンの Restricted image training Nvidia A100 80 GB GPUs per region のリクエストを 8 の倍数で送信します。

  • europe-west4 の場合は、europe-west4 リージョンの Restricted image training TPU V3 pod cores per region のリクエストを 64 の倍数で送信します。

次のステップ

  • その他のモデル、高度な機能、最大 8 時間のファイルの音声文字変換機能については、Speech-to-Text をご覧ください。