使用 Gemini API 进行微调

少样本提示等提示设计策略不一定总能产生您所需的结果。微调是一个过程,可以提高模型在特定任务中的性能,或帮助模型在指令不足且您有一组示例来演示所需的输出时满足特定的输出要求。

本页将介绍如何微调 Gemini API 文本服务背后的文本模型。

微调的工作原理

微调的目标是进一步提高模型针对特定任务的性能。微调通过为模型提供包含许多任务示例的训练数据集来实现。对于特定领域任务,您可以使用适量样本调整模型,以此来显著提高模型的效果。

您的训练数据应采用示例结构,并包含提示输入和预期响应输出。您还可以直接在 Google AI Studio 中使用示例数据对模型进行调参。其目标是,通过提供许多说明该行为或任务的示例,教模型模仿期望的行为或任务。

当您运行调整作业时,模型会学习其他参数,这些参数有助于对执行所需任务或学习所需行为所需的必要信息进行编码。这些参数随后可在推断时使用。调整作业的输出是新模型,它实际上是新学习的参数和原始模型的组合。

准备数据集

在开始微调之前,您需要一个用于调整模型的数据集。为获得最佳性能,数据集中的样本应该是高质量、多样化并且能够代表真实输入和输出。

格式

数据集中包含的样本应与您的预期生产流量相匹配。如果您的数据集包含特定的格式、关键字、说明或信息,则生产数据应以相同方式设置格式并包含相同的说明。

例如,如果数据集中的样本包含 "question:""context:",则生产流量的格式也应设置为包含 "question:""context:",其顺序与在数据集样本中的显示顺序相同。如果您排除上下文,模型将无法识别该模式,即使确切的问题出现在数据集内的样本中也是如此。

为数据集中的每个样本添加提示或前言也有助于提高经调参模型的性能。请注意,如果您的数据集中包含提示或前导,则在推理时也应将其包含在针对已调参模型的提示中。

训练数据大小

只需使用 20 个样本即可微调模型。其他数据通常可以提高响应质量。您应该以 100 到 500 个样本为目标,具体取决于您的应用。下表显示了针对各种常见任务微调文本模型的建议数据集大小:

任务 数据集中的示例数量
分类 100 多个
摘要 100-500 人以上
文档搜索 100 多个

上传您的调参数据集

数据通过使用 API 以内嵌方式传递,或通过在 Google AI Studio 中上传的文件进行传递。

点击 Import 按钮并按照对话框的说明从文件导入数据,或选择带有示例的结构化提示以作为调整数据集导入。

客户端库

如需使用客户端库,请在 createTunedModel 调用中提供数据文件。文件大小上限为 4 MB。如需开始使用,请参阅使用 Python 进行微调的快速入门

cURL

如需使用 c网址 调用 REST API,请向 training_data 参数提供 JSON 格式的训练示例。如需开始使用,请参阅使用 c网址 调参快速入门

高级调参设置

创建调优作业时,您可以指定以下高级设置:

  • 周期:对整个训练集进行一次完整训练,以便每个样本都只处理一次。
  • 批次大小:一次训练迭代中使用的样本集。批次大小决定了一个批次中的样本数。
  • 学习速率:一个浮点数,告知算法在每次迭代时调整模型参数的幅度。例如,0.3 的学习速率调整权重和偏差的能力是 0.1 的三倍。高学习速率和低学习速率各有利弊,应根据您的使用场景进行调整。
  • 学习速率调节系数:速率调节系数会修改模型的原始学习速率。值为 1 表示使用模型的原始学习速率。大于 1 的值会增加学习速率,而 1 到 0 之间的值会降低学习速率。

下表显示了对基础模型进行微调的推荐配置:

超参数 默认值 建议的调整
纪元 5

如果损失在 5 个周期之前开始趋于稳定,请使用较小的值。

如果损失收敛且似乎没有趋于稳定,请使用较高的值。

批次大小 4
学习速率 0.001 对于较小的数据集,请使用较小的值。

损失曲线显示每个周期后模型的预测结果与训练示例中理想预测结果的偏差。理想情况下,您希望在曲线达到稳定状态之前,在曲线的最低点停止训练。例如,下图显示了损失曲线在周期 4-6 左右达到稳定状态,这意味着,即使将 Epoch 参数设置为 4,仍然可以获得相同的性能。

显示模型的损失曲线的折线图。该线条在第一个周期和第二个周期之间达到峰值,然后急剧下降到几乎 0,并在三个周期后趋于平稳。

检查调参作业状态

您可以在 Google AI Studio 的我的库标签页下查看调优作业的状态,也可以在 Gemini API 中使用已调参模型的 metadata 属性。

排查错误

本部分包含有关如何解决创建经调整的模型时可能遇到的错误的提示。

身份验证

使用 API 和客户端库进行调参需要用户身份验证。仅一个 API 密钥是不够的。如果看到 'PermissionDenied: 403 Request had insufficient authentication scopes' 错误,则需要设置用户身份验证。

要配置适用于 Python 的 OAuth 凭据,请参阅 OAuth 设置教程

已取消的模型

在微调作业完成之前,您可以随时取消该作业。但是,取消模型的推理性能不可预测,尤其是在训练早期取消调优作业的情况下。如果您因为想在较早的周期停止训练而取消训练,则应创建新的调整作业并将周期设置为较低的值。

后续步骤