使用 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 上使用 Synthetic Data Generation (SDG)流程生成复合数据集。SDG 是一个创建人工生成的数据集,它根据提供的示例模拟实际数据的过程。SDG 使用包含问答对作为输入数据的 YAML 文件。使用这些示例,SDG 使用 mixtral-8x7b-instruct-v0-1 LLM 作为生成类似的问题和回答对的指导模型。在 SDG 管道中,根据质量生成和评分许多问题,其中 mixtral-8x7b-instruct-v0-1 指导器模型评估其相关性和一致性。然后,管道应用过滤机制来选择最高级问题,生成相应的答案,并根据原始示例问题进一步评估其准确性。最后一组高质量的问答对包含在用于培训的合成数据集中。

1.1. 使用您的示例创建复合数据集

您可以使用示例并运行 SDG 进程来创建复合数据集。

重要

如果您在有 4xL40s 的系统上运行 SDG,则必须使用以下参数才能使 SDG 正确运行。

ilab data generate --num-cpus 4

先决条件

  • 已使用可引导容器镜像安装了 RHEL AI。
  • 已使用知识数据创建自定义 qna.yaml 文件。
  • 您下载了 SDG 的 mixtral-8x7b-instruct-v0-1 教授模型。
  • 您下载了 skills-adapter-v3:1.5knowledge-adapter-v3:1.5 LoRA 分层技术和知识适配器。
  • 在机器上具有 root 用户访问权限。

流程

  1. 要根据自定义税务数据集生成一个新的复合数据集,请运行以下命令:

    $ ilab data generate
    注意

    在运行 ilab data generate 命令时,您可以使用 --enable-serving-output 标志来显示 vLLM 启动日志。

    1. 在 SDG 进程开始时,vLLM 会尝试启动用于托管 mixtral-8x7B-instruct teacher 模型的服务器。

      试图启动服务器的 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

    2. 当 vLLM 连接后,SDG 进程会根据 qna.yaml 文件中的 seed 示例开始创建复合数据。

      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.

  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

    注意

    根据您的硬件规格,这个过程可能会消耗大量时间。

验证

  1. 要验证 SDG 文件是否已创建,请导航到 ~/.local/share/instructlab/datasets/ 目录,并在生成数据时列出与日期对应的文件。例如:

    $ ls 2024-03-24_194933

    输出示例

    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/

    重要

    记录您最近的 knowledge_train_msgs.jsonlskills_train_msgs.jsonl 文件。您需要在多阶段培训期间指定此文件。每个 JSONL 都有文件的时间戳,如 knowledge_train_msgs_2024-08-08T20_04_28.jsonl,在培训时使用最新的文件。

  2. 可选:您可以通过导航到 ~/.local/share/datasets/ 目录并打开 JSONL 文件来查看 SDG 的输出。

    $ cat ~/.local/share/datasets/<generation-date>/<jsonl-dataset>

    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.

1.2. 在后台运行 Synthetic Data Generation (SDG)

您可以通过多种方法管理和与 SDG 进程交互。

在后台运行 SDG 可让您在 SDG 仍在运行时继续使用终端。

先决条件

  • 已使用可引导容器镜像安装了 RHEL AI。
  • 已使用知识数据创建自定义 qna.yaml 文件。
  • 您下载了 SDG 的 mixtral-8x7b-instruct-v0-1 教授模型。
  • 您下载了 skills-adapter-v3:1.5knowledge-adapter-v3:1.5 LoRA 分层技术和知识适配器。
  • 在机器上具有 root 用户访问权限。

流程

  1. 要在后台启动 SDG 进程,请运行以下命令:

    $ ilab data generate -dt

    成功启动的输出示例

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

  2. 您可以通过几种方法管理、查看和与分离的 SDG 进程进行交互。

    • 您可以输入以下命令来查看所有当前运行的进程及其状态:

      $ ilab process list

      列出进程的输出示例

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

    • 您可以运行以下命令来加入并查看最新的进程:

      警告

      在已经附加后,您无法从 SDG 进程分离。

      $ ilab process attach --latest

RHEL AI 版本 1.5 支持在运行 Synthetic Data Generation (SDG)时使用 llama-3.3-70b-Instruct 作为老板模型。有关如何在 SDG 中使用指导模型的更多信息,请参阅使用 SDG 生成新数据集。使用较大的参数教授器模型(如 llama-3.3-70b-Instruct 模型)可以更有效地评估合成生成的问题和回答对,从而生成更高质量和更准确的数据集。

重要

使用 'llama-3.3-70b-Instruct' 作为描述符模型只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

先决条件

  • 已使用可引导容器镜像安装了 RHEL AI。
  • 您创建了带有知识或技能数据的自定义 qna.yaml 文件。
  • 您下载了 skills-adapter-v3:1.5knowledge-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
  1. 您可以运行以下命令来运行带有 llama-3.3-70b-Instruct 模型的 SDG:
$ ilab data generate --pipeline llama

第 2 章 培训模型

RHEL AI 可以使用您的税务树和复合数据,通过多阶段培训和认证和评估,创建具有特定领域知识或技能的新培训模型。您可以使用您生成的合成数据集运行完整的培训和评估过程。LAB 优化多阶段培训的技术是 LLM 培训类型,经过多个阶段的培训和认证。在这些不同阶段,RHEL AI 运行培训流程并生成模型检查点。为下一阶段选择最佳检查点。这个过程创建多个检查点,并选择最佳分数检查点。这个最佳分数点是您最近被培训的 LLM。

整个过程会创建一个新生成的模型,该模型使用来自您的税务树中的合成数据进行培训并进行评估。

2.1. 培训您的数据模型

您可以使用 Red Hat Enterprise Linux AI 通过您合成生成的数据为模型进行培训。以下流程演示了如何使用 LAB 多阶段培训策略进行此操作。

重要

Red Hat Enterprise Linux AI 正式发布版本不支持更新和推测服务。如果您有一个 inference 服务器正在运行,则必须在开始培训过程前将其关闭。

先决条件

  • 已使用可引导容器镜像安装了 RHEL AI。
  • 您下载了 granite-7b-starter 模型。
  • 已使用知识数据创建自定义 qna.yaml 文件。
  • 您运行复合数据生成(SDG)进程。
  • 您下载了 prometheus-8x7b-v2-0 judge 模型。
  • 在机器上具有 root 用户访问权限。

流程

  1. 您可以使用 SDG 生成的数据文件运行以下命令来运行多阶段培训和认证:

    注意

    您可以使用带有 ilab 模型的 --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>

    其中

    运行 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 值来仅 培训仅针对技能的模型。

仅培训命令的示例:

$ 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 模型培训 的模型时,会根据培训过多少数据点,使用 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 会提示您继续运行以前的培训,或者从开始时开始。

    • 在 shell 中键入 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

      重启也会清除之前检查点、日志文件和其他培训数据的系统缓存。

第 3 章 评估模型

如果要测量新模型的改进,您可以将其性能与基础模型与评估过程进行比较。您还可以直接与模型聊天,以定性地识别新模式是否了解您创建的知识。如果要提高模型的改进量结果,您可以在 RHEL AI CLI 中运行评估过程。

3.1. 评估您的新模型

您可以按照以下流程在 RHEL AI CLI 中运行评估过程。

先决条件

  • 已使用可引导容器镜像安装了 RHEL AI。
  • 您创建了具有知识或知识的自定义 qna.yaml 文件。
  • 您运行复合数据生成过程。
  • 您接受了使用 RHEL AI 培训流程的模型。
  • 您下载了 prometheus-8x7b-v2-0 judge 模型。
  • 在机器上具有 root 用户访问权限。

流程

  1. 导航到创建 qna.yaml 文件的工作 Git 分支。
  2. 现在,您可以针对不同的基准运行评估过程。每个命令都需要经过培训 的示例 模型评估的路径,您可以访问 ~/.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

      其中

      <checkpoint>
      指定在多阶段培训过程中生成的最佳分数检查点文件
      <node-dataset>

      指定在 SDG 中生成的 node_datasets 目录(在 ~/.local/share/instructlab/datasets/ 目录中),其时间戳与用于培训模型的.jsonl 文件相同。

      输出示例

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

    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>

      其中

      <checkpoint>
      指定在多阶段培训过程中生成的最佳分数检查点文件。
      <worker-branch>
      指定在 taxonomy 树中添加数据时使用的分支。
      <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)

  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

      其中

      <checkpoint>

      指定在多阶段培训过程中生成的检查点文件之一。

      输出示例

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

    2. MT_BENCH - 如果您要根据标准化的技术集看到新模型的评估分数,请运行以下命令来设置 mt_bench 基准:

      $ ilab model evaluate --benchmark mt_bench --model ~/.local/share/instructlab/phased/phases2/checkpoints/hf_format/samples_665

      其中

      <checkpoint>

      指定在多阶段培训过程中生成的检查点文件之一。

      输出示例

      # 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

3.1.1. Domain-Knowledge 基准评估

重要

Domain-Knowledge 基准评估只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

RHEL AI、MMLU 和 MMLU_branch 中的当前知识评估基准评估,对其回答多选问题的能力评估模型。无法为模型提供正确或不正确的答案。

Domain-Knowledge 基准(DK-bench)评估提供了提供自定义评估问题的能力,并对模型的评分评分。

给出的每个响应都会根据 judge 模型的以下等级与参考答案和评级进行比较:

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

    其中

    user_input
    包含模型的问题。
    reference
    包含问题的答案。
  2. 要使用自定义评估问题运行 DK-bench 基准,请运行以下命令:

    $ ilab model evaluate --benchmark dk_bench --input-questions <path-to-jsonl-file> --model <path-to-model>

    其中

    <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

    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

第 4 章 使用新模型提供和聊天

您必须通过提供模型将模型部署到机器中。这会部署模型,并使模型可用于交互和聊天。

4.1. 提供新模型

要与新模型交互,您必须通过服务在机器中激活模型。ilab model serving 命令启动一个 vLLM 服务器,允许您与模型进行聊天。

先决条件

  • 已使用可引导容器镜像安装了 RHEL AI。
  • 您初始化了 InstructLab。
  • 您自定义了税务树,运行合成数据生成、培训并评估您的新模型。
  • 您需要机器上的 root 用户访问权限。

流程

  • 您可以运行以下命令来提供模型:

    $ ilab model serve --model-path <path-to-best-performed-checkpoint>

    其中:

    <path-to-best-performed-checkpoint>

    指定到您在培训后构建的检查点的完整路径。您的新模型是最佳执行检查点,其文件路径在培训后显示。

    示例命令:

    $ ilab model serve --model-path ~/.local/share/instructlab/phased/phase2/checkpoints/hf_format/samples_1945/

    重要

    确定在模型路径的末尾有一个斜杠 /

    ilab model serving 命令的输出示例

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

4.2. 使用新模型进行聊天

您可以与已通过数据进行培训的模型进行聊天。

先决条件

  • 已使用可引导容器镜像安装了 RHEL AI。
  • 您初始化了 InstructLab。
  • 您自定义了税务树,运行生成、培训并评估您的新模型的合成数据。
  • 您提供检查点模型。
  • 您需要机器上的 root 用户访问权限。

流程

  1. 由于您要在一个终端窗口中提供模型,您必须打开一个新的终端窗口来与模型进行聊天。
  2. 要与新模型进行聊天,请运行以下命令:

    $ ilab model chat --model <path-to-best-performed-checkpoint-file>

    其中:

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

    指定您在培训后构建的新模型检查点文件。您的新模型是最佳执行检查点,其文件路径在培训后显示。

    示例命令:

    $ ilab model chat --model ~/.local/share/instructlab/phased/phase2/checkpoints/hf_format/samples_1945

  3. InstructLab chatbot 的输出示例

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

    键入 exit 以离开 chatbot。

法律通告

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

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部