LMMS-EVAL项目任务配置完全指南

LMMS-EVAL项目任务配置完全指南

lmms-eval Accelerating the development of large multimodal models (LMMs) with lmms-eval lmms-eval 项目地址: https://gitcode.com/gh_mirrors/lm/lmms-eval

概述

LMMS-EVAL是一个灵活可扩展的多模态语言模型评估框架,它采用YAML配置文件来定义各类评估任务。这种设计使得研究人员能够精确复现他人的评估设置,确保实验结果的可靠性和可比性。

核心概念

任务配置结构

每个评估任务都围绕TaskConfig对象构建,主要包含以下几个关键部分:

  1. 任务基本信息:包括任务名称、分组和别名
  2. 数据集配置:定义数据来源和处理方式
  3. 提示模板:控制模型输入格式
  4. 运行时参数:设置评估过程的具体参数
  5. 评分机制:定义评估指标和计算方法

详细配置解析

基础配置参数

  1. 任务标识

    • task: 必填,任务唯一标识名
    • group: 可选,任务分组(未来将被弃用)
    • tag: 推荐使用,任务标签分类
    • task_alias: 结果表中显示的别名
  2. 数据集配置

    • dataset_path: 数据集路径(必填)
    • dataset_name: 数据集子集/配置名
    • dataset_kwargs: 数据集加载额外参数
    • 各种split定义(test/train/validation/fewshot)
  3. 文档处理函数

    • process_docs: 预处理整个数据集
    • doc_to_visual: 生成视觉输入
    • doc_to_text: 生成文本输入
    • doc_to_target: 生成目标输出
    • doc_to_choice: 多选任务选项生成

运行时配置

  1. few-shot设置

    • num_fewshot: few-shot示例数量(默认为0)
    • 注意:当前few-shot功能尚未充分测试
  2. 批处理设置

    • batch_size: 批处理大小(默认为1)
    • 重要提示:某些模型(Qwen等)不支持批处理>1,部分模型(LLaVA等)在不同批处理大小时会产生不同分数,建议最终测试时设为1

评分机制

  1. 输出类型

    • output_type: 支持三种类型
      • generate_until: 生成式任务
      • loglikelihood: 对数似然计算
      • multiple_choice: 多选任务
  2. 生成参数

    • generation_kwargs: 生成参数配置
      • max_new_tokens: 最大新token数
      • temperature: 温度参数
      • top_p: 核心采样参数
      • num_beams: beam search数量
      • do_sample: 是否采样
  3. 评估指标

    • metric_list: 评估指标列表
    • 每个指标可配置:
      • metric: 指标名称
      • aggregation: 聚合方法
      • higher_is_better: 指标方向

高级功能

嵌入式Python代码

通过!function操作符可以在YAML中直接引用Python函数,支持以下参数:

  • doc_to_text
  • doc_to_target
  • doc_to_choice
  • 指标中的aggregation

示例:

doc_to_text: !function utils.mme_doc_to_text

配置继承

可以使用include继承其他YAML配置,只需指定基础模板文件名即可实现配置复用。

多轮生成任务

通过设置output_type: generate_until_multi_round支持多轮对话评估,需要特别注意:

  • doc_to_text函数需要处理轮次信息
  • 需要返回是否终止的标志
  • 需要维护历史对话信息

内置评估指标

常用指标

  1. 准确率类

    • acc: 标准准确率
    • acc_norm: 长度归一化准确率
    • acc_all: 全对准确率
  2. 文本相似度

    • anls: 归一化Levenshtein相似度
    • exact_match: 精确匹配
    • bleu: BLEU分数
    • chrf: CHRF分数
  3. 概率评估

    • perplexity: 困惑度
    • bits_per_byte: 每字节比特数
    • brier_score: Brier分数
  4. 分类评估

    • f1: F1分数
    • matthews_corrcoef: Matthews相关系数

聚合方法

  • mean: 平均值
  • median: 中位数
  • weighted_perplexity: 加权困惑度

最佳实践示例

生成式任务(MME示例)

dataset_path: lmms-lab/MME
task: mme
output_type: generate_until
doc_to_visual: !function utils.mme_doc_to_visual
doc_to_text: !function utils.mme_doc_to_text
generation_kwargs:
  max_new_tokens: 16
  temperature: 0
metric_list:
  - metric: mme_perception_score
    aggregation: !function utils.mme_aggregate_results
    higher_is_better: true

多选任务(SEED-Bench示例)

dataset_path: lmms-lab/SEED-Bench
task: seedbench_ppl
output_type: multiple_choice
doc_to_choice: !function utils.seed_doc_to_choice
metric_list:
  - metric: acc

多轮生成任务(MMSearch示例)

task: mmsearch_end2end
output_type: generate_until_multi_round
doc_to_text: !function utils.mmsearch_end2end_doc_to_text
generation_kwargs:
  max_new_tokens: 512
  until: ["ASSISTANT:"]
metric_list:
  - metric: end2end_f1_score
    aggregation: !function utils.mmsearch_aggregate_results_f1_score

开发建议

  1. 任务设计

    • 优先参考现有任务实现
    • 保持配置简洁明了
    • 合理使用Python函数封装复杂逻辑
  2. 评估流程

    • process_results: 用于并行处理模型输出
    • aggregate_results: 用于主进程计算最终分数
  3. 模型适配

    • 使用lmms_eval_specific_kwargs处理模型特定提示
    • 默认配置应适配LLaVA风格
  4. 外部评估

    • 可在process_results中集成GPT-4等外部评估器
    • 复杂评分逻辑应放在aggregate_results

通过遵循这些指南,您可以高效地为LMMS-EVAL框架开发新的评估任务,确保评估过程的标准化和可复现性。

lmms-eval Accelerating the development of large multimodal models (LMMs) with lmms-eval lmms-eval 项目地址: https://gitcode.com/gh_mirrors/lm/lmms-eval

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

章迅筝Diane

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

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

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

打赏作者

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

抵扣说明:

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

余额充值