使用 RLHF 调整来调整文本模型

基于人类反馈的强化学习 (RLHF) 使用收集的人类反馈来调整模型。如果模型的输出较为复杂且难以描述,则建议使用 RLHF。人类反馈采用在不同输出选项之间进行选择的形式。这些选项提供比带标签的提示(由监督式调整使用)更好的数据来对生成难以描述的输出的模型进行调整。如果模型的输出难以定义,请考虑使用监督式调整来调整文本模型。

本页面详细介绍如何使用 RLHF 调整来调整文本模型。您可以了解哪些文本模型支持 RLHF 调整、如何创建数据集,以及如何使用 RLHF 调整来调整文本模型。此外,您还将了解如何查看和加载使用 RLHF 调整方法进行调整的模型。如需详细了解 Vertex AI 中的 RLHF 调整,请参阅 RLHF 模型调整

RLHF 模型调优工作流

Vertex AI 上的 RLHF 模型调整工作流包括以下步骤:

  1. 准备人类偏好数据集
  2. 准备提示数据集
  3. 将数据集上传到 Cloud Storage 存储桶。它们无需位于同一 Cloud Storage 存储桶。
  4. 创建 RLHF 模型调优作业

模型调整完成后,调整后的模型会部署到 Vertex AI 端点。端点的名称与调整后模型的名称相同。如果您想要创建新提示,则可以在 Vertex AI Studio 中选择调优后的模型。

支持的模型

以下文本模型支持使用 Vertex AI 上基于人类反馈的强化学习进行调优:

  • 文本生成基础模型 text-bison@002。如需了解详情,请参阅文本生成模型
  • 聊天生成基础模型 chat-bison@001。如需了解详情,请参阅聊天生成模型
  • t5-smallt5-larget5-xlt5-xxl Flan 文本到文本迁移 Transformer (Flan-T5) 模型。Flan-T5 模型可以进行微调,以执行文本分类、语言翻译和问答等任务。如需了解详情,请参阅 Flan-T5 检查点

以下文本模型支持将 RLHF 调优作为自行管理的 Vertex AI Pipelines 作业。

代码模型不支持 RLHF 调优。

准备 RLHF 调整数据集

RLHF 调整要求您准备两个数据集和一个可选数据集。所有数据集均采用 JSON 行 (JSONL) 格式,且需要上传到 Cloud Storage 存储桶。用于调整文本生成模型的数据集格式与用于调整文本聊天模型的数据集格式不同。

提示数据集

包含未加标签的提示的数据集。提示可以是来自偏好数据集的提示,也可以是不同的提示。提示数据集中的每一行都包含以下字段:

text-bison 数据集

文本生成数据集包含一个字段:

  • input_text - 包含提示的必填字段。

示例

{
  "input_text": "Create a description for Plantation Palms."
}

chat-bison 数据集

聊天生成数据集包含两个字段:

  • messages - 一组作者-内容对。author 字段指消息的作者,并交替设置为 userassistantcontent 字段是消息的内容。content 不能为空,并且第一个和最后一个 author 必须设置为 user

  • context-(可选)模型在响应提示时使用的其他上下文

示例

{
  "context": "You are a pirate dog named Captain Barktholomew.",
  "messages": [
    {
      "author": "user",
      "content": "Hi"
    },
    {
      "author": "assistant",
      "content": "Argh! What brings ye to my ship?"
    },
    {
      "author": "user",
      "content": "What's your name?"
    },
  ]
}

如需了解详情,您可以下载并查看此示例提示数据集

人类偏好数据集

人类偏好数据集包含人类的偏好。人类偏好数据集中的每一行都记录了呈现给人类的两个选项之间的偏好。我们建议人类偏好数据集包含 5,000 到 10,000 个样本。人类偏好数据集中的每一行都包含一个示例偏好,其中包含要调整的模型的提示数据集字段以及以下字段:

  • candidate_0candidate_1 - 每个字段都包含两个响应。人类通过选择他们偏好的两个响应中的一个来帮助调优模型。
  • choice - 包含一个整数,即 01,用于表示人类偏好哪个候选回复。0 表示人类选择 candidate_01 表示人类选择 candidate_1

人类偏好数据集中的行示例如下:

{"input_text": "Create a description for Plantation Palms.", "candidate_0": "Enjoy some fun in the sun at Gulf Shores.", "candidate_1": "A Tranquil Oasis of Natural Beauty.", "choice": 0}

如需了解详情,您可以下载并查看此示例人类偏好数据集

评估数据集(可选)

该数据集包含模型调整后用于预测的未加标签的提示。如果提供了评估数据集,则系统会在调整作业完成后对其执行推理。评估数据集的格式与提示数据集的格式相同。但是,评估数据集中的提示必须不同于提示数据集中的提示。

如需了解详情,您可以下载并查看此示例评估数据集

奖励模型

人类偏好数据集用于训练奖励模型。Vertex AI 会在 RLHF 调整期间创建并使用奖励模型。奖励模型是在客户租户项目的专用 Cloud Storage 存储桶中创建的。客户租户项目是客户独有的内部项目。您无法访问奖励模型,调整作业完成后,该模型会被删除。如需了解详情,请参阅租户项目

与生产数据保持一致

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

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

将调优数据集上传到 Cloud Storage

若要运行调优作业,您需要将一个或多个数据集上传到 Cloud Storage 存储桶。您可以创建新的 Cloud Storage 存储桶,也可以使用现有的存储桶来存储数据集文件。存储桶的区域无关紧要,但我们建议您使用您计划用于对模型调优的同一 Google Cloud 项目中的存储桶。

存储桶准备就绪后,将数据集文件上传到存储桶。

创建 RLHF 调整作业

您可以使用 Google Cloud 控制台或 Python 版 Vertex AI SDK 执行 RLHF 调整。

Python 版 Vertex AI SDK

如需了解如何使用 Python 版 Vertex AI SDK 通过 RLHF 调整模型,请使用 Colab、GitHub 或 Vertex AI Workbench 打开并运行以下笔记本:

Google Cloud 控制台

如需使用 RLHF 调整在 Google Cloud 控制台中调整文本模型,请执行以下步骤:

  1. 在 Google Cloud 控制台的“Vertex AI”部分,进入 Vertex AI Studio 页面。

    转到 Vertex AI Studio

  2. 点击调整并提炼标签页。
  3. 点击 创建经调整的模型
  4. 选择基于人类反馈的强化学习 (RLHF)
  5. 配置模型详情:
    • 调整模型名称:输入调整后模型的名称。
    • 基本模型:选择要调整的基础模型。
    • 区域:输入用于调整模型的区域。支持的区域为:
      • us-central1:使用 8 个 Nvidia A100 80GB GPU。
      • europe-west4:使用 64 个 TPU v3 Pod 核心。
    • 输出目录:输入调整模型时用于存储工件的 Cloud Storage 位置。
  6. 展开高级选项以配置高级设置。
    • 奖励训练步数:输入训练奖励模型时使用的步数。奖励模型用于调整模型。默认值为 1000。
    • 奖励学习速率调节系数:输入训练奖励模型时影响学习速率的浮点值。如需提高默认学习速率,请输入较高的值。如需降低默认学习速率,请输入较低的值。默认值为 1.0。
    • 强化训练步数:输入使用强化学习对基础模型进行调优时要执行的步数。默认值为 1000。
    • 强化学习速率调节系数:输入在训练强化模型时影响学习速率的浮点值。如需提高默认学习速率,请输入较高的值。如需降低默认学习速率,请输入较低的值。默认值为 1.0。
  7. 点击继续
  8. 人类偏好数据集中,上传或选择用于创建奖励模型的人类偏好数据集。如果要上传数据集文件,请选择  将 JSONL 文件上传到 Cloud Storage。如果您的数据集文件已在 Cloud Storage 存储桶中,请选择  Cloud Storage 上的现有 JSONL 文件

    上传 JSONL 文件

    • 选择 JSONL 文件中,点击浏览并选择数据集文件。
    • 数据集位置中,点击浏览并选择要存储数据集文件的 Cloud Storage 存储桶。

    使用现有的 JSONL 文件

    Cloud Storage 文件路径中,点击浏览,然后选择数据集文件所在的 Cloud Storage 存储桶。

  9. 提示数据集中,如果要上传数据集文件,请选择  将 JSONL 文件上传到 Cloud Storage。否则,如果您的提示数据集文件已在 Cloud Storage 存储桶中,请选择  Cloud Storage 上的现有 JSONL 文件

    上传 JSONL 文件

    • 选择 JSONL 文件中,点击浏览并选择数据集文件。
    • 数据集位置中,点击浏览并选择要存储数据集文件的 Cloud Storage 存储桶。

    使用现有的 JSONL 文件

    Cloud Storage 文件路径中,点击浏览,然后选择数据集文件所在的 Cloud Storage 存储桶。

  10. (可选)如需评估调整后的模型,请执行以下操作:
    1. 点击启用模型评估
    2. 评估数据集中,点击浏览
    3. 导航到包含评估数据集的 Cloud Storage 存储桶,然后选择评估数据集。
    如需了解详情,请参阅评估数据集
  11. 点击开始调整

检查调整操作状态

如需查看模型调整作业的状态,请在 Google Cloud 控制台中转到 Vertex AI Pipelines 页面。本页面介绍了文本和代码模型调整作业的状态。

打开“流水线”

或者,您可以为 Vertex AI Pipelines 配置电子邮件通知,以便在模型调整作业完成或失败时收到电子邮件通知。

后续步骤