从分类法中生成数据,用于 InstructLab
数据生成是根据 QNA 文件中的问题和答案自动生成合成问题和答案的过程。 Red Hat AI InstructLab 生成数据的过程注重内容质量和相关性。
先决条件
使用控制台生成数据
-
在控制台中,打开 Red Hat AI InstructLab服务。
-
单击 InstructLab 项目 > 您的项目 > 培训数据 > 生成。
-
输入训练数据的字母数字名称,并选择要使用的分类标准。
-
可选:在开始数据生成过程之前,请查看提供的估计成本。
-
单击生成。 状态为“
queued,然后是”running。 -
等待国家
completed。 数据生成完成后,会创建一个包含日志文件的synthetic_data目录 Object Storage bucket。 您可以查看这些日志,以排除故障或进行验证。
在控制台中导入自己的训练数据
您可以导入自己以前生成的数据,作为 InstructLab 中数据生成的补充。 如果需要执行以下一项或多项操作,您可能需要导入自己的数据。
- 生成数据时,可导入一个或多个知识和技能文档。
- 将多个训练数据合并为一个。
- 生成数据,下载数据,然后处理数据的一个分节并重新生成。
- 将之前生成的数据与新导入的数据相结合。
- 导入数据、生成训练数据,然后将这些数据与另一次数据生成运行相结合。
- 将重放缓冲区和从分类法中导入的数据结合起来。 此功能只能通过 API 或 CLI 使用。
- 从分类法中导入数据并生成训练数据。 此功能只能通过 API 或 CLI 使用。
要导入自己的数据,可以参考以前的数据生成运行、从 Object Storage 文件桶导入文件或从本地机器上传文件。
完成以下步骤,导入自己的训练数据。
-
在控制台中,打开 Red Hat AI InstructLab服务。
-
单击 InstructLab 项目 > 您的项目 > 培训数据 > 导入。
-
输入数据的字母数字名称。
-
选择以下某个选项。
-
Object Storage:选择 Object Storage 文件桶中的现有文件。
- 选择存储现有数据的实例和存储桶。
- 单击下一步。
- 选择要导入的文件。
-
上传文件:从本地计算机选择文件。 请注意,上传文件有 40 Mb 的限制。
- 选择 Object Storage 实例和存储桶,或创建新的实例和存储桶来存储数据。
- 授予 InstructLab Writer 文件桶权限。
- 可选:存储设置。 指定以下有关如何存储数据的其他详细信息。
- 水桶文件路径。
- 水桶内的目录。
- Object Storage 实例名称。
- 资源组。
- Object Storage 桶名。
- 水桶的弹性。
- 单击下一步。
- 选择要从本地计算机上传的知识和技能文件。
-
-
单击导入。
在控制台中合并训练数据
您可以将数据分成较小的、可管理的块,这样就可以避免超时或系统限制。 然后,您可以将这些较小的数据集合并成一个数据集,用于训练。
完成以下步骤在控制台中合并数据。
-
在控制台中,打开 Red Hat AI InstructLab服务。
-
单击 InstructLab 项目 > 您的项目 > 培训数据。
-
从列表中最多选择 20 个训练数据条目,然后单击合并。
-
输入数据的字母数字名称。
-
选择 Object Storage 实例和要存储合并数据的存储桶。
-
单击创建。
使用 CLI 生成数据
-
列出分类标准,并记下要使用的分类标准。
ibmcloud ilab taxonomy list示例输出。
id name taxonomy_path 669a88c9488ee7b95ce8fe05 test-tax taxonomy.tar.gz -
从分类法中生成数据 注意下一步要使用的数据 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 -
检查数据生成的详细信息。 包括数据的 ID。 状态为“
queued,然后是”running。 等待状态为 "completed。 当状态为completed时,在 Object Storage 桶中会创建一个synthetic_data目录,其中包含用于故障排除的日志。ibmcloud ilab data get --id DATA_IDdata 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 -
可选:当状态为
completed时,可以查看指标,如 代币估算,以计算估计成本。带有
--output json选项的data get命令示例ibmcloud ilab data get --id 66a268c170dcb21150050e8e --output jsonJSON 输出示例
{ "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知识和技能文件。
完成以下步骤导入数据。
- 列出分类标准,并记下要使用的分类标准。
示例输出。ibmcloud ilab taxonomy listid name taxonomy_path 669a88c9488ee7b95ce8fe05 test-tax taxonomy.tar.gz - 如果您以前生成了要使用的数据,请列出您的数据并记下要使用的 UUID。 您最多可以包含 20 个数据源。
ibmcloud ilab data list - 从分类法中生成数据 注意下一步要使用的数据 ID。 在名称中使用字母数字字符。
包含多个内部 ID(数据源)以生成数据的示例命令。ibmcloud ilab data generate [--name NAME] [--taxonomy-id TAXONOMY-ID] [--internal-ids INTERNAL-IDs]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生成数据
-
列出分类标准,并记下要使用的分类标准。
命令示例
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" } ] } -
从分类法中生成数据 注意下一步要使用的数据 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 } } } -
检查数据生成的详细信息。 包括数据的 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.jsonl和skills_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
}
后续步骤
从分类法中生成数据后,就可以开始 训练模型 了。