微调教程

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

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

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

设置身份验证

借助 Gemini API,您可以使用自己的数据对模型进行调参。由于是您的数据 经过调优的模型需要比 API 密钥提供更严格的访问权限控制。

在运行本教程之前,您需要为自己的 项目

列出经调参的模型

您可以使用 genai.list_tuned_models 检查现有的已调参模型 方法。

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

创建已调参模型

如需创建经调整的模型,您需要将数据集传递给 genai.create_tuned_model 方法结合使用。为此,您可以直接定义 调用中的输入和输出值,或者从文件导入到 DataFrame 中, 传递给该方法。

在此示例中,您将对模型进行调参,以生成 序列。例如,如果输入为 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")