從分類系統產生資料,用於 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_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 -
可選:當狀態為
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) 以及 .jsonl 檔案的範例指令 Object Storage bucket。
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- 這些是第一階段和第二階段訓練文件,包含用於訓練模型的樣本。
若要瞭解為何及如何產生您的資料,請參閱 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
}
下一步
從分類產生資料後,您可以開始 訓練模型。