RHEL AI を使用したカスタム LLM の生成


Red Hat Enterprise Linux AI 1.5

SDG、トレーニング、評価を使用してカスタム LLM を作成する

Red Hat RHEL AI Documentation Team

概要

このドキュメントでは、SDG、トレーニング、評価を通じてユーザーがカスタム LLM を生成する方法を説明します。

第1章 SDG を使用した新しいデータセットの生成

タクソノミーツリーをカスタマイズした後、Red Hat Enterprise Linux AI の合成データ生成 (SDG) プロセスを使用して合成データセットを生成できます。SDG は、提供された例に基づいて実際のデータに似せて人工的に生成されたデータセットを作成するプロセスです。SDG は、質問と回答のペアを含む YAML ファイルを入力データとして使用します。これらの例では、SDG は mixtral-8x7b-instruct-v0-1 LLM を教師モデルとして使用して、同様の質問と回答のペアを生成します。SDG パイプラインでは、多くの質問が生成され、品質に基づいて採点されます。mixtral-8x7b-instruct-v0-1 教師モデルがこれらの関連性と一貫性を評価します。次に、パイプラインはフィルタリングメカニズムを適用して、最もスコアの高い質問を選択し、対応する回答を生成し、元のサンプルの質問に基づいてその精度をさらに評価します。最終的に作成された高品質な質問と回答のペアのセットは、トレーニングに使用される合成データセットに組み込まれます。

1.1. 例を使用した標準データセットの作成

例を使用して SDG プロセスを実行し、合成データセットを作成できます。

重要

4xL40 を搭載したシステムで SDG を実行している場合に、SDG を適切に実行するには次のパラメーターを使用する必要があります。

ilab data generate --num-cpus 4
Copy to Clipboard Toggle word wrap

前提条件

  • 起動可能なコンテナーイメージを使用して RHEL AI をインストールしている。
  • ナレッジデータを含むカスタム qna.yaml ファイルが作成されている。
  • SDG 用の mixtral-8x7B-instruct-v0-1 教師モデルをダウンロードしている。
  • skills-adapter-v3:1.5 および knowledge-adapter-v3:1.5 LoRA 階層化スキルおよびナレッジアダプターをダウンロードしている。
  • マシンの root ユーザーアクセス権がある。

手順

  1. ナレッジを含むカスタムのタクソノミーに基づいて新しい合成データセットを生成するには、次のコマンドを実行します。

    $ ilab data generate
    Copy to Clipboard Toggle word wrap
    注記

    ilab data generate コマンドを実行するときに --enable-serving-output フラグを使用すると、vLLM 起動ログを表示できます。

    1. SDG プロセスの開始時に、vLLM は mixtral-8x7B-instruct 教師モデルをホストするためのサーバーを起動しようとします。

      vLLM がサーバーの起動を試みているときの出力例

      Starting a temporary vLLM server at http://127.0.0.1:47825/v1
      INFO 2024-08-22 17:01:09,461 instructlab.model.backends.backends:480: Waiting for the vLLM server to start at http://127.0.0.1:47825/v1, this might take a moment... Attempt: 1/120
      INFO 2024-08-22 17:01:14,213 instructlab.model.backends.backends:480: Waiting for the vLLM server to start at http://127.0.0.1:47825/v1, this might take a moment... Attempt: 2/120
      Copy to Clipboard Toggle word wrap

    2. vLLM が接続すると、SDG プロセスは qna.yaml ファイル内のシード例に基づいて合成データの作成を開始します。

      vLLM 接続および SDG 生成の出力例

      INFO 2024-08-22 15:16:43,497 instructlab.model.backends.backends:480: Waiting for the vLLM server to start at http://127.0.0.1:49311/v1, this might take a moment... Attempt: 74/120
      INFO 2024-08-22 15:16:45,949 instructlab.model.backends.backends:487: vLLM engine successfully started at http://127.0.0.1:49311/v1
      Generating synthetic data using '/usr/share/instructlab/sdg/pipelines/agentic' pipeline, '/var/home/cloud-user/.cache/instructlab/models/mixtral-8x7b-instruct-v0-1' model, '/var/home/cloud-user/.local/share/instructlab/taxonomy' taxonomy, against http://127.0.0.1:49311/v1 server
      INFO 2024-08-22 15:16:46,594 instructlab.sdg:375: Synthesizing new instructions. If you aren't satisfied with the generated instructions, interrupt training (Ctrl-C) and try adjusting your YAML files. Adding more examples may help.
      Copy to Clipboard Toggle word wrap

  2. CLI が新しいデータセットのロケーションを表示すると、SDG プロセスが完了します。

    SDG 実行が成功した出力例

    INFO 2024-08-16 17:12:46,548 instructlab.sdg.datamixing:200: Mixed Dataset saved to /home/example-user/.local/share/instructlab/datasets/skills_train_msgs_2024-08-16T16_50_11.jsonl
    INFO 2024-08-16 17:12:46,549 instructlab.sdg:438: Generation took 1355.74s
    Copy to Clipboard Toggle word wrap

    注記

    このプロセスは、ハードウェアの仕様に応じて時間がかかる場合があります。

検証

  1. SDG ファイルが作成されたことを確認するには、~/.local/share/instructlab/datasets/ ディレクトリーに移動し、データが生成された日付に対応するファイルをリスト表示します。以下に例を示します。

    $ ls 2024-03-24_194933
    Copy to Clipboard Toggle word wrap

    出力例

    knowledge_recipe_2024-03-24T20_54_21.yaml                   skills_recipe_2024-03-24T20_54_21.yaml
    knowledge_train_msgs_2024-03-24T20_54_21.jsonl              skills_train_msgs_2024-03-24T20_54_21.jsonl
    messages_granite-7b-lab-Q4_K_M_2024-03-24T20_54_21.jsonl    node_datasets_2024-03-24T15_12_12/
    Copy to Clipboard Toggle word wrap

    重要

    最新の knowledge_train_msgs.jsonl および skills_train_msgs.jsonl ファイルをメモします。マルチフェーズのトレーニング中に、このファイルを指定する必要があります。各 JSONL のファイルにタイムスタンプがあります (例: knowledge_train_msgs_2024-08-08T20_04_28.jsonl)。トレーニング時には最新のファイルを使用します。

  2. オプション: ~/.local/share/datasets/<generation-date> ディレクトリーに移動して JSONL ファイルを開くと、SDG の出力を表示できます。

    $ cat ~/.local/share/datasets/<generation-date>/<jsonl-dataset>
    Copy to Clipboard Toggle word wrap

    SDG JSONL ファイルの出力例

    {"messages":[{"content":"I am, Red Hat\u00ae Instruct Model based on Granite 7B, an AI language model developed by Red Hat and IBM Research, based on the Granite-7b-base language model. My primary function is to be a chat assistant.","role":"system"},{"content":"<|user|>\n### Deep-sky objects\n\nThe constellation does not lie on the [galactic\nplane](galactic_plane \"wikilink\") of the Milky Way, and there are no\nprominent star clusters. [NGC 625](NGC_625 \"wikilink\") is a dwarf\n[irregular galaxy](irregular_galaxy \"wikilink\") of apparent magnitude\n11.0 and lying some 12.7 million light years distant.
    Only 24000 light\nyears in diameter, it is an outlying member of the [Sculptor\nGroup](Sculptor_Group \"wikilink\"). NGC 625 is thought to have been\ninvolved in a collision and is experiencing a burst of [active star\nformation](Active_galactic_nucleus \"wikilink\"). [NGC\n37](NGC_37 \"wikilink\") is a [lenticular\ngalaxy](lenticular_galaxy \"wikilink\") of apparent magnitude 14.66. It is\napproximately 42 [kiloparsecs](kiloparsecs \"wikilink\") (137,000\n[light-years](light-years \"wikilink\")) in diameter and about 12.9\nbillion years old. [Robert's Quartet](Robert's_Quartet \"wikilink\")\n(composed of the
    irregular galaxy [NGC 87](NGC_87 \"wikilink\"), and three\nspiral galaxies [NGC 88](NGC_88 \"wikilink\"), [NGC 89](NGC_89 \"wikilink\")\nand [NGC 92](NGC_92 \"wikilink\")) is a group of four galaxies located\naround 160 million light-years away which are in the process of\ncolliding and merging. They are within a circle of radius of 1.6 arcmin,\ncorresponding to about 75,000 light-years. Located in the galaxy ESO\n243-49 is [HLX-1](HLX-1 \"wikilink\"), an [intermediate-mass black\nhole](intermediate-mass_black_hole \"wikilink\")\u2014the first one of its kind\nidentified. It is thought to be a remnant of a dwarf
    galaxy that was\nabsorbed in a [collision](Interacting_galaxy \"wikilink\") with ESO\n243-49. Before its discovery, this class of black hole was only\nhypothesized.\n\nLying within the bounds of the constellation is the gigantic [Phoenix\ncluster](Phoenix_cluster \"wikilink\"), which is around 7.3 million light\nyears wide and 5.7 billion light years away, making it one of the most\nmassive [galaxy clusters](galaxy_cluster \"wikilink\"). It was first\ndiscovered in 2010, and the central galaxy is producing an estimated 740\nnew stars a year. Larger still is [El\nGordo](El_Gordo_(galaxy_cluster) \"wikilink\"),
    or officially ACT-CL\nJ0102-4915, whose discovery was announced in 2012.
    Copy to Clipboard Toggle word wrap

1.2. バックグラウンドでの Synthetic Data Generation (SDG) の実行

SDG プロセスを管理および操作する方法は複数あります。

SDG をバックグラウンドで実行すると、SDG がまだ実行中でもターミナルを引き続き使用できます。

前提条件

  • 起動可能なコンテナーイメージを使用して RHEL AI をインストールしている。
  • ナレッジデータを含むカスタム qna.yaml ファイルが作成されている。
  • SDG 用の mixtral-8x7B-instruct-v0-1 教師モデルをダウンロードしている。
  • skills-adapter-v3:1.5 および knowledge-adapter-v3:1.5 LoRA 階層化スキルおよびナレッジアダプターをダウンロードしている。
  • マシンの root ユーザーアクセス権がある。

手順

  1. バックグラウンドで SDG プロセスを開始するには、次のコマンドを実行します。

    $ ilab data generate -dt
    Copy to Clipboard Toggle word wrap

    正常に起動した場合の出力例

    $ INFO 2025-01-15 11:36:47,557 instructlab.process.process:236: Started subprocess with PID 68289. Logs are being written to /Users/<user-name>/.local/share/instructlab/logs/generation/generation-e85623ac-d35e-11ef-bc70-2a1c6126d703.log.
    Copy to Clipboard Toggle word wrap

  2. デタッチされた SDG プロセスの管理、表示、および対話には、いくつかの方法があります。

    • 以下のコマンドを入力して、現在実行中のプロセスおよびそれらのステータスをすべて表示できます。

      $ ilab process list
      Copy to Clipboard Toggle word wrap

      リスト表示されているプロセスの出力例

      +------------+-------+--------------------------------------+----------------------------------------------------------------------------------------------------------------+----------+---------+
      | Type       | PID   | UUID                                 | Log File                                                                                                       | Runtime  | Status  |
      +------------+-------+--------------------------------------+----------------------------------------------------------------------------------------------------------------+----------+---------+
      | Generation | 30334 | f2623406-de55-11ef-b684-2a1c6126d703 | /Users/<user-name>/.local/share/instructlab/logs/generation/generation-f2623406-de55-11ef-b684-2a1c6126d703.log| 00:08:30 | Running |
      +------------+-------+--------------------------------------+----------------------------------------------------------------------------------------------------------------+----------+---------+
      Copy to Clipboard Toggle word wrap

    • 以下のコマンドを実行すると、最新のプロセスを参加および表示できます。

      警告

      すでにアタッチ済みの SDG プロセスからデタッチすることはできません。

      $ ilab process attach --latest
      Copy to Clipboard Toggle word wrap

1.3. llama-3.3-70B-Instruct モデルを教師モデルとして使用する (テクノロジープレビュー)

RHEL AI バージョン 1.5 では、合成データ生成 (SDG) を実行するときに llama-3.3-70b-Instruct を教師モデルとして使用することがサポートされています。SDG での教師モデルの利用方法の詳細は、SDG を使用した新しいデータセットの生成 を参照してください。llama-3.3-70b-Instruct モデルなど、より大きなパラメーターを持つ教師モデルを使用すると、合成生成された質問と回答のペアをより効果的に評価できるため、元のシードファイルに適した、より高品質で正確なデータセットが生成されます。

重要

`llama-3.3-70b-Instruct` の教師モデルとしての使用は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

前提条件

  • 起動可能なコンテナーイメージを使用して RHEL AI をインストールしている。
  • ナレッジまたはスキルデータを含むカスタムの qna.yaml ファイルを作成している。
  • skills-adapter-v3:1.5 および knowledge-adapter-v3:1.5 LoRA 階層化スキルおよびナレッジアダプターをダウンロードしている。

手順

  1. 次のコマンドを実行して、llama-3.3-70b-Instruct を RHEL AI システムにダウンロードします。
$ ilab model download --repository docker://registry.redhat.io/rhelai1/llama-3.3-70b-Instruct --release latest
Copy to Clipboard Toggle word wrap
  1. 次のコマンドを実行して、llama-3.3-70b-Instruct モデルを教師モデルとして SDG を実行できます。
$ ilab data generate --pipeline llama
Copy to Clipboard Toggle word wrap

第2章 モデルのトレーニング

RHEL AI は、タクソノミーツリーと合成データを使用して、複数フェーズトレーニングと評価を通じてドメイン固有のナレッジやスキルでトレーニングされたモデルを新たに作成できます。生成した合成データセットを使用して、完全なトレーニングおよび評価プロセスを実行できます。複数フェーズトレーニングの LAB 最適化手法は、複数の段階のトレーニングと評価を行う LLM トレーニングの一種です。これらのさまざまな段階で、RHEL AI はトレーニングプロセスを実行し、モデルチェックポイントを生成します。次のフェーズに最適なチェックポイントが選択されます。このプロセスでは、多数のチェックポイントが作成され、最高スコアのチェックポイントが選択されます。この最高スコアのチェックポイントが、トレーニングされた新規 LLM になります。

プロセス全体では、新規生成モデルを作成し、タクソノミーツリーからの合成データを使用してトレーニングおよび評価します。

2.1. データでモデルのトレーニング

Red Hat Enterprise Linux AI を使用すると、合成生成されたデータを使用してモデルをトレーニングできます。次の手順では、LAB 複数フェーズトレーニングストラテジーを使用してこれを行う方法を示します。

重要

Red Hat Enterprise Linux AI の一般公開 (GA) は、トレーニングと推論サービングを同時に実行するサポートは提供していません。推論サーバーが実行中の場合は、トレーニングプロセスを開始する前に閉じる必要があります。

前提条件

  • 起動可能なコンテナーイメージを使用して RHEL AI をインストールしている。
  • granite-7b-starter モデルがダウンロードされている。
  • ナレッジデータを含むカスタム qna.yaml ファイルが作成されている。
  • 合成データ生成 (SDG) プロセスを実行した。
  • prometheus-8x7b-v2-0 ジャッジモデルをダウンロードしている。
  • マシンの root ユーザーアクセス権がある。

手順

  1. SDG から生成されたデータファイルを使用して次のコマンドを実行すると、マルチフェーズのトレーニングと評価を実行できます。

    注記

    トレーニングログを表示するには、ilab model train コマンドで --enable-serving-output フラグを使用できます。

    $ ilab model train --strategy lab-multiphase \
            --phased-phase1-data ~/.local/share/instructlab/datasets/<generation-date>/<knowledge-train-messages-jsonl-file> \
            --phased-phase2-data ~/.local/share/instructlab/datasets/<generation-date>/<skills-train-messages-jsonl-file>
    Copy to Clipboard Toggle word wrap

    以下は、

    <generation-date>
    Synthetic Data Generation (SDG) を実行する日付。
    <knowledge-train-messages-file>
    SDG 中に生成された knowledge_messages.jsonl ファイルのロケーションを指定します。RHEL AI は、この .jsonl ファイルのデータを使用して、学生モデル granite-7b-starter をトレーニングします。パスの例は、~/.local/share/instructlab/datasets/2024-09-07_194933/knowledge_train_msgs_2024-09-07T20_54_21.jsonl です。
    <skills-train-messages-file>
    SDG 中に生成された skills_messages.jsonl ファイルのロケーションを指定します。RHEL AI は、.jsonl ファイルのデータを使用して学生モデル granite-7b-starter をトレーニングします。パスの例は、~/.local/share/instructlab/datasets/2024-09-07_194933/skills_train_msgs_2024-09-07T20_54_21.jsonl です。
注記

--strategy lab-skills-only の値を使用して、モデルに対してスキルのみのトレーニングを実行できます。

スキルのみのトレーニングコマンドの例:

$ ilab model train --strategy lab-skills-only --phased-phase2-data ~/.local/share/instructlab/datasets/<skills-train-messages-jsonl-file>
Copy to Clipboard Toggle word wrap

  1. 最初のフェーズでは、ナレッジの提供から得られた合成データを使用してモデルをトレーニングします。

    トレーニングナレッジの出力例

    Training Phase 1/2...
    TrainingArgs for current phase: TrainingArgs(model_path='/opt/app-root/src/.cache/instructlab/models/granite-7b-starter', chat_tmpl_path='/opt/app-root/lib64/python3.11/site-packages/instructlab/training/chat_templates/ibm_generic_tmpl.py', data_path='/tmp/jul19-knowledge-26k.jsonl', ckpt_output_dir='/tmp/e2e/phase1/checkpoints', data_output_dir='/opt/app-root/src/.local/share/instructlab/internal', max_seq_len=4096, max_batch_len=55000, num_epochs=2, effective_batch_size=128, save_samples=0, learning_rate=2e-05, warmup_steps=25, is_padding_free=True, random_seed=42, checkpoint_at_epoch=True, mock_data=False, mock_data_len=0, deepspeed_options=DeepSpeedOptions(cpu_offload_optimizer=False, cpu_offload_optimizer_ratio=1.0, cpu_offload_optimizer_pin_memory=False, save_samples=None), disable_flash_attn=False, lora=LoraOptions(rank=0, alpha=32, dropout=0.1, target_modules=('q_proj', 'k_proj', 'v_proj', 'o_proj'), quantize_data_type=<QuantizeDataType.NONE: None>))
    Copy to Clipboard Toggle word wrap

  2. 次に、RHEL AI は次のフェーズで使用する最適なチェックポイントを選択します。
  3. 次のフェーズでは、スキルデータからの合成データを使用してモデルをトレーニングします。

    トレーニングスキルの出力例

    Training Phase 2/2...
    TrainingArgs for current phase: TrainingArgs(model_path='/tmp/e2e/phase1/checkpoints/hf_format/samples_52096', chat_tmpl_path='/opt/app-root/lib64/python3.11/site-packages/instructlab/training/chat_templates/ibm_generic_tmpl.py', data_path='/usr/share/instructlab/sdg/datasets/skills.jsonl', ckpt_output_dir='/tmp/e2e/phase2/checkpoints', data_output_dir='/opt/app-root/src/.local/share/instructlab/internal', max_seq_len=4096, max_batch_len=55000, num_epochs=2, effective_batch_size=3840, save_samples=0, learning_rate=2e-05, warmup_steps=25, is_padding_free=True, random_seed=42, checkpoint_at_epoch=True, mock_data=False, mock_data_len=0, deepspeed_options=DeepSpeedOptions(cpu_offload_optimizer=False, cpu_offload_optimizer_ratio=1.0, cpu_offload_optimizer_pin_memory=False, save_samples=None), disable_flash_attn=False, lora=LoraOptions(rank=0, alpha=32, dropout=0.1, target_modules=('q_proj', 'k_proj', 'v_proj', 'o_proj'), quantize_data_type=<QuantizeDataType.NONE: None>))
    Copy to Clipboard Toggle word wrap

  4. 次に、RHEL AI は、Multi-turn Benchmark (MT-Bench) を使用してフェーズ 2 モデルトレーニングのすべてのチェックポイントを評価し、最もパフォーマンスの高いチェックポイントを、完全にトレーニングされた出力モデルとして返します。

    スキル評価の出力例

    MT-Bench evaluation for Phase 2...
    Using gpus from --gpus or evaluate config and ignoring --tensor-parallel-size configured in serve vllm_args
    INFO 2024-08-15 10:04:51,065 instructlab.model.backends.backends:437: Trying to connect to model server at http://127.0.0.1:8000/v1
    INFO 2024-08-15 10:04:53,580 instructlab.model.backends.vllm:208: vLLM starting up on pid 79388 at http://127.0.0.1:54265/v1
    INFO 2024-08-15 10:04:53,580 instructlab.model.backends.backends:450: Starting a temporary vLLM server at http://127.0.0.1:54265/v1
    INFO 2024-08-15 10:04:53,580 instructlab.model.backends.backends:465: Waiting for the vLLM server to start at http://127.0.0.1:54265/v1, this might take a moment... Attempt: 1/300
    INFO 2024-08-15 10:04:58,003 instructlab.model.backends.backends:465: Waiting for the vLLM server to start at http://127.0.0.1:54265/v1, this might take a moment... Attempt: 2/300
    INFO 2024-08-15 10:05:02,314 instructlab.model.backends.backends:465: Waiting for the vLLM server to start at http://127.0.0.1:54265/v1, this might take a moment... Attempt: 3/300
    moment... Attempt: 3/300
    INFO 2024-08-15 10:06:07,611 instructlab.model.backends.backends:472: vLLM engine successfully started at http://127.0.0.1:54265/v1
    Copy to Clipboard Toggle word wrap

    1. トレーニングが完了すると、確認が表示され、最もパフォーマンスの良かったチェックポイントが表示されます。

      完全な複数フェーズトレーニング実行の出力例

      Training finished! Best final checkpoint: samples_1945 with score: 6.813759384
      Copy to Clipboard Toggle word wrap

      このチェックポイントは評価とサービングに必要なパスなので、メモしておいてください。

検証

  • ilab model train を使用してモデルをトレーニングする場合は、トレーニングされたデータポイントの数に基づいて、複数のチェックポイントが samples_ 接頭辞とともに保存されます。これらは ~/.local/share/instructlab/phase/ ディレクトリーに保存されます。

    $ ls ~/.local/share/instructlab/phase/<phase1-or-phase2>/checkpoints/
    Copy to Clipboard Toggle word wrap

    新しいモデルの出力例

    samples_1711 samples_1945 samples_1456 samples_1462 samples_1903
    Copy to Clipboard Toggle word wrap

2.1.1. トレーニングランの継続または再開

RHEL AI を使用すると、マルチフェーズのトレーニング中に失敗した可能性のあるトレーニング実行を続行できます。トレーニング実行が失敗する原因はいくつかあります。

  • vLLM サーバーが正しく起動しない可能性があります。
  • アクセラレーターまたは GPU がフリーズし、トレーニングが中止される可能性があります。
  • InstructLab config.yaml ファイルにエラーがある可能性があります。

マルチフェーズのトレーニングを初めて実行すると、初期トレーニングデータが journalfile.yaml ファイルに保存されます。必要に応じて、ファイル内のこのメタデータを使用して、失敗したトレーニングを再開できます。

マルチフェーズのトレーニングを実行する際に、CLI プロンプトに従ってトレーニングデータをクリアするトレーニング実行を再開することもできます。

前提条件

  • 合成データを使用してマルチフェーズのトレーニングを実行したが、失敗した。

手順

  1. マルチフェーズのトレーニングコマンドを再度実行します。

    $ ilab model train --strategy lab-multiphase \
            --phased-phase1-data ~/.local/share/instructlab/datasets/<generation-date>/<knowledge-train-messages-jsonl-file> \
            --phased-phase2-data ~/.local/share/instructlab/datasets/<generation-date>/<skills-train-messages-jsonl-file>
    Copy to Clipboard Toggle word wrap

    Red Hat Enterprise Linux AI CLI は、journalfile.yaml ファイルが存在するかどうかを読み取り、その時点からトレーニング実行を続行します。

  2. CLI は、前回のトレーニング実行を続行するか、最初から開始するかを尋ねます。

    • プレビューのトレーニング実行を続行するには、シェルに n と入力します。

      Metadata (checkpoints, the training journal) may have been saved from a previous training run.
      By default, training will resume from this metadata if it exists
      Alternatively, the metadata can be cleared, and training can start from scratch
      Would you like to START TRAINING FROM THE BEGINNING? n
      Copy to Clipboard Toggle word wrap
    • トレーニング実行を再開するには、ターミナルに y と入力します。

      Metadata (checkpoints, the training journal) may have been saved from a previous training run.
      By default, training will resume from this metadata if it exists
      Alternatively, the metadata can be cleared, and training can start from scratch
      Would you like to START TRAINING FROM THE BEGINNING? y
      Copy to Clipboard Toggle word wrap

      再起動すると、システムキャッシュから以前のチェックポイント、ジャーナルファイル、その他のトレーニングデータもクリアされます。

第3章 モデルの評価

新しいモデルの改善を測定する場合は、評価プロセスを使用してそのパフォーマンスをベースモデルと比較できます。また、モデルと直接チャットして、新しいモデルが作成したナレッジを学習したかどうかを定性的に確認することもできます。モデルの改善についてより定量的な結果が必要な場合は、RHEL AI CLI で評価プロセスを実行できます。

3.1. 新しいモデルの評価

以下の手順に従って、RHEL AI CLI で評価プロセスを実行できます。

前提条件

  • 起動可能なコンテナーイメージを使用して RHEL AI をインストールしている。
  • スキルまたはナレッジを盛り込んだカスタムの qna.yaml ファイルを作成している。
  • データ生成プロセスが実行されている。
  • RHEL AI トレーニングプロセスを使用してモデルがトレーニングされている。
  • prometheus-8x7b-v2-0 ジャッジモデルをダウンロードしている。
  • マシンの root ユーザーアクセス権がある。

手順

  1. qna.yaml ファイルを作成した作業中の Git ブランチに移動します。
  2. さまざまなベンチマークで評価プロセスを実行できるようになりました。各コマンドには、評価するトレーニング済み samples モデルへのパスが必要です。これらのチェックポイントには ~/.local/share/instructlab/checkpoints フォルダーからアクセスできます。

    1. MMLU_BRANCH ベンチマーク - ナレッジの貢献がモデルにどのような影響を与えたかを測定する場合は、次のコマンドを実行して mmlu_branch ベンチマークを実行します。

      $ ilab model evaluate --benchmark mmlu_branch
          --model ~/.local/share/instructlab/phased/phase2/checkpoints/hf_format/<checkpoint> \
          --tasks-dir ~/.local/share/instructlab/datasets/<generation-date>/<node-dataset> \
          --base-model ~/.cache/instructlab/models/granite-7b-starter
      Copy to Clipboard Toggle word wrap

      以下は、

      <checkpoint>
      複数フェーズトレーニング中に生成された最高スコアのチェックポイントファイルを指定します。
      <node-dataset>

      モデルのトレーニングに使用された .jsonl ファイルと同じタイムスタンプを持つ、SDG 中に生成された node_datasets ディレクトリーを ~/.local/share/instructlab/datasets/<generation-date> ディレクトリーに指定します。

      出力例

      # KNOWLEDGE EVALUATION REPORT
      
      ## BASE MODEL (SCORE)
      /home/user/.cache/instructlab/models/instructlab/granite-7b-lab/ (0.74/1.0)
      
      ## MODEL (SCORE)
      /home/user/local/share/instructlab/phased/phases2/checkpoints/hf_format/samples_665(0.78/1.0)
      
      ### IMPROVEMENTS (0.0 to 1.0):
      1. tonsils: 0.74 -> 0.78 (+0.04)
      Copy to Clipboard Toggle word wrap

    2. MT_BENCH_BRANCH ベンチマーク - スキルの貢献がモデルにどのような影響を与えたかを測定する場合は、次のコマンドを実行して mt_bench_branch ベンチマークを実行します。

      $ ilab model evaluate \
          --benchmark mt_bench_branch \
          --model ~/.local/share/instructlab/phased/phase2/checkpoints/hf_format/<checkpoint> \
          --judge-model ~/.cache/instructlab/models/prometheus-8x7b-v2-0 \
          --branch <worker-branch> \
          --base-branch <worker-branch>
      Copy to Clipboard Toggle word wrap

      以下は、

      <checkpoint>
      複数フェーズトレーニング中に生成された最高スコアのチェックポイントファイルを指定します。
      <worker-branch>
      タクソノミーツリーにデータを追加するときに使用したブランチを指定します。
      <num-gpus>

      評価に使用する GPU の数を指定します。

      出力例

      # SKILL EVALUATION REPORT
      
      ## BASE MODEL (SCORE)
      /home/user/.cache/instructlab/models/instructlab/granite-7b-lab (5.78/10.0)
      
      ## MODEL (SCORE)
      /home/user/local/share/instructlab/phased/phases2/checkpoints/hf_format/samples_665(6.00/10.0)
      
      ### IMPROVEMENTS (0.0 to 10.0):
      1. foundational_skills/reasoning/linguistics_reasoning/object_identification/qna.yaml: 4.0 -> 6.67 (+2.67)
      2. foundational_skills/reasoning/theory_of_mind/qna.yaml: 3.12 -> 4.0 (+0.88)
      3. foundational_skills/reasoning/linguistics_reasoning/logical_sequence_of_words/qna.yaml: 9.33 -> 10.0 (+0.67)
      4. foundational_skills/reasoning/logical_reasoning/tabular/qna.yaml: 5.67 -> 6.33 (+0.67)
      5. foundational_skills/reasoning/common_sense_reasoning/qna.yaml: 1.67 -> 2.33 (+0.67)
      6. foundational_skills/reasoning/logical_reasoning/causal/qna.yaml: 5.67 -> 6.0 (+0.33)
      7. foundational_skills/reasoning/logical_reasoning/general/qna.yaml: 6.6 -> 6.8 (+0.2)
      8. compositional_skills/writing/grounded/editing/content/qna.yaml: 6.8 -> 7.0 (+0.2)
      9. compositional_skills/general/synonyms/qna.yaml: 4.5 -> 4.67 (+0.17)
      
      ### REGRESSIONS (0.0 to 10.0):
      1. foundational_skills/reasoning/unconventional_reasoning/lower_score_wins/qna.yaml: 5.67 -> 4.0 (-1.67)
      2. foundational_skills/reasoning/mathematical_reasoning/qna.yaml: 7.33 -> 6.0 (-1.33)
      3. foundational_skills/reasoning/temporal_reasoning/qna.yaml: 5.67 -> 4.67 (-1.0)
      
      ### NO CHANGE (0.0 to 10.0):
      1. foundational_skills/reasoning/linguistics_reasoning/odd_one_out/qna.yaml (9.33)
      2. compositional_skills/grounded/linguistics/inclusion/qna.yaml (6.5)
      Copy to Clipboard Toggle word wrap

  3. オプション: MMLU および MT_BENCH ベンチマークを使用して、各チェックポイントを手動で評価できます。標準化されたナレッジやスキルのセットに対して任意のモデルを評価できるため、独自のモデルのスコアを他の LLM と比較できます。

    1. MMLU - 標準化されたナレッジデータセットに対する新しいモデルの評価スコアを確認する場合は、次のコマンドを実行して mmlu ベンチマークを設定します。

      $ ilab model evaluate --benchmark mmlu --model ~/.local/share/instructlab/phased/phase2/checkpoints/hf_format/samples_665 --skip-server
      Copy to Clipboard Toggle word wrap

      以下は、

      <checkpoint>

      複数フェーズトレーニング中に生成されたチェックポイントファイルの 1 つを指定します。

      出力例

      # KNOWLEDGE EVALUATION REPORT
      
      ## MODEL (SCORE)
      /home/user/.local/share/instructlab/phased/phase2/checkpoints/hf_format/samples_665
      
      ### SCORES (0.0 to 1.0):
      mmlu_abstract_algebra - 0.31
      mmlu_anatomy - 0.46
      mmlu_astronomy - 0.52
      mmlu_business_ethics - 0.55
      mmlu_clinical_knowledge - 0.57
      mmlu_college_biology - 0.56
      mmlu_college_chemistry - 0.38
      mmlu_college_computer_science - 0.46
      ...
      Copy to Clipboard Toggle word wrap

    2. MT_BENCH - 標準化されたスキルセットに対する新しいモデルの評価スコアを確認する場合は、次のコマンドを実行して mt_bench ベンチマークを設定します。

      $ ilab model evaluate --benchmark mt_bench --model ~/.local/share/instructlab/phased/phases2/checkpoints/hf_format/samples_665
      Copy to Clipboard Toggle word wrap

      以下は、

      <checkpoint>

      複数フェーズトレーニング中に生成されたチェックポイントファイルの 1 つを指定します。

      出力例

      # SKILL EVALUATION REPORT
      
      ## MODEL (SCORE)
      /home/user/local/share/instructlab/phased/phases2/checkpoints/hf_format/samples_665(7.27/10.0)
      
      ### TURN ONE (0.0 to 10.0):
      7.48
      
      ### TURN TWO (0.0 to 10.0):
      7.05
      Copy to Clipboard Toggle word wrap

3.1.1. Domain-Knowledge ベンチマーク評価

重要

Domain-Knowledge ベンチマーク評価は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

RHEL AI、MMLU、および MMLU_branch における現在のナレッジ評価ベンチマークは、複数の選択問題に回答する機能についてモデルを評価します。モデルの回答がある程度正しい場合や間違っている場合に、評価を与える方法がありませんでした。

Domain-Knowledge ベンチマーク (DK-bench) の評価では、カスタム評価用の質問を作成し、モデルの回答をスケールに基づいて採点することができます。

各回答は参照回答と比較され、ジャッジモデルによって以下のスケールで採点されます。

Expand
表3.1 Domain-Knowledge ベンチマーク rubric
スコア基準

1

その回答は完全に誤っているか、無関係であるか、または参照回答と意味のある形で一致していません。

2

回答は参照回答と一部一致しているものの、大きな誤り、重要な省略、または無関係な情報が含まれています。

3

回答は全体的に参照回答と一致しているものの、詳細や明確さが不足している、または軽微な誤りが含まれています。

4

回答はほぼ正確で、参照回答と高い整合性があり、軽微な問題や省略がある程度です。

5

回答は完璧で、参照回答と完全に一致しており、明確で、綿密かつ詳細に渡っています。

前提条件

  • 起動可能なコンテナーイメージを使用して RHEL AI をインストールしている。
  • RHEL AI トレーニングプロセスを使用してモデルがトレーニングされている。
  • prometheus-8x7b-v2-0 judge モデルをダウンロードしている。
  • マシンの root ユーザーアクセス権がある。

手順

  1. カスタム評価を利用するには、モデルに回答させて評価したいすべての質問を含む jsonl ファイルを作成する必要があります。

    DK-bench jsonl ファイルの例

    {"user_input":"What is the capital of Canada?","reference":"The capital of Canada is Ottawa."}
    Copy to Clipboard Toggle word wrap

    以下は、

    user_input
    モデルへの質問が含まれています。
    reference
    質問への回答が含まれています。
  2. カスタム評価の質問を使用して DK-bench ベンチマークを実行するには、以下のコマンドを実行します。

    $ ilab model evaluate --benchmark dk_bench --input-questions <path-to-jsonl-file> --model <path-to-model>
    Copy to Clipboard Toggle word wrap

    以下は、

    <path-to-jsonl-file>
    質問と回答が含まれる jsonl ファイルへのパスを指定します。
    <path-to-model>

    評価するモデルへのパスを指定します。

    コマンドの例

    $ ilab model evaluate --benchmark dk_bench --input-questions /home/use/path/to/questions.jsonl --model ~/.cache/instructlab/models/instructlab/granite-7b-lab
    Copy to Clipboard Toggle word wrap

    domain-Knowledge ベンチマーク評価の出力例

    # DK-BENCH REPORT
    
    ## MODEL: granite-7b-lab
    
    Question #1:     5/5
    Question #2:     5/5
    Question #3:     5/5
    Question #4:     5/5
    Question #5:     2/5
    Question #6:     3/5
    Question #7:     2/5
    Question #8:     3/5
    Question #9:     5/5
    Question #10:     5/5
    ----------------------------
    Average Score:   4.00/5
    Total Score:     40/50
    Copy to Clipboard Toggle word wrap

第4章 新しいモデルのサービングおよびチャット

モデルをサービングして、モデルをマシンにデプロイする必要があります。これにより、モデルがデプロイされ、対話やチャットにモデルを使用できるようになります。

4.1. 新しいモデルのサービング

新しいモデルを操作するには、サービングを通じてマシン内でモデルをアクティブ化する必要があります。ilab model serve コマンドは、モデルとチャットできる vLLM サーバーを起動します。

前提条件

  • 起動可能なコンテナーイメージを使用して RHEL AI をインストールしている。
  • InstructLab を初期化している。
  • タクソノミーツリーをカスタマイズし、合成データ生成を実行して、新しいモデルをトレーニングして評価している。
  • マシンで root ユーザーアクセス権がある。

手順

  • 次のコマンドを実行して、モデルを提供できます。

    $ ilab model serve --model-path <path-to-best-performed-checkpoint>
    Copy to Clipboard Toggle word wrap

    以下は、

    <path-to-best-performed-checkpoint>

    トレーニング後に構築したチェックポイントへのフルパスを指定します。最もパフォーマンスの高いチェックポイントが新しいモデルになり、トレーニング後にファイルパスが表示されます。

    コマンドの例:

    $ ilab model serve --model-path ~/.local/share/instructlab/phased/phase2/checkpoints/hf_format/samples_1945/
    Copy to Clipboard Toggle word wrap

    重要

    モデルパスの最後にスラッシュ / があることを確認してください。

    ilab model serve コマンドの出力例

    $ ilab model serve --model-path ~/.local/share/instructlab/phased/phase2/checkpoints/hf_format/<checkpoint>
    INFO 2024-03-02 02:21:11,352 lab.py:201 Using model /home/example-user/.local/share/instructlab/checkpoints/hf_format/checkpoint_1945 with -1 gpu-layers and 4096 max context size.
    Starting server process
    After application startup complete see http://127.0.0.1:8000/docs for API.
    Press CTRL+C to shut down the server.
    Copy to Clipboard Toggle word wrap

4.2. 新しいモデルとのチャット

データを使用してトレーニングされたモデルとチャットできます。

前提条件

  • 起動可能なコンテナーイメージを使用して RHEL AI をインストールしている。
  • InstructLab を初期化している。
  • タクソノミーツリーをカスタマイズし、合成データ生成を実行して、新しいモデルをトレーニングして評価している。
  • チェックポイントモデルがサービングされている。
  • マシンで root ユーザーアクセス権がある。

手順

  1. 1 つのターミナルウィンドウでモデルをサービングしているため、モデルとチャットするには新しいターミナルウィンドウを開く必要があります。
  2. 新しいモデルとチャットするには、次のコマンドを実行します。

    $ ilab model chat --model <path-to-best-performed-checkpoint-file>
    Copy to Clipboard Toggle word wrap

    以下は、

    <path-to-best-performed-checkpoint-file>

    トレーニング後に構築した新しいモデルチェックポイントを指定します。最もパフォーマンスの高いチェックポイントが新しいモデルになり、トレーニング後にファイルパスが表示されます。

    コマンドの例:

    $ ilab model chat --model ~/.local/share/instructlab/phased/phase2/checkpoints/hf_format/samples_1945
    Copy to Clipboard Toggle word wrap

  3. InstructLab チャットボットの出力例

    $ ilab model chat
    ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────── system ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
    │ Welcome to InstructLab Chat w/ CHECKPOINT_1945 (type /h for help)                                                                                                                                                                    │
    ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
    >>>                                                                                                                                                                                                                        [S][default]
    Copy to Clipboard Toggle word wrap

    チャットボットを終了するには exit と入力します。

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る