第7节笔记

OpenCompass大模型评测实战笔记

介绍

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

  • 面向未来拓展能力维度
    评测体系需增加新能力维度,如数学、复杂推理、逻辑推理、代码和智能体等,以全面评估模型性能。
  • 扎根通用能力 聚焦垂直行业
    在医疗、金融、法律等专业领域,评测需结合行业知识和规范,以评估模型的行业适用性。
  • 高质量中文基准
    针对中文场景,需要开发能准确评估其能力的中文评测基准,促进中文社区的大模型发展。
  • 性能评测反哺能力迭代
    通过深入分析评测性能,探索模型能力形成机制,发现模型不足,研究针对性提升策略。

大语言模型评测中的挑战

  • 全面性
    • 大模型应用场景千变万化
    • 模型能力演进迅速
    • 如何设计和构造可扩展的能力维度体系
  • 评测成本
    • 评测数十万道题需要大量算力资源
    • 基于人工打分的主观评测成本高昂
  • 数据污染
    • 海量语料不可避免带来评测集污染
    • 亟需可靠的数据污染检测技术
    • 如何设计可动态更新的高质量评测基准
  • 鲁棒性
    • 大模型对提示词十分敏感
    • 多次采样情况下模型性能不稳定

如何评测大模型

  • 模型类型
    • 基座模型
      • 海量数据无监督训练(Base)
    • 对话模型
      • 指令数据有监督微调(SFT)
      • 人类偏好对齐(RLHF)
    • 公开权重的开源模型
      • 使用GPU/推理加速卡进行本地推理
    • API模型
      • 发送网络请求获取回复
  • 客观评测与主观评测
    • 客观问答题
    • 客观选择题
    • 开放式主观问答
  • 提示词工程
    • 明确性
    • 概念无歧义
    • 逐步引导
    • 具体描述
    • 迭代反馈
    • 小样本学习
    • 思维链技术
  • 长文本评测

实战

  • 背景知识
    • bash脚本
      Bash脚本是一种文本文件,其中包含了一系列用于在Unix/Linux系统上执行的命令。这些命令按照特定的顺序和逻辑组织,以实现特定的任务或自动化操作。Bash是一种Unix shell和命令语言,是许多Linux系统默认的shell。因此,Bash脚本是使用Bash语言编写的脚本文件,通常具有.sh扩展名。
      Bash脚本可以包含各种类型的命令,例如文件操作、条件判断、循环、函数定义等。它们通常用于执行系统管理任务、自动化工作流程、批量处理文件等操作。编写Bash脚本可以帮助用户节省时间和精力,提高工作效率。
    • tokenizer
      Tokenizer 是一个广泛用于自然语言处理 (NLP) 中的术语,它指的是将文本数据分割成更小单元的工具或模块。这些更小的单元可以是单词、子词、字符或其他更小的文本单位,取决于任务的需要。
      在NLP中,tokenizer 的作用包括:
      分词:将文本分割成单词或子词的序列。
      标记化:将文本转换为标记或标识符的序列。
      子词分割:将单词分割成子词的序列,用于处理词汇丰富的语言或处理未登录词。
      字符级分割:将文本分割成字符的序列,有时用于处理字符级别的任务。
      Tokenizer 在各种NLP任务中都是至关重要的,包括文本分类、情感分析、机器翻译、命名实体识别等。常见的tokenizer 包括空格分词器、NLTK、Spacy、Hugging Face Transformers等库中的tokenizer。
    • batch-size
      batch-size是指在机器学习和深度学习中用于训练或推理的批量数据的大小。在训练神经网络时,通常会将数据划分成多个批次,并在每个批次上进行前向传播和反向传播,以更新模型的权重。批量大小决定了每个批次中包含的样本数量。
      调整批量大小可以影响训练过程中的性能和效率。较大的批量大小通常可以提高训练速度,因为可以利用更大的计算资源并减少传输和计算的开销。但是,过大的批量大小可能会导致内存不足或训练过程不稳定。相反,较小的批量大小可能会减慢训练速度,但有助于模型更好地收敛,并且通常具有更好的泛化性能。

使用 OpenCompass 评测 internlm2-chat-1_8b 模型在 C-Eval 数据集上的性能:

  • export MKL_SERVICE_FORCE_INTEL=1
    设置环境变量,避免在开发机运行过程中报错。

  • 启动评测方式

    • 纯命令行
    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
    

    其中,
    run.py:指定运行的主函数
    --datasets ceval_gen:指定数据集,其中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的路径
    --tokenizer-kwargs padding_side='left' truncation='left' trust_remote_code=True:指定tokenizer的参数,其中tokenizer-kwargs是指用于传递给分词器(tokenizer)的参数的关键字参数。在使用分词器时,有时候需要传递一些额外的参数以定制分词的行为。这些额外的参数通常以字典的形式传递给分词器的tokenizer-kwargs参数。
    --model-kwargs trust_remote_code=True device_map='auto':指定model的参数
    --max-seq-len 1024:指定读入token的最大长度(长文本一般2048即可)
    --max-out-len 16:指定模型回复/输出的token的最大长度(客观评测可以较小,提高运行速度;如果是主观评测,需要一问一答,则参数可较大,如512、1024等)
    --batch-size 2:指定推理时 batch size 的大小
    --num-gpus 1:指定可以用的 GPU 的个数
    --work-dir xxxx/xxx:指定OpenCompass在相关路径下执行操作,保存所有的结果、中间的日志等(若不布置,则默认为outputs/default
    --reuse latest:接着最新的时间戳继续跑
    --debug:指定进入 debug 模式,所有的bug信息会在terminal中显示(若不开,则默认存在工作路径的 logs 文件夹下)
    相关文件夹:
    configs 文件夹:对所有运行的config做总结
    logs 文件夹:保存每次运行时相关的日志
    prediction 文件夹:运行数据集的模型的预测结果
    results 文件夹:保存运行结果
    summary 文件夹:对results中运行结果做总结,如具体得多少分,怎么得分等等

    • 命令行+configs
    python run.py configs/eval_demo.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部分存到configs/eval_demo.py

  • 评测的逻辑
    关注opencompass/opencompass文件夹,其中
    partitioners文件夹对任务进行分片,以最大化利用资源,提高效率,
    tasks文件夹指定每一片如何执行,
    runners指定具体如何执行,
    openicl文件夹给出执行时候的逻辑,
    summarizers文件夹是所有任务执行完后进行总结。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值