ModelScope/SWIFT项目中的模型评估指南

ModelScope/SWIFT项目中的模型评估指南

swift 魔搭大模型训练推理工具箱,支持LLaMA、千问、ChatGLM、BaiChuan等多种模型及LoRA等多种训练方式(The LLM training/inference framework of ModelScope community, Support various models like LLaMA, Qwen, Baichuan, ChatGLM and others, and training methods like LoRA, ResTuning, NEFTune, etc.) swift 项目地址: https://gitcode.com/gh_mirrors/swift1/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: 指定模型路径或模型ID
  • eval_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系列指标
  • 多模态任务:根据具体任务显示相应指标

最佳实践建议

  1. 对于快速验证,建议设置较小的eval_limit
  2. 训练过程中评估频率不宜过高,避免影响训练效率
  3. 多模态评估需要确保模型支持相应模态
  4. 自定义数据集时,务必检查数据格式是否符合要求
  5. 复杂评估场景可结合多个评估后端使用

通过SWIFT的评估功能,开发者可以全面了解模型性能,为模型优化提供数据支持。

swift 魔搭大模型训练推理工具箱,支持LLaMA、千问、ChatGLM、BaiChuan等多种模型及LoRA等多种训练方式(The LLM training/inference framework of ModelScope community, Support various models like LLaMA, Qwen, Baichuan, ChatGLM and others, and training methods like LoRA, ResTuning, NEFTune, etc.) swift 项目地址: https://gitcode.com/gh_mirrors/swift1/swift

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

资源下载链接为: https://pan.quark.cn/s/9648a1f24758 在Java项目开发中,IntelliJ IDEA为Maven项目引入本地jar包提供了便捷方法。以下是详细步骤: 启动IDEA,进入目标Maven项目。若右侧工具栏未显示Maven面板,可通过View -> Tool Windows -> Maven将其打开。 在Maven面板里,找到带有小箭头的命令行输入框,点击箭头图标,弹出用于输入Maven命令的窗口。 在该窗口输入特定的Maven命令,用以将本地jar包安装至本地Maven仓库。命令格式如下: 例如,若test.jar位于F:\目录,想将其作为test组ID下的test模块,版本0.0.1,jar格式,命令则为: 输入完毕后,点击运行。若无意外,Maven将执行命令,把jar包安装到本地仓库,并显示“BUILD SUCCESS”,表明操作成功。 接下来,在项目的pom.xml文件中添加新依赖,以便IDEA知晓编译和运行时需用到该jar包。添加如下代码: 保存pom.xml文件后,IDEA会自动检测到变动并更新项目配置。至此,Maven项目已能使用刚导入的本地jar包。 总的来说,通过上述流程,我们实现了在IDEA Maven项目中导入本地jar包。这适用于开发中所需的自定义库以及未通过公共Maven仓库发布的第三方组件。务必正确配置groupId、artifactId和version,以维持项目整洁和可维护性。当项目结构或依赖有变动时,要及时更新pom.xml,确保项目正常运行。希望这个教程对你在IDEA中管理Maven项目有所帮助,若有更多相关问题,可继续查阅文档和资源。
### ModelScope 上的模型微调使用指南 #### 安装必要的依赖库 为了在 ModelScope 上进行模型微调,首先需要安装一些必备的 Python 庢库。可以通过以下命令完成安装[^4]: ```bash %pip install modelscope[framework] %pip install py-data-juicer[sci] %pip install ms-swift[llm] %pip install ms-swift[eval] ``` 这些工具提供了对大模型的支持以及数据处理的能力。 --- #### 数据准备 在开始微调之前,需准备好用于训练的数据集。可以选择现有的公开数据集或自定义数据集。如果选择自定义数据集,则需要注意其格式应满足一定的要求[^2]。以下是通过 Swift 工具进行 SFT(Supervised Fine-Tuning)的一个示例: ```bash CUDA_VISIBLE_DEVICES=0 \ swift sft \ --model_id_or_path qwen/Qwen-7B-Chat \ --dataset blossom-math-zh \ --output_dir output \ --custom_train_dataset_path xxx.jsonl zzz.jsonl \ --custom_val_dataset_path yyy.jsonl aaa.jsonl ``` 上述脚本展示了如何利用 `blossom-math-zh` 数据集来微调 Qwen 的 7B 版本对话模型,并指定了训练和验证数据路径。 --- #### 模型下载与加载 推荐的方式是从 ModelScope 平台下载目标模型及其代码到本地后再加载,这样可以减少网络延迟并提高灵活性[^3]。具体实现如下所示: ```python from modelscope import snapshot_download from transformers import AutoModelForCausalLM, AutoTokenizer # 设置模型ID及版本号 model_id = 'qwen/Qwen-VL-Chat' revision = 'v1.0.0' # 下载模型至指定文件夹 local_dir = "/root/autodl-tmp/Qwen-VL-Chat" snapshot_download(repo_id=model_id, revision=revision, local_dir=local_dir) # 加载模型与分词器 tokenizer = AutoTokenizer.from_pretrained(local_dir) model = AutoModelForCausalLM.from_pretrained(local_dir) ``` 此方法还允许用户根据需求选择不同版本的模型,比如支持 INT4 和 INT8 在线量化的 v1.1.0 版本[^3]。 --- #### 微调过程概述 整个微调流程通常包括以下几个方面的工作内容: 1. **环境配置**:确保 GPU 或 TPU 正常工作并通过设置环境变量分配计算资源。 2. **数据预处理**:清洗、标注原始语料使其适配所选架构输入格式。 3. **参数调整**:依据实际应用场景设定学习率、批次大小等超参数值。 4. **评估测试**:记录每次迭代后的性能指标变化情况以便后续优化改进措施实施。 以上步骤均可以在官方文档或其他社区贡献教程里找到更详细的说明材料供参考查阅[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俞纬鉴Joshua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值