opencompass icon indicating copy to clipboard operation
opencompass copied to clipboard

[Bug] Medbench dataset only provides test data, not the entire dataset

Open ryan0980 opened this issue 10 months ago • 3 comments

先决条件

  • [x] 我已经搜索过 问题讨论 但未得到预期的帮助。
  • [x] 错误在 最新版本 中尚未被修复。

问题类型

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

环境

/bin/sh: 1: /usr/local/cuda/bin/nvcc: not found {'CUDA available': True, 'CUDA_HOME': '/usr/local/cuda', 'GCC': 'gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0', 'GPU 0': 'NVIDIA A10G', 'MMEngine': '0.10.6', 'MUSA available': False, 'NVCC': 'Not Available', 'PyTorch': '2.6.0+cu124', 'PyTorch compiling details': 'PyTorch built with:\n' ' - GCC 9.3\n' ' - C++ Version: 201703\n' ' - Intel(R) oneAPI Math Kernel Library Version ' '2024.2-Product Build 20240605 for Intel(R) 64 ' 'architecture applications\n' ' - Intel(R) MKL-DNN v3.5.3 (Git Hash ' '66f0cb9eb66affd2da3bf5f8d897376f04aae6af)\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: AVX2\n' ' - CUDA Runtime 12.4\n' ' - NVCC architecture flags: ' '-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-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 90.1\n' ' - Magma 2.6.1\n' ' - Build settings: BLAS_INFO=mkl, ' 'BUILD_TYPE=Release, ' 'COMMIT_SHA=2236df1770800ffea5697b11b0bb0d910b2e59e1, ' 'CUDA_VERSION=12.4, CUDNN_VERSION=9.1.0, ' '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 -DLIBKINETO_NOXPUPTI=ON ' '-DUSE_FBGEMM -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-strict-overflow -Wno-strict-aliasing ' '-Wno-stringop-overflow -Wsuggest-override ' '-Wno-psabi -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, ' 'TORCH_VERSION=2.6.0, USE_CUDA=ON, USE_CUDNN=ON, ' 'USE_CUSPARSELT=1, USE_EXCEPTION_PTR=1, ' 'USE_GFLAGS=OFF, USE_GLOG=OFF, USE_GLOO=ON, ' 'USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, ' 'USE_NCCL=1, USE_NNPACK=ON, USE_OPENMP=ON, ' 'USE_ROCM=OFF, USE_ROCM_KERNEL_ASSERT=OFF, \n', 'Python': '3.10.16 | packaged by conda-forge | (main, Dec 5 2024, 14:16:10) ' '[GCC 13.3.0]', 'TorchVision': '0.21.0+cu124', 'lmdeploy': "not installed:No module named 'lmdeploy'", 'numpy_random_seed': 2147483648, 'opencompass': '0.4.0+68a9838', 'sys.platform': 'linux', 'transformers': '4.48.3'}

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

python run.py --hf-type chat
--hf-path /home/sagemaker-user/DQFP/model/qwen_1_5b_I
--tokenizer-path /home/sagemaker-user/DQFP/model/qwen_1_5b_I
--datasets medbench_gen
--debug

重现问题 - 命令或脚本

python run.py --hf-type chat
--hf-path /home/sagemaker-user/DQFP/model/qwen_1_5b_I
--tokenizer-path /home/sagemaker-user/DQFP/model/qwen_1_5b_I
--datasets medbench_gen
--debug

重现问题 - 错误信息

多次显示找不到文件,进入文件后发现只存在类似DrugCA_test.jsonl的文件,而需求DrugCA.jsonl
类似... FileNotFoundError: [Errno 2] No such file or directory: './data/MedBench/MedSafety/MedSafety.jsonl' ...

其他信息

没有加入medbench数据集,而只有medbench_test数据集,而且参考答案可能为0,导致没有成绩出现最后

我下面是关于 MedBench 数据集修改操作的完整总结,包含两部分映射调整:


1. 将 _test.jsonl 文件映射为正常 .jsonl 文件

在一些 MedBench 子任务中,下载的数据文件名称包含后缀 _test(例如 Med-Exam_test.jsonlSafetyBench_test.jsonl),而配置文件中期望的名称为不带 _test 的标准文件名(例如 Med-Exam.jsonlSafetyBench.jsonl)。为了解决这一问题,你可以使用符号链接将后缀文件映射为预期文件名。操作示例(在对应目录下执行):

# 例如,对于 Med-Exam 数据集:
cd /home/sagemaker-user/DQFP/opencompass/data/MedBench/Med-Exam
ln -s Med-Exam_test.jsonl Med-Exam.jsonl

如果目录下存在其他数据集,也可使用类似命令进行映射。


2. 将目录名称映射调整为配置文件期望

配置文件中 MedBench 部分期望数据文件位于路径 ./data/MedBench/MedSafety/MedSafety.jsonl,但实际数据存放目录中没有名为 MedSafety 的文件夹,而是存在 SafetyBench 文件夹,并且文件名为 SafetyBench.jsonl。为使配置加载正常,你可以创建以下符号链接:

  1. 在 MedBench 根目录下创建一个符号链接,将 SafetyBench 映射为 MedSafety
    cd /home/sagemaker-user/DQFP/opencompass/data/MedBench
    ln -s SafetyBench MedSafety
    
  2. 进入新建的 MedSafety 目录后,再创建内部符号链接,将实际文件 SafetyBench.jsonl 映射为 MedSafety.jsonl
    cd MedSafety
    ln -s SafetyBench.jsonl MedSafety.jsonl
    

这样,当 OpenCompass 尝试访问 ./data/MedBench/MedSafety/MedSafety.jsonl 时,系统会自动读取实际的文件内容。


总结

  • 文件名映射:通过创建符号链接,将下载数据中带有 _test 后缀的文件映射为不带 _test 的标准文件名,确保配置加载时文件名称一致。
  • 目录名称映射:由于配置文件期望的 MedBench 子数据集目录名称为 MedSafety,而实际数据存放目录中使用的是 SafetyBench,因此在 MedBench 目录下创建符号链接 MedSafety -> SafetyBench,同时在内部创建映射链接,将 SafetyBench.jsonl 映射为 MedSafety.jsonl

通过以上两步操作,配置文件中预期的路径和文件名称就能与实际数据存放保持一致,从而解决 FileNotFoundError 的问题,但是还是跑不出成绩

ryan0980 avatar Feb 16 '25 02:02 ryan0980

Same problem. Have you solved it?

Youth-49 avatar Apr 02 '25 07:04 Youth-49

Same problem. Have you solved it?

No

ryan0980 avatar Apr 02 '25 17:04 ryan0980

要用这个文件加载数据集https://github.com/open-compass/opencompass/blob/main/opencompass/configs/datasets/MedBench/medbench_gen_0b4fff.py,而且代码还少了两个新增的数据集,MedBench很乱,官方都不维护这份代码了

cloudpanl avatar Apr 18 '25 01:04 cloudpanl