从分类法中生成数据,用于 Red Hat AI 推理

数据生成是指根据您在QNA文件中包含的问题和答案,自动生成合成问题和答案的过程。 Red Hat AI Inference 生成数据的过程侧重于内容质量和相关性。

了解有关数据生成过程的更多信息,请访问 Red Hat.

Red Hat AI Inference 模型对齐、合成数据生成和分类法管理功能已弃用,并将于 2026 年 9 月 25 日被移除。 若要继续进行模型定制和对齐工作流,请迁移至 Red Hat® OpenShift® AI On OpenShift。 了解有关 Red Hat® OpenShift® AI的更多信息

先决条件

  1. 安装 ilab 命令行插件
  2. 准备好您的分类体系
  3. 将分类法 tar.gz 添加到您的 Object Storage 存储桶中

使用控制台生成数据

  1. 在控制台中,打开“Red Hat AI Inference”服务

  2. 点击 Red Hat AI 推理 项目 > 您的项目 > 训练数据 > 生成

  3. 为训练数据输入一个字母数字名称,并选择要使用的分类法。

  4. 可选:在开始数据生成流程之前,请查看系统提供的预估成本。

  5. 单击生成。 状态为 queued,然后是 running

  6. 等待状态变为 completed。 数据生成完成后,会在 Object Storage 存储桶中创建一个名为 synthetic_data 的目录,其中包含日志文件。 您可以查看这些日志以进行故障排除或验证。

在控制台中导入您自己的训练数据

您可以导入自己之前生成的数据,以补充 Red Hat AI 推理 中的数据生成。 如果您需要执行以下一项或多项操作,可能需要导入您自己的数据。

  • 在生成数据时,导入一份或多份知识与技能文档。
  • 将多个训练数据批次合并为一个。
  • 生成数据,下载数据,然后对数据的一部分进行处理,并重新生成数据。
  • 将您之前生成的数据与新导入的数据合并。
  • 导入数据,生成训练数据,然后将这些数据与另一轮数据生成结果相结合。
  • 将回放缓冲区与从分类法中导入的数据相结合。 此功能仅可通过 API 或 CLI 访问。
  • 从您的分类法中导入数据并生成训练数据。 此功能仅可通过 API 或 CLI 访问。

要导入您自己的数据,您可以参考之前的数据生成任务、从您的 Object Storage 存储桶导入文件,或者从本地计算机上传文件。

请按照以下步骤导入您自己的训练数据。

  1. 在控制台中,打开“Red Hat AI Inference”服务

  2. 点击 Red Hat AI 推理 项目 > 您的项目 > 训练数据 > 导入

  3. 请为您的数据输入一个由字母和数字组成的名称。

  4. 选择以下某个选项。

    • Object Storage: 选择您在 Object Storage 存储桶中的现有文件。

      1. 选择存储现有数据的实例和存储桶。
      2. 单击下一步
      3. 选择要导入的文件。
    • 上传文件:从本地计算机中选择文件。 请注意,文件上传大小上限为 40 Mb。

      1. 选择一个 Object Storage 实例和存储桶,或创建新的实例和存储桶来存储您的数据。
      2. 授予“Red Hat AI 推理”对该存储桶的写入权限。
      3. 可选:存储设置。 请就如何存储您的数据提供以下补充信息。
        • 桶的文件路径。
        • 存储桶内的目录。
        • Object Storage 实例名称。
        • 资源组。
        • Object Storage 存储桶名称。
        • 存储桶的弹性。
      4. 单击下一步
      5. 请从本地计算机中选择要上传的知识和技能文件。
  5. 单击导入

在控制台中合并训练数据

您可以将数据分成较小、易于管理的块来生成,这样可以避免超时或受系统限制。 然后,您可以将这些较小的数据集合并为一个用于训练的数据集。

请按照以下步骤在控制台中合并数据。

  1. 在控制台中,打开“Red Hat AI Inference”服务

  2. 点击 Red Hat AI 推理 Projects > 您的项目 > 训练数据

  3. 从列表中最多选择 20 条训练数据条目,然后点击 “合并”

  4. 请为您的数据输入一个由字母和数字组成的名称。

  5. 选择要存储合并数据的 Object Storage 实例和存储桶。

  6. 单击创建

使用命令行界面 (CLI) 生成数据

  1. 列出您的分类法,并标注出您想要使用的分类法。

    ibmcloud ilab taxonomy list
    

    示例输出。

    id                         name       taxonomy_path
    669a88c9488ee7b95ce8fe05   test-tax   taxonomy.tar.gz
    
  2. 根据您的分类法生成数据。 请记下该数据的 ID,以便在下一步中使用。 名称中请使用字母数字字符。

    ibmcloud ilab data generate [--name NAME] [--taxonomy-id TAXONOMY-ID]
    

    示例命令。

    ibmcloud ilab data generate --name testdata --taxonomy-id 669a88c9488ee7b95ce8fe05
    

    示例输出。

    id            66a268c170dcb21150050e8e
    name          test-data
    state         queued
    status
    created_at    2024-07-19T15:40:29.000Z
    taxonomy_id   669a88c9488ee7b95ce8fe05
    
  3. 请检查您的数据生成详情。 请包含该数据的ID。 状态为 queued,然后是 running。 等待状态变为 completed。 当状态为“completed”时,会在 Object Storage 文件夹中创建一个 synthetic_data 目录,其中包含用于故障排除的日志。

    ibmcloud ilab data get --id DATA_ID
    

    data get 命令示例。

    ibmcloud ilab data get --id 66a268c170dcb21150050e8e
    

    示例输出。

    id            66a268c170dcb21150050e8e
    name          test-data
    state         running
    status        Generating data for taxonomy path compositional_skills->STEM->math->area: 12% 12/100 (total qna processed 1/147)
    created_at    2024-07-19T15:40:29.000Z
    taxonomy_id   669a88c9488ee7b95ce8fe05
    
  4. 可选:当状态为 completed 时,您可以查看相关指标,例如 代币估算值,用于计算预计成本

    --output json 选项的 data get 命令示例

    ibmcloud ilab data get --id 66a268c170dcb21150050e8e --output json
    

    JSON 输出示例

    {
      "created_at": "2026-08-04T15:40:29.000Z",
      "data_metrics": {
        "samples": {
          "knowledge": 30,
          "skills": 70,
          "total": 100
        },
        "tokens": {
          "data_leaf_nodes": {
            "compositional_<taxonomy_path>": 26196,
            "knowledge_<taxonomy_path>": 1228930,
            },
          "data_tokens_total": 5993486,
          "training_estimated": 411435913,
          "training_phases": {
            "phase_1_knowledge": 1389992,
            "phase_2_skills": 410045921
            }
        }
      },
      "id": "66a268c170dcb21150050e8e",
      "last_signal_at": "2026-08-04T17:20:32.000Z",
      "name": "test-data",
      "state": "completed",
      "status": "completed",
      "taxonomy_id": "669a88c9488ee7b95ce8fe05"
    }
    

使用命令行界面(CLI)导入您自己的训练数据

您可能出于以下一个或多个原因,希望导入自己的数据。

  • 在生成数据时,导入一份或多份知识与技能文档。
  • 将多个训练数据批次合并为一个。
  • 生成数据,下载数据,然后对数据的一部分进行处理,并重新生成数据。
  • 将您之前生成的数据与新导入的数据合并。
  • 导入数据,生成训练数据,然后将这些数据与另一轮数据生成结果相结合。
  • 将回放缓冲区与从分类法中导入的数据相结合。 此功能仅可通过 API 或 CLI 访问。
  • 从您的分类法中导入数据并生成训练数据。 此功能仅可通过 API 或 CLI 访问。

您可以导入自己的训练数据,以补充 Red Hat AI 推理 中的数据生成。 若要导入您之前生成的数据,请指定以下一项或多项:

  • 先前运行的数据生成ID。
  • 一个 Object Storage 存储桶,其中包含 .jsonl 的知识和技能文件。

请按照以下步骤导入您的数据。

  1. 列出您的分类法,并标注出您想要使用的分类法。
    ibmcloud ilab taxonomy list
    
    示例输出。
    id                         name       taxonomy_path
    669a88c9488ee7b95ce8fe05   test-tax   taxonomy.tar.gz
    
  2. 如果您之前已生成过想要使用的数据,请列出这些数据,并记下您想要使用的 UUID。 最多可包含 20 个数据源。
    ibmcloud ilab data list
    
  3. 根据您的分类法生成数据。 请记下该数据的 ID,以便在下一步中使用。 名称中请使用字母数字字符。
    ibmcloud ilab data generate [--name NAME] [--taxonomy-id TAXONOMY-ID] [--internal-ids INTERNAL-IDs]
    
    用于在数据生成中包含多个内部 ID(数据源)的示例命令。
    ibmcloud ilab data generate --name testdata --taxonomy-id 65005b67-7de4-4216-b23c-ed4342f99c88 --internal-ids 8c6b9224-a4f1-4649-907c-0f11d14cfc59,299ee20c-0b04-4d8e-ad12-a3d98feece40
    

如需更多示例,请参阅下一节:“导入自定义训练数据的示例命令”

导入自有训练数据的示例命令

请参考以下示例命令,了解如何导入您自己的训练数据,或向数据生成任务中添加知识和技能文件。

包含多个内部 ID 的示例命令。

ibmcloud ilab data generate --name testdata --taxonomy-id 65005b67-7de4-4216-b23c-ed4342f99c88 --internal-ids 8c6b9224-a4f1-4649-907c-0f11d14cfc59,299ee20c-0b04-4d8e-ad12-a3d98feece40

一个示例命令,用于合并多个先前生成的数据源(内部 ID)以及来自 Object Storage 存储桶的 .jsonl 文件。

ibmcloud ilab data generate \
  --name testdata \
  --taxonomy-id 669a88c9488ee7b95ce8fe05 \
  --internal-ids 8c6b9224-a4f1-4649-907c-0f11d14cfc59,299ee20c-0b04-4d8e-ad12-a3d98feece40 \
  --knowledge-paths PATH \
  --skills-paths PATH \
  --skills-knowledge-cos-bucket STRING \
  --skills-knowledge-cos-bucket-endpoint ENDPOINT

将先前生成的数据与存储在 Object Storage 存储桶中的 .jsonl 知识和技能文件的示例命令。 您还可以选择指定一个 Object Storage 输出存储桶,用于存储生成的数据(SDG)输出。

ibmcloud ilab data generate \
  --name testdata \
  --taxonomy-id 669a88c9488ee7b95ce8fe05 \
  --internal-ids 8c6b9224-a4f1-4649-907c-0f11d14cfc59 \
  --knowledge-paths PATH \
  --skills-paths PATH \
  --skills-knowledge-cos-bucket STRING \
  --skills-knowledge-cos-bucket-endpoint ENDPOINT
  --output-cos-bucket-string STRING \
  --output-cos-bucket-endpoint ENDPOINT

通过指定内部 ID 合并数据的示例命令。

ibmcloud ilab data generate \
  --name testdata \
  --internal-ids 8c6b9224-a4f1-4649-907c-0f11d14cfc59,299ee20c-0b04-4d8e-ad12-a3d98feece40 \
  --output-cos-bucket-string STRING \
  --output-cos-bucket-endpoint ENDPOINT

一个示例命令,用于通过指定内部 ID 来合并先前生成的数据,并包含来自 Object Storage 存储桶中的技能和知识。

ibmcloud ilab data generate \
  --name testdata \
  --internal-ids 8c6b9224-a4f1-4649-907c-0f11d14cfc59 \
  --knowledge-paths PATH \
  --skills-paths PATH \
  --skills-knowledge-cos-bucket STRING \
  --skills-knowledge-cos-bucket-endpoint ENDPOINT
  --output-cos-bucket-string STRING \
  --output-cos-bucket-endpoint ENDPOINT

用于合并来自 Object Storage 存储桶中的技能和知识的示例命令。

ibmcloud ilab data generate \
  --name testdata \
  --knowledge-paths PATH \
  --skills-paths PATH \
  --skills-knowledge-cos-bucket STRING \
  --skills-knowledge-cos-bucket-endpoint ENDPOINT
  --output-cos-bucket-string STRING \
  --output-cos-bucket-endpoint ENDPOINT

使用 API 生成数据

  1. 列出您的分类法,并标注出您想要使用的分类法。

    示例命令。

    curl -X 'GET' \
    'https://us-east.instructlab.ibm.com/v1/taxonomies' \
    -H 'accept: application/json`
    

    示例输出。

    {
      "taxonomies": [
        {
          "id": "202a03c4-dcf1-432a-82b7-abecb2e019f7",
          "name": "example-taxonomy-name-1",
          "taxonomy_path_cos": "taxonomies/taxonomy.tar.gz",
          "created_at": "2024-10-23T02:58:50.000Z"
        }
      ]
    }
    
  2. 根据您的分类法生成数据。 请记下该数据的 ID,以便在下一步中使用。 名称中请使用字母数字字符。

    示例命令。

    curl -X 'POST' \
      'https://us-east.instructlab.ibm.com/v1/data' \
      -H 'accept: application/json' \
      -H 'Content-Type: application/json' \
      -d '{
      "name": "example-data-1",
      "taxonomy_id": "202a03c4-dcf1-432a-82b7-abecb2e019f7"
    }'
    

    示例输出。

    {
      "id": "add785e6-a8c3-4f5f-ab89-c506a3f115da",
      "name": "example-data-1",
      "state": "",
      "status": "queued",
      "created_at": "2024-10-23T02:58:50.000Z",
      "last_signal_at": "2026-08-04T17:20:32.000Z",
      "taxonomy_id": "202a03c4-dcf1-432a-82b7-abecb2e019f7",
      "data_metrics": {
        "samples": {
          "additionalProp1": 1,
          "additionalProp2": 2,
          "additionalProp3": 3
        }
      }
    }
    
  3. 请检查您的数据生成详情。 请包含该数据的ID。 状态为 queued,然后是 running。 等待状态变为 completed

    示例命令。

    curl -X 'GET' \
      'https://us-east.instructlab.ibm.com/v1/data/add785e6-a8c3-4f5f-ab89-c506a3f115da' \
      -H 'accept: application/json'
    

    示例输出。

    {
      "id": "add785e6-a8c3-4f5f-ab89-c506a3f115da",
      "name": "example-data-1",
      "state": "",
      "status": "queued",
      "created_at": "2024-10-23T02:58:50.000Z",
      "last_signal_at": "2026-08-04T17:20:32.000Z",
      "taxonomy_id": "202a03c4-dcf1-432a-82b7-abecb2e019f7",
      "data_metrics": {
        "samples": {
          "additionalProp1": 1,
          "additionalProp2": 2,
          "additionalProp3": 3
        }
      }
    }
    

当状态为“completed”时,会在 Object Storage 文件夹中创建一个 synthetic_data 目录,其中包含用于故障排除的日志。

生成数据后,我的 Object Storage 存储桶中会包含哪些内容?

生成数据后,您的 Object Storage 存储桶中将包含一个名为 synthetic_data 的目录,其中包含以下文件。

Artifacts
这些文件包含每个叶节点的样本。 这些数据并非用于训练模型,而是为了提高可读性而提供的,可用于验证QNA是否生成了预期数量的样本。
Logs
这些文件包含 Red Hat AI Inference 的执行日志和系统详细信息。
knowledge_train_msgs.jsonlskills_train_msgs.jsonl
这些是第1阶段和第2阶段的训练文件,其中包含用于训练模型的样本。

要了解您的数据为何以及如何生成,请参阅 SDG 常见问题解答社区文档。

示例:.jsonl 格式

请参考以下关于技能和知识的 .jsonl 结构示例。

{
  "messages": [
    {
      "content": "string",   // The text of the message
      "role": "string"       // The role of the sender (e.g., "system", "user", "assistant")
    }
  ],
  "metadata": "string",      // A JSON-encoded string containing additional info (e.g., num_turns, group, dataset)
  "id": "string"             // A unique identifier for the conversation
}

后续步骤

从分类法中生成数据后,您就可以开始 训练模型了