10 分钟大揭秘!evalscope 如何测评大模型真实能力?

1.前言

模型评测是评估模型性能和适用性的重要步骤,其核心目的是通过多维度的测试和分析,全面了解模型的表现,确保其在实际应用中能够提供有效结果。模型评测通常包括以下几个关键方面:

  1. 定义评测标准和指标
    模型评测需要明确评测的标准和指标。这些标准可能包括准确性、稳定性、安全性、逻辑性、合规性等维度。例如,在金融大模型评测中,评测体系会涵盖性能、稳定性和安全性等方面。此外,评测指标的选择取决于任务的性质和数据的分布,常用的指标包括准确率(Accuracy)、召回率(Recall)、精确度(Precision)、F1分数等。
  2. 评测方法
    模型评测的方法可以分为人工评测、自动评测和基线评测三种方式。人工评测依赖于专家对模型输出的主观判断,适用于复杂或模糊的任务;自动评测通过算法自动计算指标,效率高但可能缺乏灵活性;基线评测则通过与已知标准模型的对比,评估目标模型的相对性能。
  3. 评测流程
    一个完整的模型评测流程通常包括以下步骤:
    • 创建任务:定义评测的具体任务和目标。
    • 执行评测:根据设定的标准和方法运行模型,并收集数据。
    • 结果分析:对评测结果进行分析,识别模型的优势和不足。
    • 调整策略:根据评测结果调整模型参数或优化策略。
  4. 应用场景
    模型评测广泛应用于多个领域,如自然语言处理、图像识别、金融风控等。例如,在自然语言处理中,评测体系可能包括文本生成、语义理解等任务;在金融领域,评测则更注重模型的稳定性和安全性。
  5. 最佳实践
    最佳实践建议结合多种评测方法,以获得更全面的结果。例如,先通过人工评测确定评测维度,再使用自动评测进行大规模测试,最后通过基线评测对比不同模型的表现。
  6. 挑战与注意事项
    模型评测面临的主要挑战包括数据不平衡、指标选择、过拟合与欠拟合等问题。此外,评测过程中需要确保测试数据集与部署环境匹配,以避免偏差。

关于评测工具魔搭社区有一块开源的评测工具evalscope,之前也用它来做过模型微调后的评测的。今天带大家使用该工具以及使用在IQuiz数据集上进行评测。下面说下测试步骤,这里我们使用魔搭社区提供的jupyter nodebook脚本。

脚本地址https://modelscope.cn/notebook/share/ipynb/9431c588/iquiz.ipynb

2.评测步骤

点击上面的脚步可以一键跳转到魔搭社区提供的免费的免费实例。(没有账号的小伙伴可以提取注册魔搭社区,这里就不详细介绍了)

image-20250315130946515

目前平台CPU 环境提供免费的调试,GPU会送一部分体验时长。这个评测需要模型能力,所以需要GPU算力。目前平台提供8核 32GB内存,24G显存的运行环境,对于10B以下的小模型应该是可以够用的了。

点击“查看nodebook” 进入jupyter nodebook调试页面

2.1 开启jupyter nodebook

image-20250315131325983

image-20250315131416330

脚本会自定加载jupyter nodebook调试脚本。

2.2 安装evalscope

这个脚本自带了evalscope 开源项目。我们之间点击“运行”即可。

image-20250315131605008

运行环境会自动下载安装evalscope 最新版本框架。

image-20250315131650506

如果你不使用这个脚本,也可以在github上下载该项目源码手工方式安装。项目地址:https://github.com/modelscope/evalscope/blob/main/README_zh.md

image-20250315131813055

2.3.评测模型

脚本自带了Qwen2.5-0.5B-Instruct和Qwen2.5-7B-Instruct模型 脚本步骤,由于0.5B小模型太小了,我们直接忽略掉,直接测试Qwen2.5-7B-Instruct模型 。

我们点击Qwen2.5-7B-Instruct 评测脚本执行

image-20250315132206356

这里脚本会先下载评测的Qwen/Qwen2.5-7B-Instruct模型,这个时间会有一点长。

image-20250315132338315

这个地方程序应该是摩搭社区网络内部下载模型权重,这里大家不用管,无脑操作就可以了。

模型下载完成后evalscope 框架会自动下载AI-ModelScope/IQuiz评测数据集并执行评测

image-20250315132546585

我们也可以看到测评的进度

image-20250315132619539

评测完成后会在控制太输出评测结果

image-20250315133322756

我们从上面图可以看到Qwen2.5-7B-Instruct 的 IQ得分是0.6分 ,EQSHI 0.6625分。

接下来我们在找一个模型对它评测,并对它进行对比。我们选择上海人工智能实验室推出的internlm3-8b-instruct模型

模型地址:https://modelscope.cn/models/Shanghai_AI_Laboratory/internlm3-8b-instruct

image-20250315133515390

这里我们需要在测试脚本中添加对该模型的评测。

image-20250315133730468

!CUDA_VISIBLE_DEVICES=0 \
evalscope eval \
  --model Shanghai_AI_Laboratory/internlm3-8b-instruct \
  --datasets iquiz

点击运行,脚步同样和上面步骤一样下下载模型权重

image-20250315133830883

这个模型测试的时间会比较长花费了49分钟完成了评测,测试的分数比之前Qwen2.5-7B-Instruct 分数要低,IQ得分是0.45分 ,EQSHI 0.525分。

image-20250315142950167

2.3.可视化评估模型结果

这个EvalScope测评工具还提供了可视化的界面,接下来我们通过它来看看模型对每个问题是如何回答的。

import os
os.environ['GRADIO_ROOT_PATH'] = f"/{os.environ['JUPYTER_NAME']}/proxy/7860"
print(os.environ['GRADIO_ROOT_PATH'])

运行上述脚本

以及下面的脚步启动webapp

!evalscope app

image-20250315143351273

我们点击http://0.0.0.0:7860,打开gradio页面

image-20250315143558794

这里我们分别选择刚才测评的2个模型,点击加载并查看

image-20250315143720750

可以看到数据集分数、数据集分数表,也可以点开数据集详情况查看结果

image-20250315143834346

模型预测 这块可以分别对IQ 和EQ答对和打错信息结果查看

image-20250315143951046

image-20250315144010662

选择多模型也可以对比2个模型EQ和IQ评测结果

image-20250315144147266

3.总结

总体来说这个评测工具上手还是非常简单的,对新手来说学习成本还是比较低的。我们通过这个评测工具就很方便对模型进行评测,这个评测工具内置多个常用测试基准和评测指标,如MMLU、CMMLU、C-Eval、GSM8K等,同时也是支持多种模型类型评测。如:语言模型、多模态模型、Embedding 模型、Reranker 模型和 CLIP 模型等。当然也是支持自定义的评测数据集,有模型微调和训练的小伙伴也可以使用该评测工具最自己微调后的模型结果进行评测。今天的分享就到这里,感兴趣的小伙伴可以看看,我们下个文章见。

(myenv) root@wlcb-dyg:~# evalscope perf --parallel 1 --url http://172.29.20.11:3001/v1/chat/completions --model DeepSeek-R1 --log-every-n-query 5 --connect-timeout 6000 --read-timeout 6000 --max-tokens 2048 --min-tokens 2048 --api openai --dataset openqa --number 1 --stream --2025-03-18 16:15:37-- https://modelscope-open.oss-cn-hangzhou.aliyuncs.com/open_data/nltk_data/punkt_tab.zip 正在解析主机 modelscope-open.oss-cn-hangzhou.aliyuncs.com (modelscope-open.oss-cn-hangzhou.aliyuncs.com)... 115.238.6.40 正在连接 modelscope-open.oss-cn-hangzhou.aliyuncs.com (modelscope-open.oss-cn-hangzhou.aliyuncs.com)|115.238.6.40|:443... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度: 4259017 (4.1M) [application/zip] 正在保存至: ‘/root/nltk_data/tokenizers/punkt_tab.zip’ punkt_tab.zip 100%[=============================================================>] 4.06M 15.9MB/s 用时 0.3s 2025-03-18 16:15:38 (15.9 MB/s) - 已保存 ‘/root/nltk_data/tokenizers/punkt_tab.zip’ [4259017/4259017]) Archive: /root/nltk_data/tokenizers/punkt_tab.zip creating: /root/nltk_data/tokenizers/punkt_tab/ creating: /root/nltk_data/tokenizers/punkt_tab/czech/ inflating: /root/nltk_data/tokenizers/punkt_tab/czech/collocations.tab inflating: /root/nltk_data/tokenizers/punkt_tab/czech/sent_starters.txt inflating: /root/nltk_data/tokenizers/punkt_tab/czech/abbrev_types.txt inflating: /root/nltk_data/tokenizers/punkt_tab/czech/ortho_context.tab creating: /root/nltk_data/tokenizers/punkt_tab/danish/ inflating: /root/nltk_data/tokenizers/punkt_tab/danish/collocations.tab inflating: /root/nltk_data/tokenizers/punkt_tab/danish/sent_starters.txt inflating: /root/nltk_data/tokenizers/punkt_tab/danish/abbrev_types.txt inflating: /root/nltk_data/tokenizers/punkt_tab/danish/ortho_context.tab creating: /root/nltk_data/tokenizers/punkt_tab/dutch/ inflating: /root/nltk_data/tokenizers/punkt_tab/dutch/collocations.tab inflating: /root/nltk_data/tokenizers/punkt_tab/dutch/什么意
03-19
<think>好的,我需要帮助用户解决如何正确配置和使用NLTK的punkt tokenizer数据文件的问题。首先,用户提到想下载并解压punkt_tab.zip文件,用于自然语言处理任务。根据我的知识,NLTK通常通过内置的下载管理器来获取数据文件,比如punkt tokenizer。用户可能手动下载了文件,但不知道如何正确配置。 首先,我应该考虑常规的安装方法。用户可能没有使用nltk.download('punkt')命令,或者遇到了网络问题导致无法自动下载。这时候手动下载和解压可能是解决办法。我需要详细说明两种方法:自动下载和手动配置。 然后,检查引用内容。用户提供的引用[1]和[2]提到了WordPunctTokenizer和regexp_tokenize,但用户的问题是关于punkt tokenizer,所以可能需要解释punkt与其他分词器的区别。引用[3]中的正则表达式可能与自定义分词有关,但punkt主要用于句子分割,所以可能不直接相关。不过,用户的问题主要是配置数据文件,所以重点应放在数据安装步骤。 接下来,我需要确保步骤正确。自动方法比较简单,但需要用户运行nltk.download(),可能需要指导如何操作。手动方法则需要用户找到正确的数据路径,将解压后的文件放入指定目录。不同操作系统的路径差异需要说明清楚,比如Windows、macOS和Linux的不同路径。 另外,验证安装是否成功的方法也很重要。用户可能需要运行示例代码来测试punkt是否正常工作,比如使用sent_tokenize函数。如果遇到错误,可能需要检查路径是否正确或重新下载数据。 最后,生成相关问题时要围绕数据安装、配置方法、不同分词器区别以及常见问题处理。确保问题对用户进一步学习有帮助。</think>### 如何配置和使用NLTK的punkt tokenizer数据文件 #### 步骤说明 1. **自动下载(推荐)** NLTK提供了内置数据下载接口,通过以下代码可自动完成下载和配置: ```python import nltk nltk.download('punkt') ``` 下载完成后,系统会自动将`punkt`数据文件存储在默认路径(如`~/nltk_data/tokenizers/`)[^2]。 2. **手动配置(适用于离线环境)** - **步骤1**:从[NLTK数据仓库](https://github.com/nltk/nltk_data)下载`punkt_tab.zip` - **步骤2**:解压文件到NLTK数据目录 默认路径为: - Windows: `C:\Users\<用户名>\AppData\Roaming\nltk_data\tokenizers\` - macOS/Linux: `~/nltk_data/tokenizers/` - **步骤3**:验证路径有效性 通过`nltk.data.find('tokenizers/punkt')`检查文件是否被正确识别[^1]。 3. **代码调用** 使用`nltk.tokenize`模块调用punkt分词器: ```python from nltk.tokenize import sent_tokenize, word_tokenize text = "Hello world! This is NLP." print(sent_tokenize(text)) # 输出: ['Hello world!', 'This is NLP.'] ``` #### 技术细节 - **punkt tokenizer原理**:基于无监督学习算法,通过统计标点符号和小写模式进行句子分割 - **与WordPunctTokenizer的区别**:punkt更擅长处理复杂句子结构,而WordPunctTokenizer基于简单标点规则[^2] #### 常见问题排查 - **FileNotFoundError**:检查`nltk_data`路径是否包含`punkt`文件夹 - **性能优化**:首次使用会加载模型到内存,后续调用速度更快 - **自定义训练**:可通过`nltk.tokenize.punkt.PunktTrainer`训练领域特定分词模型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值