ファインチューニングのチュートリアル

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

このチュートリアルは、Gemini API のチューニングを始めるのに役立ちます。 gcloud SDK または REST API を使用して、 curl。例は、テキストモデルを Google Cloud の背後にある Gemini API テキスト生成サービスを使用しています。

ai.google.dev で表示 Google Colab で実行 GitHub のソースを表示

認証を設定する

Gemini API を使用すると、独自のデータでモデルをチューニングできます。お客様のデータとは チューニングされたモデルには、API キーが提供できるよりも厳格なアクセス制御が必要です。

このチュートリアルを実行する前に、アカウントに OAuth を設定する必要があります。 プロジェクトです。

チューニング済みモデルを一覧表示する

既存のチューニング済みモデルは genai.list_tuned_models で確認できます。 メソッドを呼び出します。

for model_info in genai.list_tuned_models():
    print(model_info.name)

チューニング済みモデルの作成

チューニング済みモデルを作成するには、データセットを genai.create_tuned_model メソッドを使用します。これを行うには、 またはファイルからデータフレームにインポートして、 メソッドに渡します。

この例では、入力シーケンスの次の数値を生成するようにモデルをチューニングし、 あります。たとえば、入力が 1 の場合、モデルは 2 を出力します。もし 入力が one hundred の場合、出力は one hundred one になります。

import time

base_model = "models/gemini-1.5-flash-001-tuning"
training_data = [
    {"text_input": "1", "output": "2"},
    # ... more examples ...
    # ...
    {"text_input": "seven", "output": "eight"},
]
operation = genai.create_tuned_model(
    # You can use a tuned model here too. Set `source_model="tunedModels/..."`
    display_name="increment",
    source_model=base_model,
    epoch_count=20,
    batch_size=4,
    learning_rate=0.001,
    training_data=training_data,
)

for status in operation.wait_bar():
    time.sleep(10)

result = operation.result()
print(result)
# # You can plot the loss curve with:
# snapshots = pd.DataFrame(result.tuning_task.snapshots)
# sns.lineplot(data=snapshots, x='epoch', y='mean_loss')

model = genai.GenerativeModel(model_name=result.name)
result = model.generate_content("III")
print(result.text)  # IV

エポック数、バッチサイズ、学習率の最適な値は、 ユースケースの制約に合わせて調整できます。詳細情報 これらの値については、 高度なチューニング設定ハイパーパラメータ

モデルのチューニングには時間がかかることがあるため、この API は 完了する必要があります。代わりに google.api_core.operation.Operation を返します。 このオブジェクトを使用すると、チューニング ジョブのステータスを確認したり、 結果を確認します。

チューニング済みモデルはすぐにチューニング済みモデルのリストに追加されますが、 ステータスが「作成中」モデルのチューニングが行われます。

チューニングの進行状況を確認する

wait_bar() を使用して、チューニング オペレーションの進行状況を確認できます。 メソッド:

for status in operation.wait_bar():
    time.sleep(10)

operation.metadata を使用して、チューニング ステップの合計数を確認することもできます。 operation.update() を使用して、オペレーションのステータスを更新します。

チューニング ジョブは、cancel() メソッドを使用していつでもキャンセルできます。

operation.cancel()

モデルを試す

genai.generate_text メソッドを使用して、モデルの名前を指定できます。 モデルのパフォーマンスをテストします

model = genai.GenerativeModel(model_name="tunedModels/my-increment-model")
result = model.generate_content("III")
print(result.text)  # "IV"

説明を更新する

チューニング済みモデルの説明は、 genai.update_tuned_model メソッドを使用します。

genai.update_tuned_model('tunedModels/my-increment-model', {"description":"This is my model."})

モデルを削除する

不要になったモデルを削除することで、チューニング済みモデルリストをクリーンアップできます。 genai.delete_tuned_model メソッドを使用して、モデルを削除します。キャンセルした場合 パフォーマンスが低下する可能性があるため、それらのジョブを 困難です。

genai.delete_tuned_model("tunedModels/my-increment-model")