使用 RHEL AI 生成自定义 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.5和knowledge-adapter-v3:1.5LoRA 分层技术和知识适配器。 - 在机器上具有 root 用户访问权限。
流程
要根据自定义税务数据集生成一个新的复合数据集,请运行以下命令:
$ ilab data generate注意在运行
ilab data generate命令时,您可以使用--enable-serving-output标志来显示 vLLM 启动日志。在 SDG 进程开始时,vLLM 会尝试启动用于托管
mixtral-8x7B-instructteacher 模型的服务器。试图启动服务器的 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当 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.
当 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注意根据您的硬件规格,这个过程可能会消耗大量时间。
验证
要验证 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.jsonl和skills_train_msgs.jsonl文件。您需要在多阶段培训期间指定此文件。每个 JSONL 都有文件的时间戳,如knowledge_train_msgs_2024-08-08T20_04_28.jsonl,在培训时使用最新的文件。可选:您可以通过导航到
~/.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.5和knowledge-adapter-v3:1.5LoRA 分层技术和知识适配器。 - 在机器上具有 root 用户访问权限。
流程
要在后台启动 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.您可以通过几种方法管理、查看和与分离的 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
1.3. 使用 llama-3.3-70B-Instruct 模型作为指导模型(技术预览) 复制链接链接已复制到粘贴板!
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.5和knowledge-adapter-v3:1.5LoRA 分层技术和知识适配器。
流程
-
运行以下命令,将
llama-3.3-70b-Instruct下载到 RHEL AI 系统:
$ ilab model download --repository docker://registry.redhat.io/rhelai1/llama-3.3-70b-Instruct --release latest
-
您可以运行以下命令来运行带有
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-0judge 模型。 - 在机器上具有 root 用户访问权限。
流程
您可以使用 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>
第一阶段使用知识贡献中的复合数据为模型提供培训。
培训知识输出示例
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>))- 然后,RHEL AI 选择用于下一阶段的最佳检查点。
下一阶段使用来自技术数据的复合数据为模型提供培训。
培训技能输出示例
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>))然后,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培训完成后,会出现确认信息并显示您的最佳执行检查点。
完整的多阶段培训运行的输出示例
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 提示来清除培训数据。
先决条件
- 您使用复合数据运行多阶段培训,并且失败了。
流程
再次运行多阶段培训命令。
$ 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文件是否存在,并继续从该点运行培训。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-0judge 模型。 - 在机器上具有 root 用户访问权限。
流程
-
导航到创建
qna.yaml文件的工作 Git 分支。 现在,您可以针对不同的基准运行评估过程。每个命令都需要经过培训
的示例模型评估的路径,您可以访问~/.local/share/instructlab/checkpoints文件夹中的这些检查点。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)
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)
可选: 您可以使用 MMLU 和 MT_BENCH 基准手动评估每个检查点。您可以根据标准化的知识或技能来评估任何模型,允许您将自己的模型分数与其他 LLM 进行比较。
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 ...
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 模型的以下等级与参考答案和评级进行比较:
| 分数 | 标准 |
|---|---|
| 1 | 响应完全不正确,不相关,或者不会以任何有意义的方式与参考一致。 |
| 2 | 响应部分与引用匹配,但包含主要错误、大量遗漏或不相关的信息。 |
| 3 | 响应与整个参考一致,但没有足够的详情、清晰或包含微不足的情况。 |
| 4 | 响应最准确,与参考一致,仅包含小问题或遗漏。 |
| 5 | 响应完全准确,与参考完全一致,并明确、全面且详细。 |
先决条件
- 已使用可引导容器镜像安装了 RHEL AI。
- 您接受了使用 RHEL AI 培训流程的模型。
- 您下载了 prometheus-8x7b-v2-0 judge 模型。
- 在机器上具有 root 用户访问权限。
流程
要使用自定义评估,您必须创建一个
jsonl文件,其中包含您要要求模型回答和评估的每个问题。DK-bench
jsonl文件示例{"user_input":"What is the capital of Canada?","reference":"The capital of Canada is Ottawa."}其中
- user_input
- 包含模型的问题。
- reference
- 包含问题的答案。
要使用自定义评估问题运行 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-labdomain-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 用户访问权限。
流程
- 由于您要在一个终端窗口中提供模型,您必须打开一个新的终端窗口来与模型进行聊天。
要与新模型进行聊天,请运行以下命令:
$ 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
InstructLab chatbot 的输出示例
$ ilab model chat ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────── system ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ Welcome to InstructLab Chat w/ CHECKPOINT_1945 (type /h for help) │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ >>> [S][default]键入
exit以离开 chatbot。