首页 > 其他分享 >OpenCompass大模型测评实战学习笔记

OpenCompass大模型测评实战学习笔记

时间:2024-06-09 10:58:34浏览次数:9  
标签:opencompass 评测 tokenizer 测评 -- 模型 笔记 命令 OpenCompass

一、OpenCompass介绍:

评测相关:

评测意义:

研究评测对于我们全面了解大型语言模型的优势和限制至关重要;研究评测有助于指导和改进人类与大型语言模型之间的协同交互;研究评测可以帮助我们更好地规划大型语言模型未来的发展;评测能了解不同语言模型之间的性能、舒适性和安全性,能够帮助人们更好地选择适合的模型。

如何通过评测促进模型发展:

评测中的面临挑战:

如何评测:

按模型类别不同划分评测:基座模型、公开权重的开源模型、对话模型、API模型

按评测方式:客观评测与主观评测

提示词工程将题目变得更加丰富,然后再进行推理或者评测

长文本评测(大海捞针)。

OpenCompass提供了什么:

CompassRank:中立全面的性能榜单

CompassKit:大模型评测全栈工具链

OpenCompass评测流水线:

CompassHub:高质量评测基准社区

二、项目实践:

书生浦语在 C-Eval 基准任务上的评估(它们的配置文件可以在 configs/eval_demo.py 中找到)

环境配置

配置conda环境:

studio-conda -o internlm-base -t opencompass

激活环境,克隆opencompass代码仓库的0.2.4分支,进入opencompass文件夹,从源码进行安装

source activate opencompass
git clone -b 0.2.4 https://github.com/open-compass/opencompass
cd opencompass
pip install -e .

数据准备:

解压评测数据集到 data/ 处:

cp /share/temp/datasets/OpenCompassData-core-20231110.zip /root/opencompass/
unzip OpenCompassData-core-20231110.zip

将会在 OpenCompass 下看到data文件夹

查看支持的数据集和模型

列出所有跟 InternLM 及 C-Eval 相关的配置:

python tools/list_configs.py internlm ceval

运行命令后,先后缺少依赖包“tabulate”“mmengine”

使用pip install 命令安装后,重新执行命令,获得结果:

启动评测:

输入命令:

python run.py --datasets ceval_gen --hf-path /share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b --tokenizer-path /share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b --tokenizer-kwargs padding_side='left' truncation='left' trust_remote_code=True --model-kwargs trust_remote_code=True device_map='auto' --max-seq-len 1024 --max-out-len 16 --batch-size 2 --num-gpus 1 --debug

官方命令解析:

python run.py
--datasets ceval_gen \
--hf-path /share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b \  # HuggingFace 模型路径
--tokenizer-path /share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b \  # HuggingFace tokenizer 路径(如果与模型路径相同,可以省略)
--tokenizer-kwargs padding_side='left' truncation='left' trust_remote_code=True \  # 构建 tokenizer 的参数
--model-kwargs device_map='auto' trust_remote_code=True \  # 构建模型的参数
--max-seq-len 1024 \  # 模型可以接受的最大序列长度
--max-out-len 16 \  # 生成的最大 token 数
--batch-size 2  \  # 批量大小
--num-gpus 1  # 运行模型所需的 GPU 数量
--debug

运行命令:

报错。

安装缺失依赖包后,运行

报错。

。。。。。。后续不清楚缺了多少包,运行以下命令

pip install -r requirements.txt

重新安一遍项目所需依赖包

重新运行评测命令,

报错:

官方给出解决错误方案:加入环境变量:

export MKL_SERVICE_FORCE_INTEL=1

重新运行评测命令,继续报错:

根据官方解决方案,并观察运行日志,缺少模块protobuf,运行以下命令:

pip install protobuf

重新执行评测命令,顺利运行,得到结果:

至此评测实践跑通。

标签:opencompass,评测,tokenizer,测评,--,模型,笔记,命令,OpenCompass
From: https://blog.csdn.net/Moo_n_earth/article/details/139511713

相关文章

  • 算法课程笔记——可撤销并查集
    算法课程笔记——可撤销并查集Gv......
  • 读AI未来进行式笔记07量子计算
    1.      AI审讯技术1.1.        发明者最初的目的是发明一种能够替代精神药物,为人类带来终极快乐的技术1.1.1.          遗憾的是,他找到的只是通往反方向的大门1.2.        通过非侵入式的神经电磁干扰大脑边缘系统,诱发受审者最为恐惧及......
  • 数据结构学习笔记-堆排序
    堆排序算法的设计与分析问题描述:设计并分析堆排序【前置知识:什么是堆?】堆(Heap)是一种特殊的树形数据结构,它满足以下两个条件之一:最大堆(MaxHeap):每个节点的值都大于或等于其子节点的值。换句话说,根节点的值是整个堆中最大的。最小堆(MinHeap):每个节点的值都小于或等于其......
  • C语言学习笔记(八)————数组
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言1一维数组1.2一维数组的引用1.3一维数组的初始化2二维数组2.1二维数组的定义2.2二维数组的存放顺序3多维数组总结前言一个学习C语言的小白,有问题评论或私信~本文主要记录C语言......
  • 计算机组成原理复习笔记
    前言就是按照考试的题型写的总结非常应试版题型一、进制转换只考十进制二进制十六进制之间的相互转换一个个看(1)十进制转其他转二进制:除以2从小到大取余数(0或1)转十六进制:除以16从小到大取余数(0到f)(2)二进制十六进制转十进制每位数字乘以相应的幂数再相......
  • 计算机系统基础笔记(12)——控制
    前言在持续输出ing一、条件码1.处理器状态(x86-64,部分的)当前程序的执行信息◼临时数据◼运行时栈的位置(栈顶)◼当前代码控制点的位置(即将要执行的指令地址)◼最近一次指令执行的状态2.条件码(隐式设置)简单的位寄存器条件码(隐式设置)CF进位标志(无符号数)SF符......
  • Centos7系统禁用Nouveau内核驱动程序【笔记】
    在CentOS系统中,Nouveau是开源的NVIDIA显卡驱动程序,但它与NVIDIA的官方驱动程序NVIDIAProprietaryDriver存在兼容性问题。如果你想要禁用Nouveau并使用NVIDIA官方驱动,可以按照以下步骤操作:1、创建一个黑名单文件以禁用Nouveau驱动。echo'blacklistnouveau'|sudote......
  • 做题笔记
    杂题DPAbandoningRoads看到\(n\leq70\),想一下朴素状压设\(f_{S,u}\),\(S\)表示处理完的连通块状态,\(u\)表示当前的节点因为只有两种边权,所以可以双队列求最短路,所以我们有了一个天然的\(O(2^nm)\)的做法无法通过捏\(m\)肯定没办法省略了那我们考虑减少\(2......
  • Living-Dream 系列笔记 第59期
    T1这是一道manacher模板,但是我们使用二分+hash\(O(n\logn)\)的做法。显然地,若长为\(len\)的回文串存在,则长为\(len-2,len-4,...\)的回文串也一定存在(在两端各删去若干相同字符即可)。至此,我们发现回文串分两类:奇回文串、偶回文串,在每一类当中分别具有单调性。于是......
  • C语言笔记第12篇:自定义类型(struct结构体)
    1、结构体类型的声明为什么要有自定义的结构类型呢?这是因为稍微复杂的类型,直接使用内置类型是不行的!比如:描述一个人或 一本书的价格、版号等信息。1.1结构的创建结构体是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量。1.1.1 结构的声明structt......