PytorchStreamReader找不到data.pkl报错的排查与解决方法
问题描述
使用支持src+img输入的模型开展数据训练时,运行训练脚本触发如下报错:
RuntimeError: PytorchStreamReader failed locating file data.pkl: file not found
按照预期,报错中提到的.pkl文件应为序列化后.pt文件的内嵌内容,无需单独导出存在。
已完成排查动作
- 核实预处理生成的training.pt文件路径配置,确认配置无错误
- 全设备检索未找到任何独立导出的data.pkl文件,结合PyTorch官方文档说明,判断问题和pickle序列化机制相关,对应文档说明如下:
“该保存/加载流程语法直观、所需代码量最少,会通过Python的pickle模块保存整个模块。该方案的弊端是序列化数据与模型保存时使用的特定类、目录结构强绑定,原因是pickle不会保存模型类本身,仅会保存类所在文件的路径供加载时调用,因此代码迁移到其他项目或经过重构后可能出现各类报错。”
- 尝试修改脚本中data.pkl相关配置校验是否存在损坏的生成文件,未定位到问题根源
完整报错堆栈
File "train_mm.py", line 448, in <module> main() File "train_mm.py", line 423, in main first_dataset = next(lazily_load_dataset("train")) File "train_mm.py", line 314, in lazily_load_dataset yield lazy_dataset_loader(pt, corpus_type) File "train_mm.py", line 305, in lazy_dataset_loader dataset = torch.load(pt_file) File "/usr/local/lib/python3.7/dist-packages/torch/serialization.py", line 607, in load return _load(opened_zipfile, map_location, pickle_module, **pickle_load_args) File "/usr/local/lib/python3.7/dist-packages/torch/serialization.py", line 878, in _load data_file = io.BytesIO(zip_file.get_record(pickle_file)) RuntimeError: PytorchStreamReader failed locating file data.pkl: file not found
已验证解决方案
重新运行预处理脚本生成新的.pt文件后,该报错即可解决。
内容的提问来源于stack exchange,提问作者U. Iceman
相关产品推荐
相关产品推荐

