使用 lm-eval 评估模型时报错:TypeError: ‘NoneType’ object is not callable 的解决方案

问题描述

在使用 lm-evaluation-harness 进行多 GPU 模型评估时,使用如下命令:

accelerate launch --multi-gpu --num_processes 2 \
    -m lm_eval --model hf \
    --model_args pretrained=${local_model_path} \
    --tasks mmlu \
    --batch_size 8 \
    --log_samples \
    --output_path ${output_path} \
    --trust_remote_code

却报错如下:

TypeError: 'NoneType' object is not callable

错误栈显示问题出现在 datasets.load_dataset() 时,builder_cls 为 NoneType:

builder_instance: DatasetBuilder = builder_cls(
TypeError: 'NoneType' object is not callable

问题分析

报错的关键在于:

datasets.load_dataset()

的过程中,某个数据集无法被正确加载;

  • 此错误通常是由于 datasets 包版本过新或过旧 与 lm-eval 中的任务配置不兼容导致的;
  • 在 lm-eval0.4.5 搭配 datasets3.1.0 时出现该错误;
  • 很可能是 mmlu 任务依赖的数据集在新版 datasets 中的加载逻辑发生了改变或 metadata 不兼容。

解决方法

将 datasets 包从 3.1.0 降级至 2.16.0:

pip install datasets==2.16.0

再次运行命令,即可成功评估:

accelerate launch --multi-gpu --num_processes 2 \
    -m lm_eval --model hf \
    --model_args pretrained=${local_model_path} \
    --tasks mmlu \
    --batch_size 8 \
    --log_samples \
    --output_path ${output_path} \
    --trust_remote_code

参考链接

lm-evaluation-harness GitHub

WARNING ⚠️ no model scale passed. Assuming scale='n'. Traceback (most recent call last): File "E:\ultralytics-yolo11-20250502\ultralytics-yolo11-main\train.py", line 20, in <module> model = YOLO(r'E:\ultralytics-yolo11-20250502\ov.yaml') File "E:\ultralytics-yolo11-20250502\ultralytics-yolo11-main\ultralytics\models\yolo\model.py", line 23, in __init__ super().__init__(model=model, task=task, verbose=verbose) File "E:\ultralytics-yolo11-20250502\ultralytics-yolo11-main\ultralytics\engine\model.py", line 143, in __init__ self._new(model, task=task, verbose=verbose) File "E:\ultralytics-yolo11-20250502\ultralytics-yolo11-main\ultralytics\engine\model.py", line 251, in _new self.model = (model or self._smart_load("model"))(cfg_dict, verbose=verbose and RANK == -1) # build model File "E:\ultralytics-yolo11-20250502\ultralytics-yolo11-main\ultralytics\nn\tasks.py", line 417, in __init__ self.model, self.save = parse_model(deepcopy(self.yaml), ch=ch, verbose=verbose, warehouse_manager=self.warehouse_manager) # model, savelist File "E:\ultralytics-yolo11-20250502\ultralytics-yolo11-main\ultralytics\nn\tasks.py", line 1228, in parse_model m = m(*args) File "E:\ultralytics-yolo11-20250502\ultralytics-yolo11-main\ultralytics\nn\backbone\overlock.py", line 998, in overlock_xt model = OverLoCK( File "E:\ultralytics-yolo11-20250502\ultralytics-yolo11-main\ultralytics\nn\backbone\overlock.py", line 921, in __init__ self.channel = [i.size(1) for i in self.forward(torch.randn(1, 3, 640, 640).cuda())] File "E:\ultralytics-yolo11-20250502\ultralytics-yolo11-main\ultralytics\nn\backbone\overlock.py", line 976, in forward x, ctx_cls = self.forward_sub_features(x, ctx) File "E:\ultralytics-yolo11-20250502\ultralytics-yolo11-main\ultralytics\nn\backbone\overlock.py", line 963, in forward_sub_features x, ctx = blk(x, ctx, ctx_up) File "E:\anaconda\envs\hong\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl return forward_call(*args, **kwargs) File "E:\ultralytics-yolo11-20250502\ultralytics-yolo11-main\ultralytics\nn\backbone\overlock.py", line 566, in forward x = self._forward_inner(x, h_x, h_r) File "E:\ultralytics-yolo11-20250502\ultralytics-yolo11-main\ultralytics\nn\backbone\overlock.py", line 531, in _forward_inner x1 = na2d_av(attn1, value[0], kernel_size=self.smk_size) TypeError: 'NoneType' object is not callable
最新发布
07-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值