第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>

    以下は、

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

  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>))

  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>))

  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

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

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

      Training finished! Best final checkpoint: samples_1945 with score: 6.813759384

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

検証

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

    $ ls ~/.local/share/instructlab/phase/<phase1-or-phase2>/checkpoints/

    新しいモデルの出力例

    samples_1711 samples_1945 samples_1456 samples_1462 samples_1903

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>

    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
    • トレーニング実行を再開するには、ターミナルに 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

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

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る