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

树莓派运行HuggingFace问答pipeline报list无tolist属性错误求助

报错原因
  • 核心是依赖版本与arm架构的兼容性问题:你使用的Transformers 4.11.2版本问答pipeline,默认假设预处理生成的p_mask变量为PyTorch张量类型,而你搭载的armv7架构树莓派上的PyTorch 1.7.0a0是预览版本,张量类型适配存在缺陷,部分场景下会直接将p_mask转为Python原生列表,列表没有tolist()方法因此触发报错。
  • 相同代码在Windows x86环境可以正常运行,是因为x86版本的PyTorch 1.7正式版张量转换逻辑完整,p_mask始终保持张量类型。
解决方案

按优先级从高到低排列:

  • 方案1:升级稳定兼容的依赖版本(最推荐,一劳永逸解决兼容性问题)
    先卸载现有版本:
    pip3 uninstall -y transformers torch
    
    再安装arm架构适配的稳定版本:
    # 安装适配树莓派python3.7的PyTorch稳定版
    pip3 install torch==1.12.0 -f https://download.pytorch.org/whl/cpu/torch_stable.html
    # 安装配套的transformers版本
    pip3 install transformers==4.21.0
    
  • 方案2:修改本地Transformers源码临时适配
    打开报错的源码文件/home/pi/.local/lib/python3.7/site-packages/transformers/pipelines/question_answering.py,定位到第316行,将原有代码:
    p_mask=p_mask[span_idx].tolist(),
    
    替换为兼容列表和张量的逻辑:
    p_mask = p_mask[span_idx].tolist() if hasattr(p_mask[span_idx], 'tolist') else p_mask[span_idx],
    
  • 方案3:修改业务代码强制返回张量类型
    将你业务代码中初始化问答pipeline的行修改为:
    qa = pipeline("question-answering", return_tensors="pt")
    
    强制预处理阶段所有输出为PyTorch张量,避免生成列表类型的p_mask变量。

内容的提问来源于stack exchange,提问作者Scott Bing

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:39:04