使用 Gemini API 进行微调

少样本提示等提示设计策略有时可能无法生成 结果。微调是一个可以提高模型预测准确率的过程, 或帮助模型遵循特定的输出结果 说明不够充分,并且您有一组示例时的要求 所需的输出结果

本页面从概念上简要介绍了如何微调背后的文本模型, Gemini API 文本服务。准备好开始调优时,请尝试 微调教程。如需更笼统地了解如何针对特定用例自定义 LLM,请参阅机器学习速成课程中的 LLM:微调、提炼和提示工程

微调的工作原理

微调的目标是进一步提高模型的性能, 您的特定任务。通过为模型提供训练 数据集包含该任务的许多示例。对于小众任务 通过在中等程度上调优模型来显著提升模型性能 数量。这种模型微调有时也称为监督式微调,以便与其他类型的微调区分开来。

训练数据应进行结构化处理,以提示输入和预期回答输出为示例。您还可以直接使用示例数据对模型进行调参 。目标是让模型模仿期望的行为 来说明该行为或任务。

运行调优作业时,模型会学习其他参数,以便对所需信息进行编码以执行所需任务或学习预期行为。这些参数随后可在推断时使用。此 调优作业是一种新模型,它实际上是新 和原始模型之间的差异。

准备数据集

在开始微调之前,您需要一个用于调整模型的数据集。对于 以获得最佳性能,则数据集中的样本应具有较高的质量, 并且代表真实的输入和输出。

格式

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

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

再举一个例子,这是应用的 Python 训练数据, 生成序列中的下一个数字:

training_data = [
  {"text_input": "1", "output": "2"},
  {"text_input": "3", "output": "4"},
  {"text_input": "-3", "output": "-2"},
  {"text_input": "twenty two", "output": "twenty three"},
  {"text_input": "two hundred", "output": "two hundred one"},
  {"text_input": "ninety nine", "output": "one hundred"},
  {"text_input": "8", "output": "9"},
  {"text_input": "-98", "output": "-97"},
  {"text_input": "1,000", "output": "1,001"},
  {"text_input": "10,100,000", "output": "10,100,001"},
  {"text_input": "thirteen", "output": "fourteen"},
  {"text_input": "eighty", "output": "eighty one"},
  {"text_input": "one", "output": "two"},
  {"text_input": "three", "output": "four"},
  {"text_input": "seven", "output": "eight"},
]

为数据集中的每个样本添加提示或序言也有帮助 来提升经过调参的模型的性能。请注意,如果数据集中包含提示或前言,则在推理时,对经过调优的模型的提示中也应包含这些内容。

限制

注意:Gemini 1.5 Flash 数据集微调具有以下特征 限制:

  • 每个样本的输入大小上限为 40,000 个字符。
  • 每个样本的输出大小上限为 5,000 个字符。

训练数据大小

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

任务 数据集中的示例数量
分类 超过 100
摘要 100 至 500 人以上
文档搜索 超过 100

上传您的调参数据集

数据是使用 API 或通过在 Google AI Studio 中上传的文件内嵌传递的。

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

如需使用 cURL 调用 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 的 My Library 标签页或在metadata Gemini API。

排查错误

本部分包含一些提示,介绍了如何解决您在 创建经过调整的模型。

身份验证

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

要为 Python 配置 OAuth 凭据,请参阅 OAuth 设置教程

已取消的模型

在微调作业完成之前,您可以随时取消该作业。不过, 取消模型的推理性能不可预测,尤其是当 调参作业在训练的早期阶段就被取消了。如果您取消了订阅,原因是: 想要在较早的周期停止训练,则应创建新的调优 并将周期设置为较低的值。

经调参的模型的限制

注意:已调参模型具有以下限制:

  • 经过优化的 Gemini 1.5 Flash 模型的输入字符数上限为 4 万个字符。
  • 经调参的模型不支持 JSON 模式。
  • 仅支持文本输入。

后续步骤

请参阅微调教程,开始使用: