You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

运行LLaVolta的train-4stage.sh脚本时遭遇'transformers'无法导入'EncoderDecoderCache'的错误求助

运行LLaVolta的train-4stage.sh脚本时遭遇'transformers'无法导入'EncoderDecoderCache'的错误求助

看起来你遇到的这个问题核心是PEFT与Transformers版本的兼容性冲突——虽然你严格遵循项目要求用了transformers==4.37.2,但你尝试的PEFT版本要么太新(比如0.11.0、0.14.0),对Transformers的依赖要求更高;要么太老(0.4.0),根本不知道EncoderDecoderCache这个类的存在。给你几个可行的解决方向:

  • 锁定与Transformers 4.37.2完全兼容的PEFT版本
    查PEFT的官方发布记录,peft==0.9.0是明确适配Transformers 4.37.x系列的版本,你可以直接安装这个版本试试:

    pip uninstall -y peft
    pip install peft==0.9.0
    

    安装完成后重新运行你的train-4stage.sh脚本,大概率能解决导入问题。

  • 重建干净的依赖环境避免冲突
    有时候环境中残留的旧依赖会导致隐性冲突,建议用以下步骤彻底重建依赖:

    # 卸载现有冲突包
    pip uninstall -y transformers peft
    # 按指定版本重新安装
    pip install transformers==4.37.2 peft==0.9.0
    # 同时确保其他核心依赖(比如deepspeed、torch)的版本符合项目要求
    

    如果项目提供了requirements.txt,直接用pip install -r requirements.txt会更稳妥。

  • 检查Transformers包的完整性
    少数情况是安装过程中包文件损坏导致类缺失,可以强制重新安装Transformers:

    pip install --force-reinstall transformers==4.37.2
    
  • 临时应急修改(不推荐,仅作为最后手段)
    如果你赶时间测试,可以临时修改PEFT的代码:找到你环境中peft/peft_model.py文件(路径类似/home/data/shika/miniconda3/envs/llavolta/lib/python3.10/site-packages/peft/peft_model.py),把导入语句里的EncoderDecoderCache删掉,改成:

    from transformers import Cache, DynamicCache, PreTrainedModel
    

    同时检查文件中是否有使用EncoderDecoderCache的代码,如果有也注释掉。但这个方法是权宜之计,后续可能引发其他问题,优先推荐前三种版本适配的方案。

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

火山引擎 最新活动