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

使用PyTorch Lightning训练模型时遇pickle本地对象错误求助

问题原因与解决方案

这个AttributeError: Can't pickle local object错误本质是PyTorch Lightning在多进程训练场景下(默认启用),无法序列化局部定义的对象/函数——Python的pickle机制要求被序列化的对象必须是全局作用域可导入的,而局部对象不满足这个条件。

以下是针对性的排查和解决步骤:

  • 检查你的DataModule中train_dataloader/val_dataloader等方法里的num_workers参数,若设置为大于0,先临时改为0再运行。如果错误消失,说明问题出在多进程数据加载时的序列化环节。
  • 确认你的模型类是在全局作用域定义的,不是嵌套在某个函数或其他类内部的局部类。
  • 排查DataModule的预处理逻辑,比如自定义的transform、collate_fn等,有没有使用局部定义的函数(比如在某个函数内部定义的嵌套函数),把这类函数移到全局作用域,或者改为类的成员方法。
  • 若上述方法无效,尝试升级PyTorch Lightning到最新稳定版本,部分旧版本存在EvaluationLoop相关的pickle bug,升级后可修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:30:43