このチュートリアルでは、Python SDK または curl を使用して REST API を使用して Gemini API チューニング サービスを開始する方法について説明します。これらの例では、Gemini API テキスト生成サービスの背後にあるテキストモデルをチューニングする方法を示します。
ai.google.dev で表示 | Colab ノートブックを試す | GitHub でノートブックを表示 |
制限事項
モデルをチューニングする前に、次の制限事項に注意してください。
ファインチューニング データセット
Gemini 1.5 Flash のファインチューニング データセットには次の制限があります。
- 1 つの例あたりの最大入力サイズは 40,000 文字です。
- 1 つの例あたりの出力の最大サイズは 5,000 文字です。
- 入出力ペアの例のみがサポートされます。チャット形式のマルチターンの会話はサポートされていません。
チューニングされたモデル
チューニング済みモデルには次の制限があります。
- チューニング済みの Gemini 1.5 Flash モデルの入力上限は 40,000 文字です。
- JSON モードは、チューニング済みモデルではサポートされていません。
- テキスト入力のみがサポートされています。
始める前に: プロジェクトと API キーを設定する
Gemini API を呼び出す前に、プロジェクトを設定して API キーを構成する必要があります。
チューニング済みモデルを一覧表示する
既存のチューニング済みモデルは、tunedModels.list
メソッドで確認できます。
import google.generativeai as genai
for model_info in genai.list_tuned_models():
print(model_info.name)
チューニング済みモデルの作成
チューニング済みモデルを作成するには、tunedModels.create
メソッドでデータセットをモデルに渡す必要があります。
この例では、シーケンスの次の番号を生成するようにモデルをチューニングします。たとえば、入力が 1
の場合、モデルは 2
を出力します。入力が one hundred
の場合、出力は one hundred one
になります。
import google.generativeai as genai
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()
モデルを試す
tunedModels.generateContent
メソッドを使用して、チューニング済みモデルの名前を指定し、そのパフォーマンスをテストできます。
import google.generativeai as genai
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."})
モデルを削除する
不要になったモデルを削除して、チューニング済みモデルのリストをクリーンアップできます。モデルを削除するには、tunedModels.delete
メソッドを使用します。チューニング ジョブをキャンセルした場合は、パフォーマンスが予測できない可能性があるため、削除することをおすすめします。
genai.delete_tuned_model("tunedModels/my-increment-model")