タクソノミーからデータを生成する InstructLab

データ生成とは、QNAファイルに含まれる質問と回答に基づいて、合成質問と回答を自動的に生成するプロセスです。 Red Hat AI InstructLab データを生成するために使用するプロセスは、コンテンツの品質と関連性に重点を置いている。

Red Hat、データ作成プロセスの詳細をご覧ください。

前提条件

  1. CLI ilab プラグインをインストールしてください。
  2. 分類体系を準備する。
  3. タクソノミー tar.gz を Object Storage バケツに追加する。

コンソールを使ってデータを作成する

  1. コンソールで Red Hat AI InstructLabサービス を開きます。

  2. InstructLab Projects > your project > Training data > Generateをクリックします。

  3. トレーニングデータの英数字の名前を入力し、使用する分類法を選択します。

  4. オプション:データ作成プロセスを開始する前に、提示された見積もり費用を確認してください。

  5. **「生成」**をクリックします。 状態は「queued、次に「running である。

  6. completed。 データ生成が完了すると、ログファイルを格納した synthetic_data ディレクトリが作成される Object Storage バケット。 トラブルシューティングや検証のために、これらのログを確認することができます。

コンソールで独自のトレーニングデータをインポートする

InstructLab のデータ生成を補完するために、過去に生成したデータをインポートすることができます。 以下の1つ以上を行う必要がある場合は、独自のデータをインポートした方がよいでしょう。

  • データ生成時に、1つまたは複数のナレッジおよびスキル文書をインポートします。
  • 複数のトレーニングデータを1つにまとめる。
  • データを生成してダウンロードし、データの一部を操作して再生成する。
  • 以前作成したデータと新しくインポートしたデータを組み合わせる。
  • データをインポートし、トレーニングデータを生成し、そのデータを別のデータ生成の実行と組み合わせる。
  • リプレイバッファとタクソノミーからインポートしたデータを組み合わせます。 この機能はAPIまたはCLI経由でのみ利用可能です。
  • データをインポートし、タクソノミからトレーニングデータを生成します。 この機能はAPIまたはCLI経由でのみ利用可能です。

自分のデータをインポートするには、過去に実行したデータ生成を参照するか、 Object Storage バケットからファイルをインポートするか、ローカルマシンからファイルをアップロードします。

以下のステップを完了し、独自のトレーニングデータをインポートします。

  1. コンソールで Red Hat AI InstructLabサービス を開きます。

  2. InstructLab Projects > your project > Training data > Import をクリックします。

  3. データの名前を英数字で入力します。

  4. 以下のいずれかのオプションを選択します。

    • Object Storage: Object Storage バケツにある既存のファイルを選択します。

      1. 既存のデータが保存されているインスタンスとバケットを選択します。
      2. 次へ をクリックします。
      3. インポートしたいファイルを選択します。
    • ファイルをアップロードします: ローカルマシンからファイルを選択します。 ファイルのアップロードには40MBの制限があります。

      1. Object Storage インスタンスとバケットを選択するか、新しいインスタンスとバケットを作成してデータを保存します。
      2. InstructLab バケツにライター権限を与える。
      3. オプション :ストレージの設定。 データの保存方法について、以下の追加情報を指定します。
        • バケツファイルのパス。
        • バケツ内のディレクトリ。
        • Object Storage インスタンス名。
        • リソースグループ。
        • Object Storage バケット名
        • バケットの弾力性。
      4. 次へ をクリックします。
      5. ローカルマシンからアップロードする知識とスキルのファイルを選択します。
  5. インポート をクリックします。

コンソールでトレーニングデータをマージする

タイムアウトやシステム制限を回避するために、管理しやすい小さな塊でデータを生成することもできる。 そして、これらの小さなデータセットをトレーニング用の1つのデータセットに統合することができる。

コンソールでデータをマージするには、以下の手順を実行します。

  1. コンソールで Red Hat AI InstructLabサービス を開きます。

  2. InstructLab Projects > your project > Training data をクリックします。

  3. リストからトレーニングデータエントリーを20個まで選択し、 Mergeをクリックします。

  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を使用した独自のトレーニングデータのインポート

次のような理由で、自分のデータをインポートしたいと思うかもしれません。

  • データ生成時に、1つまたは複数のナレッジおよびスキル文書をインポートします。
  • 複数のトレーニングデータを1つにまとめる。
  • データを生成してダウンロードし、データの一部を操作して再生成する。
  • 以前作成したデータと新しくインポートしたデータを組み合わせる。
  • データをインポートし、トレーニングデータを生成し、そのデータを別のデータ生成の実行と組み合わせる。
  • リプレイバッファとタクソノミーからインポートしたデータを組み合わせます。 この機能はAPIまたはCLI経由でのみ利用可能です。
  • データをインポートし、タクソノミからトレーニングデータを生成します。 この機能はAPIまたはCLI経由でのみ利用可能です。

独自のトレーニングデータをインポートして、 InstructLab のデータ生成を補完することができます。 以前に作成した独自のデータをインポートするには、以下の1つ以上を指定する:

  • 過去に実行されたデータ生成ID。
  • .jsonl ナレッジとスキルのファイルを含む Object Storage バケット。

以下の手順でデータをインポートしてください。

  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

Object Storage バケットから .jsonl ファイルだけでなく、以前に生成された複数のデータソース (内部 ID) を結合するコマンドの例。

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 ナレッジとスキルのファイルと、以前に生成されたデータを結合するコマンドの例。 オプションで、生成されたデータ (SDG) の出力を保存する出力 Object Storage バケットを指定することもできます。

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

Object Storage バケツからスキルや知識を含め、内部IDを指定して以前に生成されたデータをマージするコマンドの例。

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.jsonl および skills_train_msgs.jsonl
これらはフェーズ1とフェーズ2のトレーニングファイルで、モデルのトレーニングに使用されるサンプルが含まれています。

データが生成される理由と仕組みについて理解するには 、SDG FAQsコミュニティドキュメントを参照してください。

.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
}

次のステップ

分類法からデータを生成したら、モデルのトレーニング を開始します。