OpenCompass 配置文件使用完全指南

OpenCompass 配置文件使用完全指南

opencompass opencompass - OpenCompass是一个用于评估大型语言模型的工具,提供分布式评估、多样化评估范式和模块化设计。 opencompass 项目地址: https://gitcode.com/gh_mirrors/op/opencompass

前言

OpenCompass 作为一款强大的大模型评测工具,其配置文件系统是整个评测流程的核心。本文将深入浅出地介绍 OpenCompass 配置文件的使用方法,帮助开发者快速掌握配置技巧。

配置文件基础

OpenCompass 采用 Python 格式的配置文件,这种设计具有以下优势:

  1. 直接使用 Python 语法,无需学习新的配置语言
  2. 支持完整的编程能力,可以灵活处理复杂配置
  3. 易于维护和扩展

基本结构示例

一个典型的模型配置示例如下:

from opencompass.models import HuggingFaceCausalLM

models = [
    dict(
        type=HuggingFaceCausalLM,
        path='huggyllama/llama-7b',
        model_kwargs=dict(device_map='auto'),
        tokenizer_path='huggyllama/llama-7b',
        tokenizer_kwargs=dict(
            padding_side='left',
            truncation_side='left'
        ),
        max_seq_len=2048,
        max_out_len=50,
        run_cfg=dict(num_gpus=8, num_procs=1),
    )
]

这个配置定义了一个使用 HuggingFace 因果语言模型的评测任务,包含了模型路径、tokenizer 设置、序列长度限制等关键参数。

配置文件继承机制

OpenCompass 支持配置文件的继承,这是大型评测项目中非常重要的功能。通过继承机制可以实现:

  1. 配置复用,避免重复定义
  2. 配置模块化,便于管理
  3. 配置覆盖,灵活调整

继承示例

from mmengine.config import read_base

with read_base():
    from .model_cfg import models  # 继承基础模型配置

使用 read_base 上下文管理器是 OpenCompass 特有的语法,它确保了配置继承的正确性。

完整评测配置示例

一个完整的评测配置文件通常包含以下几个部分:

  1. 数据集配置
  2. 模型配置
  3. 评测参数
from mmengine.config import read_base

with read_base():
    # 继承数据集配置
    from .datasets.piqa.piqa_ppl import piqa_datasets
    from .datasets.siqa.siqa_gen import siqa_datasets

# 合并数据集
datasets = [*piqa_datasets, *siqa_datasets]

# 定义模型
from opencompass.models import HuggingFaceCausalLM

models = [
    dict(
        type=HuggingFaceCausalLM,
        path='huggyllama/llama-7b',
        tokenizer_path='huggyllama/llama-7b',
        tokenizer_kwargs=dict(
            padding_side='left',
            truncation_side='left'
        ),
        max_seq_len=2048,
        abbr='llama-7b',          # 模型简称
        max_out_len=100,           # 最大输出长度
        batch_size=16,             # 批处理大小
        run_cfg=dict(num_gpus=1), # 运行资源配置
    )
]

数据集配置详解

数据集配置是评测的重要组成部分,下面以 PIQA 数据集为例说明各配置项的作用:

from opencompass.openicl.icl_prompt_template import PromptTemplate
from opencompass.openicl.icl_retriever import ZeroRetriever
from opencompass.openicl.icl_inferencer import PPLInferencer
from opencompass.openicl.icl_evaluator import AccEvaluator
from opencompass.datasets import HFDataset

# 1. 数据读取配置
piqa_reader_cfg = dict(
    input_columns=['goal', 'sol1', 'sol2'],
    output_column='label',
    test_split='validation',
)

# 2. 推理配置
piqa_infer_cfg = dict(
    prompt_template=dict(
        type=PromptTemplate,
        template={
            0: 'The following makes sense: \nQ: {goal}\nA: {sol1}\n',
            1: 'The following makes sense: \nQ: {goal}\nA: {sol2}\n'
        }),
    retriever=dict(type=ZeroRetriever),
    inferencer=dict(type=PPLInferencer)
)

# 3. 评估配置
piqa_eval_cfg = dict(evaluator=dict(type=AccEvaluator))

# 4. 完整数据集配置
piqa_datasets = [
    dict(
        type=HFDataset,
        path='piqa',
        reader_cfg=piqa_reader_cfg,
        infer_cfg=piqa_infer_cfg,
        eval_cfg=piqa_eval_cfg)
]

关键配置项说明

  1. reader_cfg:定义如何读取数据集

    • input_columns:输入字段
    • output_column:输出/标签字段
    • test_split:使用的数据集划分
  2. infer_cfg:定义推理过程

    • prompt_template:提示模板配置
    • retriever:上下文检索方式
    • inferencer:推理方法(PPL或生成)
  3. eval_cfg:定义评估指标

高级配置技巧

1. 任务划分配置

OpenCompass 支持灵活的任务划分策略:

from opencompass.partitioners import SizePartitioner
from opencompass.runners import SlurmRunner

# 自定义任务划分器
partitioner = dict(
    type=SizePartitioner,
    max_task_size=1000,  # 每个任务最大样本数
    gen_task_coef=15,    # 生成任务系数
)

# 自定义运行后端
runner = dict(
    type=SlurmRunner,
    partition='your_partition',
    quotatype='auto',
)

2. 混合精度配置

models = [
    dict(
        ...,
        model_kwargs=dict(
            torch_dtype='auto',  # 自动混合精度
            device_map='auto',
        ),
    )
]

最佳实践建议

  1. 模块化配置:将模型配置、数据集配置分开管理
  2. 合理使用继承:基础配置通过继承方式复用
  3. 版本控制:对重要配置进行版本管理
  4. 参数调优:从小的 batch_size 开始逐步增加
  5. 资源预估:根据模型大小合理配置 GPU 数量

总结

OpenCompass 的配置文件系统设计灵活而强大,通过本文的介绍,你应该已经掌握了:

  1. 基础配置文件的编写方法
  2. 配置文件继承机制
  3. 数据集配置的详细说明
  4. 高级配置技巧

合理利用这些配置功能,可以高效地组织和管理大规模模型评测任务。

opencompass opencompass - OpenCompass是一个用于评估大型语言模型的工具,提供分布式评估、多样化评估范式和模块化设计。 opencompass 项目地址: https://gitcode.com/gh_mirrors/op/opencompass

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

江燕娇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值