ModelScope/SWIFT项目中的模型评估指南
概述
在人工智能模型开发过程中,评估是至关重要的环节。ModelScope/SWIFT项目提供了一套完整的评估解决方案,支持对原始模型和训练后模型进行标准化评估。本文将详细介绍SWIFT框架中的评估功能及其使用方法。
评估能力介绍
SWIFT评估功能基于Magic Tower社区的EvalScope评估框架构建,经过封装优化后能够满足各类模型的评估需求。评估功能支持以下三类评估后端:
1. Native评估后端(默认)
主要支持纯文本评估,同时支持评估结果可视化。支持的数据集包括:
- 数学推理:gsm8k、competition_math
- 常识推理:hellaswag、arc
- 代码能力:humaneval
- 专业知识:ceval、cmmlu、mmlu
- 其他能力:bbh、general_qa、gpqa等
2. OpenCompass评估后端
专注于纯文本评估,支持更广泛的数据集,如:
- 阅读理解:CMRC、DRCD
- 数学能力:math
- 代码生成:mbpp
- 语言理解:afqmc、ocnli等
3. VLMEvalKit评估后端
专为多模态评估设计,支持:
- 图像理解:COCO_VAL、MME
- 视觉问答:ScienceQA、MMBench
- 文档理解:DocVQA
- 视频理解:MMBench-Video等
环境准备
使用评估功能前,需要安装相关依赖:
pip install ms-swift[eval] -U
基础评估流程
纯文本评估示例
CUDA_VISIBLE_DEVICES=0 \
swift eval \
--model Qwen/Qwen2.5-0.5B-Instruct \
--eval_backend Native \
--infer_backend pt \
--eval_limit 10 \
--eval_dataset gsm8k
参数说明:
model
: 指定模型路径或模型IDeval_backend
: 评估后端(Native/OpenCompass/VLMEvalKit)infer_backend
: 推理后端(pt/vllm/lmdeploy)eval_limit
: 评估样本数量eval_dataset
: 评估数据集名称
复杂评估示例
CUDA_VISIBLE_DEVICES=0 \
swift eval \
--model Qwen/Qwen2.5-0.5B-Instruct \
--eval_backend Native \
--infer_backend pt \
--eval_limit 10 \
--eval_dataset gsm8k \
--dataset_args '{"gsm8k": {"few_shot_num": 0, "filters": {"remove_until": "</think>"}}}' \
--eval_generation_config '{"max_tokens": 512, "temperature": 0}' \
--extra_eval_args '{"ignore_errors": true, "debug": true}'
训练过程中的评估
SWIFT支持在训练过程中定期评估模型性能:
CUDA_VISIBLE_DEVICES=0 \
swift sft \
--model "Qwen/Qwen2.5-0.5B-Instruct" \
--train_type "lora" \
--dataset "AI-ModelScope/alpaca-gpt4-data-zh#100" \
--eval_strategy "steps" \
--eval_steps "5" \
--eval_use_evalscope \
--eval_datasets "gsm8k" \
--eval_datasets_args '{"gsm8k": {"few_shot_num": 0}}' \
--eval_limit "10"
关键评估参数:
eval_strategy
: 评估策略(steps/epoch)eval_steps
: 评估步长间隔eval_use_evalscope
: 启用评估功能eval_datasets
: 评估数据集列表eval_limit
: 评估样本数量
自定义评估数据集
SWIFT支持两种自定义数据集格式:
1. 选择题格式(MCQ)
适用于选择题场景,评估指标为准确率。
数据格式示例:
id,question,A,B,C,D,answer
1,中国的首都是?,上海,广州,北京,深圳,C
评估命令:
swift eval \
--eval_dataset general_mcq \
--dataset_args '{"general_mcq": {"local_path": "/path/to/mcq", "subset_list": ["example"]}}'
2. 问答格式(QA)
适用于开放问答场景,评估指标为ROUGE和BLEU。
数据格式示例(JSON Lines):
{"query": "中国的首都是?", "response": "北京"}
评估命令:
swift eval \
--eval_dataset general_qa \
--dataset_args '{"general_qa": {"local_path": "/path/to/qa", "subset_list": ["example"]}}'
评估结果解读
评估完成后,系统会输出详细的评估指标:
- 选择题:显示准确率(AverageAccuracy)
- 问答题:显示BLEU-1到BLEU-4以及ROUGE系列指标
- 多模态任务:根据具体任务显示相应指标
最佳实践建议
- 对于快速验证,建议设置较小的
eval_limit
值 - 训练过程中评估频率不宜过高,避免影响训练效率
- 多模态评估需要确保模型支持相应模态
- 自定义数据集时,务必检查数据格式是否符合要求
- 复杂评估场景可结合多个评估后端使用
通过SWIFT的评估功能,开发者可以全面了解模型性能,为模型优化提供数据支持。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考