前言
书生·浦语是上海人工智能实验室和商汤科技联合研发的一款大模型,这次有机会参与试用,特记录每日学习情况。
今天学习的是评测。
一、为什么要做评测
首先,研究评测可以帮助我们更好地理解大模型的长处和短处。尽管多数研究表明大模型在诸多通用任务上已达到类人或超过人的水平,但仍然有很多研究在质疑其能力来源是否为对训练数据集有记忆。人们发现,当只给大模型输入 LeetCode 题目编号而不给任何信息的时候,大模型居然也能够正确输出答案,这显然是训练数据被污染了。
其次,研究评测可以更好地为人与大模型的协同交互提供指导和帮助。大模型的服务对象终究是人,那么为了更好地进行人机交互新范式的设计,我们便有必要对其各方面能力进行全面了解和评测。如,我们最近的研究工作 PromptBench:首个大语言模型提示鲁棒性的评测基准,便详细地评测了大模型在“指令理解”方面的鲁棒性,结论是其普遍容易受到干扰、不够稳定,这便启发了我们从 prompt 层面来加强系统的容错能力。
最后,研究评测可以更好地统筹和规划大模型未来的发展的演变、防范未知和可能的风险。大模型一直在不断进化,其能力也越来越强。那么,通过合理、科学的评测机制的设计,我们能否用演化的角度来评测其能力?如何提前预知其可能的风险?这都是重要的研究内容。
二、评测目的
评估模型性能:通过对大语言模型进行评测,可以了解模型的性能和表现,从而确定其在实际应用中的价值。
优化模型:通过评测,可以发现模型存在的问题和不足,进一步优化和改进模型,提高其性能和表现。
比较不同模型:通过评测不同的大语言模型,可以比较它们的性能和表现,从而选择最适合特定任务的模型。
三、评测要素
评估指标:需要选择合适的评估指标,以全面、客观地反映模型的性能和表现。常用的评估指标包括准确率、召回率、F1值、BLEU分数等。
数据集:需要选择具有代表性的数据集,以测试模型在不同场景下的性能和表现。
实验设置:需要设置合理的实验参数和条件,以确保评测结果的准确性和可靠性。
四、评测方式
测试大语言模型的方法主要包括以下三种:
自动评测:通过编写程序或使用工具库,自动对大语言模型进行评测,并输出评测结果。这种方法可以快速、准确地评估大量模型的性能和表现。
人工评测:由专业人士或人工对大语言模型进行评测,可以更加深入地了解模型的表现和优缺点。但是这种方法成本较高,且容易受到主观因素的影响。
在线评测:通过在线平台或API接口对大语言模型进行实时评测,可以及时获取模型的性能和表现。这种方法适用于快速迭代和优化模型。
五、OpenCompass
OpenCompass是一个大模型评测平台,用于对自然语言处理模型的性能、评估指标、评测方法和模型种类进行全面评估。
OpenCompass采用客观评测和主观评测相结合的方法。客观评测主要针对具有确定性答案的能力维度和场景,通过构造丰富的评测集来综合评价模型的能力。主观评测则更多地依赖于人的主观感受,用于评估模型的安全性和语言能力。
- 客观评测可以通过定量指标比较模型输出与标准答案的差异来衡量模型的性能。常用的客观评测方式包括判别式评测和生成式评测。
- 主观评测则通过受试者的主观判断来评估具有对话能力的大语言模型。通常会构建主观测试问题集合,并将不同模型对同一问题的回复展示给受试者,收集他们的主观评分。
六、OpenCompass架构
OpenCompass主要包含模型层、能力层、方法层和工具层。它支持丰富的模型评测流水线设计,能切分多个独立执行的任务,最大化利用计算资源。在大模型能力对比结果输出方面,OpenCompass提供了多种探索方向,包括多模态、法律、医生等。
七、OpenCompass流水线设计:
模型层主要涉及基座模型和对话模型,分别评测模型的文字续写能力和对话能力。能力层从通用能力和特色能力两个方面设计评测维度,包括语言、知识、理解、推理、安全等通用能力,以及长文本、代码、工具、知识增强等特色能力。方法层采用客观评测和主观评测两种方式,以便捷地评估模型在具有确定答案的任务和用户满意度方面的能力。工具层提供了分布式评测技术、提示词工程、评测数据库对接、评测榜单发布和评测报告生成等功能,支持自动化地开展大语言模型的评测。
八、基础作业
使用 OpenCompass 评测 internlm2-chat-1_8b 模型在 C-Eval 数据集上的性能InternLM2-Chat-7B
1、安装环境
studio-conda -o internlm-base -t opencompass
source activate opencompass
git clone -b 0.2.4 https://github.com/open-compass/opencompass
cd opencompass
pip install -e .
pip install protobuf
2、启动评测
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
![](https://i-blog.csdnimg.cn/blog_migrate/48f8b4f3ec47bf9afe1bb1998337e75b.png)
2、评测成功
3、评测结果
九、进阶作业
将自定义数据集提交至OpenCompass官网