对examples/train_lora/llama3_lora_eval.yaml模型评估配置文件的理解。
### examples/train_lora/llama3_lora_eval.yaml
### model
model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct
adapter_name_or_path: saves/llama3-8b/lora/sft # 可选项### method
finetuning_type: lora### dataset
task: mmlu_test # mmlu_test, ceval_validation, cmmlu_test
template: fewshot
lang: en
n_shot: 5### output
save_dir: saves/llama3-8b/lora/eval### eval
batch_size: 4
这份配置文件是用于 LLaMA-Factory(或类似工具)中对 LLaMA3-8B 模型使用 LoRA 方法进行评估(evaluation) 的 YAML 配置文件。
✅ model
模块
model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct
adapter_name_or_path: saves/llama3-8b/lora/sft # 可选项
-
model_name_or_path
:预训练模型的路径或 HuggingFace 上的模型名称,这里指定的是 Meta 的 LLaMA-3 8B Instruct 版本。 -
adapter_name_or_path
:LoRA 微调之后的 adapter 权重路径(可选)。用于加载之前训练好的 LoRA 权重进行评估。如果不设置,就只会用 base 模型评估。
✅ method
模块
finetuning_type: lora
-
finetuning_type
:指定所使用的微调方法是LoRA
(Low-Rank Adaptation)。这说明评估时会加载并使用 LoRA 插入模块。
✅ dataset
模块
task: mmlu_test # mmlu_test, ceval_validation, cmmlu_test
template: fewshot
lang: en
n_shot: 5
-
task
:评估使用的任务,这里是mmlu_test
,即衡量大模型常识、逻辑、学术等方面的能力的 MMLU 测试集。 -
template
:提示模板格式为fewshot
,即 few-shot prompting(少样本提示)。 -
lang
:数据集语言是英文(en)。 -
n_shot
:few-shot 的样本数量,每个问题前面给出 5 个示例作为提示。
✅ output
模块
save_dir: saves/llama3-8b/lora/eval
-
save_dir
:评估结果将保存在这个目录下。
✅ eval
模块
batch_size: 4
-
batch_size
:评估时使用的批大小为 4,取决于显存大小和模型规模。
🔍 总结
该配置文件的作用是:
使用已经 LoRA 微调好的 LLaMA3-8B-Instruct 模型(包括 adapter),加载 MMLU 测试集 进行 5-shot 评估,结果保存到
saves/llama3-8b/lora/eval
,每次评估处理 4 条样本。
如果后续要评估其他任务(比如 ceval_validation
或 cmmlu_test
),只需要更改 task
字段即
一些疑问
---------------------------------------------------------------------------------------------------------------------------------
🔍 一、配置文件中没有显式写“数据集路径”是为什么?
这是因为:
✅ task: mmlu_test
这个字段并不是随意填写的,而是框架(比如 LLaMA-Factory)内部预定义好的任务名称。比如:
task 字段值 | 对应评估数据集 | 是否内置 | 常见用途 |
---|---|---|---|
mmlu_test | MMLU测试集 | ✅ 是 | 多学科常识推理能力评估 |
ceval_validation | CEval 验证集 | ✅ 是 | 中文考试题目评估(如公务员考试) |
cmmlu_test | 中文版MMLU | ✅ 是 | 中文多领域评估 |
🔸框架会自动下载/加载这些内置任务的数据集并格式化,无需用户自己指定路径。
📘 二、评估是怎么进行的?
评估流程如下:
-
加载 base 模型:比如
meta-llama/Meta-Llama-3-8B-Instruct
。 -
加载 adapter(如果指定):这就是 LoRA 的权重(后面详细解释)。
-
加载数据集(根据 task 自动加载)
-
构造 few-shot prompt:根据
n_shot=5
和template: fewshot
,自动拼接5个示例+测试题。 -
模型推理:根据 Prompt 输出结果。
-
打分:框架会自动根据答案计算准确率(Accuracy)。
👉 整个过程由框架自动完成,用户只需要配置 task
和模板即可,非常方便。
🧩 三、什么是 LoRA?Adapter 又是什么?
💡1. 什么是 LoRA?
LoRA(Low-Rank Adaptation)是一种参数高效微调方法:
-
它不改动原始大模型的参数。
-
而是插入少量可训练的“低秩矩阵”模块(adapter),只训练这些模块。
-
微调完成后,保存的只是这部分小权重,称为 LoRA adapter。
🔧 原始模型 + adapter → 微调后模型
💡2. 什么是 adapter?
在这里:
-
adapter
是微调生成的 LoRA 插件权重。 -
它是训练好的 差分权重(即 delta),并不能单独使用,需要配合原模型一起加载。
-
通常是一个小文件夹,里面是
adapter_config.json
和adapter_model.bin
等。
adapter_name_or_path: saves/llama3-8b/lora/sft
就是告诉框架:“请把这个 LoRA adapter 加载到原始模型上,一起用来评估”。
✅ 小结一下
名称 | 含义 |
---|---|
task | 内置任务名,自动加载对应数据集 |
adapter_name_or_path | 指向微调得到的 LoRA 插件路径 |
LoRA | 低秩微调方法,训练时只动少量权重,效率高,成本低 |
评估流程 | 构造 prompt → 模型预测 → 自动比对答案打分 |