从分类法中生成数据,用于 InstructLab

数据生成是根据 QNA 文件中的问题和答案自动生成合成问题和答案的过程。 Red Hat AI InstructLab 生成数据的过程注重内容质量和相关性。

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

先决条件

  1. 安装 ilab CLI 插件
  2. 准备你的分类法
  3. 将分类法 tar.gz 添加到 Object Storage 桶中

使用控制台生成数据

  1. 在控制台中,打开 Red Hat AI InstructLab服务

  2. 单击 InstructLab 项目 > 您的项目 > 培训数据 > 生成

  3. 输入训练数据的字母数字名称,并选择要使用的分类标准。

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

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

  6. 等待国家 completed。 数据生成完成后,会创建一个包含日志文件的 synthetic_data 目录 Object Storage bucket。 您可以查看这些日志,以排除故障或进行验证。

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

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

  • 生成数据时,可导入一个或多个知识和技能文档。
  • 将多个训练数据合并为一个。
  • 生成数据,下载数据,然后处理数据的一个分节并重新生成。
  • 将之前生成的数据与新导入的数据相结合。
  • 导入数据、生成训练数据,然后将这些数据与另一次数据生成运行相结合。
  • 将重放缓冲区和从分类法中导入的数据结合起来。 此功能只能通过 API 或 CLI 使用。
  • 从分类法中导入数据并生成训练数据。 此功能只能通过 API 或 CLI 使用。

要导入自己的数据,可以参考以前的数据生成运行、从 Object Storage 文件桶导入文件或从本地机器上传文件。

完成以下步骤,导入自己的训练数据。

  1. 在控制台中,打开 Red Hat AI InstructLab服务

  2. 单击 InstructLab 项目 > 您的项目 > 培训数据 > 导入

  3. 输入数据的字母数字名称。

  4. 选择以下某个选项。

    • Object Storage:选择 Object Storage 文件桶中的现有文件。

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

      1. 选择 Object Storage 实例和存储桶,或创建新的实例和存储桶来存储数据。
      2. 授予 InstructLab Writer 文件桶权限。
      3. 可选:存储设置。 指定以下有关如何存储数据的其他详细信息。
        • 水桶文件路径。
        • 水桶内的目录。
        • Object Storage 实例名称。
        • 资源组。
        • Object Storage 桶名。
        • 水桶的弹性。
      4. 单击下一步
      5. 选择要从本地计算机上传的知识和技能文件。
  5. 单击导入

在控制台中合并训练数据

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

完成以下步骤在控制台中合并数据。

  1. 在控制台中,打开 Red Hat AI InstructLab服务

  2. 单击 InstructLab 项目 > 您的项目 > 培训数据

  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-02-18T15: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-02-18T17:20:32.000Z",
      "name": "test-data",
      "state": "completed",
      "status": "completed",
      "taxonomy_id": "669a88c9488ee7b95ce8fe05"
    }
    

使用 CLI 导入自己的训练数据

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

  • 生成数据时,可导入一个或多个知识和技能文档。
  • 将多个训练数据合并为一个。
  • 生成数据,下载数据,然后处理数据的一个分节并重新生成。
  • 将之前生成的数据与新导入的数据相结合。
  • 导入数据、生成训练数据,然后将这些数据与另一次数据生成运行相结合。
  • 将重放缓冲区和从分类法中导入的数据结合起来。 此功能只能通过 API 或 CLI 使用。
  • 从分类法中导入数据并生成训练数据。 此功能只能通过 API 或 CLI 使用。

您可以导入自己的训练数据,以补充 InstructLab 中的数据生成。 要导入自己先前生成的数据,请指定以下一项或多项:

  • 之前运行的数据生成 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

将先前生成的数据与 .jsonl 存储在 Object Storage 文件桶中的知识和技能文件相结合的示例命令。 您还可以选择指定一个输出 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-02-18T17: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-02-18T17: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 InstructLab执行日志和系统详细信息。
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
}

后续步骤

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