微调教程

本教程将帮助您开始使用 Python SDK 或 REST API(使用 curl)调用 Gemini API 调优服务。这些示例展示了如何调整后面的文本模型, Gemini API 文本生成服务。

在 ai.google.dev 上查看 试用 Colab 笔记本 在 GitHub 上查看笔记本

限制

在对模型进行调参之前,您应该了解以下限制:

微调数据集

针对 Gemini 1.5 Flash 微调数据集具有以下限制:

  • 每个示例的输入大小上限为 4 万个字符。
  • 每个样本的输出大小上限为 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)

创建已调参模型

如需创建经调整的模型,您需要将dataset传递给 在 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")