You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

大参数输入下模型返回NoneType引发AttributeError,函数无有效返回值求助

大参数输入下模型返回NoneType引发AttributeError,函数无有效返回值求助

我最近在啃一个项目代码,卡在这里快崩溃了,网上搜了好几天都没找到有用的解决办法,真心求大家帮忙看看,哪怕给点排查方向也行!

项目运行时抛出了如下错误:

AttributeError: 'NoneType' object has no attribute 'item'

对应的完整报错栈是:

Traceback (most recent call last):
File "pretrain/pretrain_eq.py", line 313, in
main(args, 0)
File "pretrain/pretrain_eq.py", line 262, in main
loss, acc, bsz = model(batch['eq_tokens'], batch['wd_tokens'], batch['tgt_processed_tokens'], args.label_smoothing)
AttributeError: 'NoneType' object has no attribute 'item'

我已经确认过传入的batch绝对不是None,但调用模型后居然返回了None!我用pdb调试的时候发现,代码确实进入了模型的调用逻辑,但一路走完所有的if判断和循环后,最终的返回结果居然是None。

我现在就想让这个项目能正常跑起来,下面是模型调用相关的_call_impl函数代码:

def _call_impl(self, *input, **kwargs):
    # Do not call functions when jit is used
    full_backward_hooks, non_full_backward_hooks = [], []
    if len(self._backward_hooks) > 0 or len(_global_backward_hooks) > 0:
        full_backward_hooks, non_full_backward_hooks = self._get_backward_hooks()

    for hook in itertools.chain(
            _global_forward_pre_hooks.values(),
            self._forward_pre_hooks.values()):
        result = hook(self, input)
        if result is not None:
            if not isinstance(result, tuple):
                result = (result,)
            input = result

    bw_hook = None
    if len(full_backward_hooks) > 0:
        bw_hook = hooks.BackwardHook(self, full_backward_hooks)
        input = bw_hook.setup_input_hook(input)

    if torch._C._get_tracing_state():
        result = self._slow_forward(*input, **kwargs)
    else:
        result = self.forward(*input, **kwargs)

    for hook in itertools.chain(
            _global_forward_hooks.values(),
            self._forward_hooks.values()):
        hook_result = hook(self, input, result)
        if hook_result is not None:
            result = hook_result

    if bw_hook:
        result = bw_hook.setup_output_hook(result)

    # Handle the non-full backward hooks
    if len(non_full_backward_hooks) > 0:
        var = result
        while not isinstance(var, torch.Tensor):
            if isinstance(var, dict):
                var = next((v for v in var.values() if isinstance(v, torch.Tensor)))
            else:
                var = var[0]
        grad_fn = var.grad_fn
        if grad_fn is not None:
            for hook in non_full_backward_hooks:
                wrapper = functools.partial(hook, self)
                functools.update_wrapper(wrapper, hook)
                grad_fn.register_hook(wrapper)
            self._maybe_warn_non_full_backward_hook(input, result, grad_fn)

    return result

备注:内容来源于stack exchange,提问作者Labouriouszfj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 14:30:28