open-compass / open-compass/opencompass

[Bug] TruthfulQA同时使用多个评估metric时报错

Open
#1,646 0 comments 0 reactions 1 assignee View on GitHub

@bittersweet1999 is already working on this.

Since Oct 28, 2024.

Dominant language
Python
Stars
7.5k
Forks
869
Avg merge
17h 52m
Merged PRs (30d)
13

Description

先决条件
问题类型

我正在使用官方支持的任务/模型/数据集进行评估。

环境

{'CUDA available': True,
'CUDA_HOME': '/usr/local/cuda',
'GCC': 'gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0',
'GPU 0,1,2,3': 'NVIDIA A800 80GB PCIe',
'MMEngine': '0.10.4',
'MUSA available': False,
'NVCC': 'Cuda compilation tools, release 12.4, V12.4.131',
'OpenCV': '4.10.0',
'PyTorch': '2.2.1',
'PyTorch compiling details': 'PyTorch built with:\n'
' - GCC 9.3\n'
' - C++ Version: 201703\n'
' - Intel(R) oneAPI Math Kernel Library Version '
'2023.1-Product Build 20230303 for Intel(R) 64 '
'architecture applications\n'
' - Intel(R) MKL-DNN v3.3.2 (Git Hash '
'2dc95a2ad0841e29db8b22fbccaf3e5da7992b01)\n'
' - OpenMP 201511 (a.k.a. OpenMP 4.5)\n'
' - LAPACK is enabled (usually provided by '
'MKL)\n'
' - NNPACK is enabled\n'
' - CPU capability usage: AVX512\n'
' - CUDA Runtime 12.1\n'
' - NVCC architecture flags: '
'-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_61,code=sm_61;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_80,code=sm_80;-gencode;arch=compute_86,code=sm_86;-gencode;arch=compute_90,code=sm_90\n'
' - CuDNN 8.9.2\n'
' - Magma 2.6.1\n'
' - Build settings: BLAS_INFO=mkl, '
'BUILD_TYPE=Release, CUDA_VERSION=12.1, '
'CUDNN_VERSION=8.9.2, '
'CXX_COMPILER=/opt/rh/devtoolset-9/root/usr/bin/c++, '
'CXX_FLAGS= -D_GLIBCXX_USE_CXX11_ABI=0 '
'-fabi-version=11 -fvisibility-inlines-hidden '
'-DUSE_PTHREADPOOL -DNDEBUG -DUSE_KINETO '
'-DLIBKINETO_NOROCTRACER -DUSE_FBGEMM '
'-DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK '
'-DUSE_XNNPACK -DSYMBOLICATE_MOBILE_DEBUG_HANDLE '
'-O2 -fPIC -Wall -Wextra -Werror=return-type '
'-Werror=non-virtual-dtor -Werror=bool-operation '
'-Wnarrowing -Wno-missing-field-initializers '
'-Wno-type-limits -Wno-array-bounds '
'-Wno-unknown-pragmas -Wno-unused-parameter '
'-Wno-unused-function -Wno-unused-result '
'-Wno-strict-overflow -Wno-strict-aliasing '
'-Wno-stringop-overflow -Wsuggest-override '
'-Wno-psabi -Wno-error=pedantic '
'-Wno-error=old-style-cast -Wno-missing-braces '
'-fdiagnostics-color=always -faligned-new '
'-Wno-unused-but-set-variable '
'-Wno-maybe-uninitialized -fno-math-errno '
'-fno-trapping-math -Werror=format '
'-Wno-stringop-overflow, LAPACK_INFO=mkl, '
'PERF_WITH_AVX=1, PERF_WITH_AVX2=1, '
'PERF_WITH_AVX512=1, TORCH_VERSION=2.2.1, '
'USE_CUDA=ON, USE_CUDNN=ON, USE_EXCEPTION_PTR=1, '
'USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, '
'USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=ON, '
'USE_NNPACK=ON, USE_OPENMP=ON, USE_ROCM=OFF, '
'USE_ROCM_KERNEL_ASSERT=OFF, \n',
'Python': '3.12.2 | packaged by conda-forge | (main, Feb 16 2024, 20:50:58) '
'[GCC 12.3.0]',
'TorchVision': '0.17.1',
'lmdeploy': "not installed:No module named 'lmdeploy'",
'numpy_random_seed': 2147483648,
'opencompass': '0.3.2.post1+',
'sys.platform': 'linux',
'transformers': '4.45.1'}

重现问题 - 代码/配置示例

修改opencompass/configs/datasets/truthfulqa/truthfulqa_gen_5ddc62.py的评估方法,同时使用多种metrics:

# `metrics=('bleurt', 'rouge', 'bleu')`
truthfulqa_eval_cfg = dict(
    evaluator=dict(
        type=TruthfulQAEvaluator, metrics=('bleurt', 'rouge', 'bleu', 'truth', 'info'), key='ENV'), )

truthfulqa_datasets = [
    dict(
        abbr='truthful_qa',
        type=TruthfulQADataset,
        path='truthful_qa',
        name='generation',
        reader_cfg=truthfulqa_reader_cfg,
        infer_cfg=truthfulqa_infer_cfg,
        eval_cfg=truthfulqa_eval_cfg)
]
重现问题 - 命令或脚本
python run.py \
    --datasets truthfulqa_gen\
    --hf-type chat \
    --hf-path /home/user1/llm_alignment_parm_attack/output/Hermes-2-Pro-Llama-3-8B/model \
    --tokenizer-path /nfs/base_models/NousResearch/Hermes-2-Pro-Llama-3-8B \
    --model-kwargs device_map='cuda:2' \
    --debug
重现问题 - 错误信息

报错信息:

all_metrics {'rouge', 'bleurt', 'truth', 'info', 'bleu'} metrics ('bleurt', 'rouge', 'bleu', 'truth', 'info') /nfs/base_models/allenai/truthfulqa-truth-judge-llama2-7B
Traceback (most recent call last):
  File "/home/user1/opencompass/run.py", line 4, in <module>
    main()
  File "/home/user1/opencompass/opencompass/cli/main.py", line 351, in main
    runner(tasks)
  File "/home/user1/opencompass/opencompass/runners/base.py", line 38, in __call__
    status = self.launch(tasks)
             ^^^^^^^^^^^^^^^^^^
  File "/home/user1/opencompass/opencompass/runners/local.py", line 136, in launch
    task.run()
  File "/home/user1/opencompass/opencompass/tasks/openicl_eval.py", line 114, in run
    self._score()
  File "/home/user1/opencompass/opencompass/tasks/openicl_eval.py", line 227, in _score
    icl_evaluator = ICL_EVALUATORS.build(self.eval_cfg['evaluator'])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user1/miniconda3/lib/python3.12/site-packages/mmengine/registry/registry.py", line 570, in build
    return self.build_func(cfg, *args, **kwargs, registry=self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user1/miniconda3/lib/python3.12/site-packages/mmengine/registry/build_functions.py", line 121, in build_from_cfg
    obj = obj_cls(**args)  # type: ignore
          ^^^^^^^^^^^^^^^
  File "/home/user1/opencompass/opencompass/datasets/truthfulqa.py", line 97, in __init__
    assert set(metrics).issubset(all_metrics)
AssertionError

报错位置:truthfulQA.py

其他信息

我认为原因在于truthfulqa.py文件中的TruthfulQAEvaluator类传入metrics为tuple时,又将这个tuple加了一层list,导致了assert报错。

事实上,初始参数metrics=('truth')传进去的是string而不是tuple

可能的修复方法:
删除96行再次加list的位置,同时修改默认传递的参数为tuple而不是string

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.