少样本提示等提示设计策略有时可能无法生成 结果。微调是一个可以提高模型预测准确率的过程, 或帮助模型遵循特定的输出结果 说明不够充分,并且您有一组示例时的要求 所需的输出结果
本页面从概念上简要介绍了如何微调 Gemini API 文本服务背后的文本模型。准备好开始调优时,请尝试 微调教程。如需更全面地了解如何针对特定用例自定义 LLM,请参阅机器学习速成课程中的 LLM:微调、提炼和提示工程。
微调的工作原理
微调的目标是进一步提高模型针对特定任务的效果。通过为模型提供训练 数据集包含该任务的许多示例。对于特定领域的任务,您可以使用适量样本调优模型,以此来显著改善模型性能。这种模型微调有时也称为监督式微调,以便与其他类型的微调区分开来。
您的训练数据应构建为包含提示输入和 预期响应输出。您还可以直接在 Google AI Studio 中使用示例数据来调优模型。目标是让模型模仿期望的行为 来说明该行为或任务。
当您运行调参作业时,模型会学习帮助它的其他参数 对必要的信息进行编码,以执行您想要的任务或了解 行为这些参数随后可在推断时使用。此 调优作业是一个新模型,它实际上是新模型 和原始模型之间的差异。
准备数据集
在开始微调之前,您需要一个数据集来调优模型。为了获得最佳性能,数据集中的示例应具有高质量、多样化且能代表真实的输入和输出。
格式
数据集中包含的样本应与您的预期生产流量相匹配。如果您的数据集包含特定的格式、关键字、说明或信息,则生产数据应以相同方式设置格式并包含相同的说明。
例如,如果数据集中的样本包含 "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 进行微调的快速入门。
要使用 c网址 调用 REST API,请向
training_data
参数。如需开始使用,请参阅使用 cURL 进行调整的快速入门。
高级调参设置
创建调整作业时,您可以指定以下高级设置:
- 周期:对整个训练集进行一次完整的训练遍历,每次训练时 已经过一次处理。
- 批次大小:一次训练迭代中使用的样本集。通过 批次大小决定了一个批次中的样本数量。
- 学习速率:一个浮点数,告知算法如何 调整每次迭代的模型参数。例如, 将学习速率设为 0.3,就能将权重和偏差调整三倍 这比 0.1 的学习速率要大得多。高学习速率和低学习速率 各有各的利弊,应根据您的用例进行调整。
- 学习速率调节系数:速率调节系数用于修改模型的原始学习速率。值为 1,表示 模型。值大于 1 时,学习速率会提高;值大于 1 0 则降低学习速率。
建议的配置
下表显示了对基础模型进行微调的建议配置:
超参数 | 默认值 | 建议的调整 |
---|---|---|
纪元 | 5 |
如果损失在 5 个 epoch 之前开始趋于稳定,请使用较小的值。 如果损失收敛且似乎没有趋于稳定,请使用较高的值。 |
批次大小 | 4 | |
学习速率 | 0.001 | 对于较小的数据集,请使用较小的值。 |
损失曲线显示的是模型预测结果与理想值的偏差
训练样本中的预测。理想情况下,您应在曲线达到平台期之前,在曲线的最低点停止训练。例如:
下面的图表显示了大约第 4-6 个纪元的损失曲线趋于平稳,
您可以将 Epoch
参数设置为 4,并获得相同的性能。
检查调参作业状态
您可以在 Google AI Studio 的我的库标签页中检查调优作业的状态,也可以在 Gemini API 中使用经过调优的模型的 metadata
属性检查其状态。
排查错误
本部分包含一些提示,介绍了如何解决您在 创建经过调整的模型。
身份验证
使用 API 和客户端库进行调整需要进行身份验证。您可以 使用 API 密钥(推荐)或使用 OAuth 设置身份验证 凭据。有关设置 API 密钥的文档,请参阅 设置 API 密钥。
如果您看到 'PermissionDenied: 403 Request had insufficient authentication
scopes'
错误,则可能需要使用 OAuth 设置用户身份验证
凭据。如需为 Python 配置 OAuth 凭据,请参阅我们的 OAuth 设置教程。
已取消的模型
在微调作业完成之前,您可以随时取消该作业。不过, 取消模型的推理性能不可预测,尤其是当 调参作业在训练的早期阶段就被取消了。如果您取消了订阅,原因是: 想要在较早的周期停止训练,则应创建新的调优 并将周期设置为较低的值。
经调参的模型的限制
注意:经过优化的模型具有以下限制:
- 经调参的 Gemini 1.5 Flash 模型的输入限制为 40,000 个字符。
- 经过调优的模型不支持 JSON 模式。
- 仅支持文本输入。
后续步骤
开始学习微调教程: