モデルのチューニングは、Gemini が特定のタスクをより高い適合率と精度で実行するように適応させるための重要なプロセスです。モデルのチューニングは、特定のダウンストリーム タスクのサンプルセットが含まれるトレーニング データセットをモデルに提供することで行われます。
Gemini チューニング API は、次のユースケースで使用します。
サポートされているモデル:
教師ありファインチューニングは、次の Gemini モデルで使用できます。
モデル | バージョン |
---|---|
Gemini 1.5 Pro | gemini-1.5-pro-002 |
Gemini 1.5 Flash | gemini-1.5-flash-002 |
Gemini 1.0 Pro | gemini-1.0-pro-002 |
構文の例
モデルをチューニングする構文。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs \ -d '{ "baseModel": "...", "supervisedTuningSpec" : { ... "hyper_parameters": { ... }, }, "tunedModelDisplayName": "", }'
パラメータ リスト
実装の詳細については、例をご覧ください。
リクエスト本文
リクエスト本文には、データと次のパラメータが含まれます。
パラメータ | |
---|---|
|
省略可: チューニングする基盤モデルの名前。サポートされている値は |
|
|
supervisedTuningSpec
パラメータ | |
---|---|
|
トレーニング データセットの Cloud Storage URI。データセットは JSONL ファイル形式でなければなりません。最適な結果を得るには、少なくとも 100~500 個のサンプルを含めます。詳細については、教師ありチューニング データセットについてをご覧ください。 |
|
省略可: 検証データセットの Cloud Storage URI。データセットは JSONL ファイル形式にする必要があります。データセットには最大 256 個の例を含めることができます。このファイルを指定すると、ファインチューニング中に検証指標を定期的に生成するためにデータが使用されます。詳細については、教師ありチューニング データセットについてをご覧ください。 |
|
省略可: トレーニング中にモデルがトレーニング データセット全体に対して行った完全なパスの数。 |
|
省略可: デフォルトの学習率を調整するための乗数。 |
|
省略可: チューニング用のアダプタのサイズ。 |
|
省略可:
|
AdapterSize
チューニング ジョブのアダプタのサイズ。
パラメータ | |
---|---|
|
アダプタサイズ未指定。 |
|
アダプタサイズ 1。 |
|
アダプタサイズ 4。 |
|
アダプタサイズ 8。 |
|
アダプタサイズ 16。 |
例
教師ありチューニング ジョブを作成する
テキストモデルの教師ありチューニング ジョブは、Vertex AI SDK for Python を使用するか、POST リクエストを送信して作成できます。
基本的なユースケース
基本的なユースケースでは、baseModel
と training_dataset_uri
の値のみを設定します。他のすべてのパラメータはデフォルト値を使用します。
モデルのチューニング ジョブを作成するには、tuningJobs.create
メソッドを使用して POST リクエストを送信します。一部のパラメータは、すべてのモデルでサポートされているわけではないことに注意してください。チューニングするモデルに適用可能なパラメータのみを含めるようにしてください。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : 実際のプロジェクト ID。TUNING_JOB_REGION : チューニング ジョブを実行するリージョン。これは、チューニング済みのモデルをアップロードするデフォルトのリージョンでもあります。BASE_MODEL : チューニングする基盤モデルの名前。サポートされる値:gemini-1.5-pro-002
、gemini-1.5-flash-002
、gemini-1.0-pro-002
。TRAINING_DATASET_URI : トレーニング データセットの Cloud Storage URI。データセットは JSONL ファイル形式でなければなりません。最適な結果を得るには、少なくとも 100~500 個のサンプルを含めます。詳細については、教師ありチューニング データセットについてをご覧ください。
HTTP メソッドと URL:
POST https://TUNING_JOB_REGION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs
リクエストの本文(JSON):
{ "baseModel": "BASE_MODEL ", "supervisedTuningSpec" : { "training_dataset_uri": "TRAINING_DATASET_URI " }, }
リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を 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://TUNING_JOB_REGION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs"
リクエスト本文を 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://TUNING_JOB_REGION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{ "name": "projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs/TUNING_JOB_ID ", "createTime":CREATE_TIME , "updateTime":UPDATE_TIME , "status": "STATUS ", "supervisedTuningSpec": { "training_dataset_uri": "TRAINING_DATASET_URI ", "validation_dataset_uri": "VALIDATION_DATASET_URI ", "hyper_parameters": { "epoch_count":EPOCH_COUNT , "learning_rate_multiplier":LEARNING_RATE_MULTIPLIER }, }, "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME " }
上級者向けのユースケース
上級者向けのユースケースは基本的なユースケースを拡張したものですが、オプションの hyper_parameters
(epoch_count
、learning_rate_multiplier
、adapter_size
など)の値も設定します。
モデルのチューニング ジョブを作成するには、tuningJobs.create
メソッドを使用して POST リクエストを送信します。一部のパラメータは、すべてのモデルでサポートされているわけではないことに注意してください。チューニングするモデルに適用可能なパラメータのみを含めるようにしてください。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : 実際のプロジェクト ID。TUNING_JOB_REGION : チューニング ジョブを実行するリージョン。これは、チューニング済みのモデルをアップロードするデフォルトのリージョンでもあります。BASE_MODEL : チューニングする基盤モデルの名前。サポートされている値:gemini-1.5-pro-002
、gemini-1.5-flash-002
、gemini-1.0-pro-002
。TRAINING_DATASET_URI : トレーニング データセットの Cloud Storage URI。データセットは JSONL ファイル形式でなければなりません。最適な結果を得るには、少なくとも 100~500 個のサンプルを含めます。詳細については、教師ありチューニング データセットについてをご覧ください。VALIDATION_DATASET_URI : 省略可。検証データセット ファイルの Cloud Storage URI。EPOCH_COUNT : 省略可。トレーニング中にモデルがトレーニング データセット全体に対して行った完全なパスの数。推奨値を使用する場合は、未設定のままにします。ADAPTER_SIZE 省略可: チューニング ジョブに使用するアダプタのサイズ。 チューニング ジョブのアダプタのサイズは、トレーニング可能なパラメータの数に影響します。アダプタサイズが大きいほど、モデルはより複雑なタスクを学習できますが、より大きなトレーニング データセットと長いトレーニング時間が必要になります。LEARNING_RATE_MULTIPLIER : 省略可。推奨学習率に適用する乗数。推奨値を使用する場合は、未設定のままにします。TUNED_MODEL_DISPLAYNAME : 省略可。チューニングされたモデルの表示名。設定されていない場合は、ランダムな名前が生成されます。
HTTP メソッドと URL:
POST https://TUNING_JOB_REGION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs
リクエストの本文(JSON):
{ "baseModel": "BASE_MODEL ", "supervisedTuningSpec" : { "trainingDatasetUri": "TRAINING_DATASET_URI ", "validationDatasetUri": "VALIDATION_DATASET_URI ", "hyperParameters": { "epochCount":EPOCH_COUNT , "adapterSize": "ADAPTER_SIZE ", "learningRateMultiplier":LEARNING_RATE_MULTIPLIER }, }, "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME " }
リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を 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://TUNING_JOB_REGION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs"
リクエスト本文を 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://TUNING_JOB_REGION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{ "name": "projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs/TUNING_JOB_ID ", "createTime":CREATE_TIME , "updateTime":UPDATE_TIME , "status": "STATUS ", "supervisedTuningSpec": { "trainingDatasetUri": "TRAINING_DATASET_URI ", "validationDatasetUri": "VALIDATION_DATASET_URI ", "hyperParameters": { "epochCount":EPOCH_COUNT , "adapterSize": "ADAPTER_SIZE ", "learningRateMultiplier":LEARNING_RATE_MULTIPLIER }, }, "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME " }
チューニング ジョブを一覧表示する
現在のプロジェクトのチューニング ジョブのリストを表示するには、Vertex AI SDK for Python を使用するか、GET リクエストを送信します。
モデルのチューニング ジョブを作成するには、tuningJobs.create
メソッドを使用して POST リクエストを送信します。一部のパラメータは、すべてのモデルでサポートされているわけではないことに注意してください。チューニングするモデルに適用可能なパラメータのみを含めるようにしてください。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : 実際のプロジェクト ID。TUNING_JOB_REGION : チューニング ジョブを実行するリージョン。これは、チューニング済みのモデルをアップロードするデフォルトのリージョンでもあります。
HTTP メソッドと URL:
GET https://TUNING_JOB_REGION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs
リクエストを送信するには、次のいずれかのオプションを選択します。
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs"
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{ "tuning_jobs": [TUNING_JOB_1 ,TUNING_JOB_2 , ... ] }
チューニング ジョブの詳細を取得する
チューニング ジョブの詳細を取得するには、Vertex AI SDK for Python を使用するか、GET リクエストを送信します。
モデルのチューニング ジョブのリストを表示するには、tuningJobs.get
メソッドを使用して GET リクエストを送信し、TuningJob_ID
を指定します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : 実際のプロジェクト ID。TUNING_JOB_REGION : チューニング ジョブを実行するリージョン。これは、チューニング済みのモデルをアップロードするデフォルトのリージョンでもあります。TUNING_JOB_ID : チューニング ジョブの ID。
HTTP メソッドと URL:
GET https://TUNING_JOB_REGION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs/TUNING_JOB_ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs/TUNING_JOB_ID "
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs/TUNING_JOB_ID " | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{ "name": "projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs/TUNING_JOB_ID ", "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME ", "createTime":CREATE_TIME , "endTime":END_TIME , "tunedModel": { "model": "projects/PROJECT_ID /locations/TUNING_JOB_REGION /models/MODEL_ID ", "endpoint": "projects/PROJECT_ID /locations/TUNING_JOB_REGION /endpoints/ENDPOINT_ID " }, "experiment": "projects/PROJECT_ID /locations/TUNING_JOB_REGION /metadataStores/default/contexts/EXPERIMENT_ID ", "tuning_data_statistics": { "supervisedTuningDataStats": { "tuninDatasetExampleCount": "TUNING_DATASET_EXAMPLE_COUNT ", "totalTuningCharacterCount": "TOTAL_TUNING_CHARACTER_COUNT ", "tuningStepCount": "TUNING_STEP_COUNT " } }, "status": "STATUS ", "supervisedTuningSpec" : { "trainingDatasetUri": "TRAINING_DATASET_URI ", "validationDataset_uri": "VALIDATION_DATASET_URI ", "hyperParameters": { "epochCount":EPOCH_COUNT , "learningRateMultiplier":LEARNING_RATE_MULTIPLIER } } }
チューニング ジョブをキャンセルする
チューニング ジョブをキャンセルするには、Vertex AI SDK for Python を使用するか、POST リクエストを送信します。
モデルのチューニング ジョブのリストを表示するには、tuningJobs.cancel
メソッドを使用して GET リクエストを送信し、TuningJob_ID
を指定します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : 実際のプロジェクト ID。TUNING_JOB_REGION : チューニング ジョブを実行するリージョン。これは、チューニング済みのモデルをアップロードするデフォルトのリージョンでもあります。TUNING_JOB_ID : チューニング ジョブの ID。
HTTP メソッドと URL:
POST https://TUNING_JOB_REGION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs/TUNING_JOB_ID :cancel
リクエストを送信するには、次のいずれかのオプションを選択します。
次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://TUNING_JOB_REGION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs/TUNING_JOB_ID :cancel"
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/TUNING_JOB_REGION /tuningJobs/TUNING_JOB_ID :cancel" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{}
次のステップ
詳細なドキュメントについては、以下をご覧ください。