快速结论:该报错一般出现在使用 anima_train.py 并开启 --cache_latents_to_disk 后,首次缓存成功、但第二次训练读取已有 .npz 缓存时报 Error : cache_latents_to_disk for anima_train (キャッシュ読込エラー) 的场景;优先排查 npz 路径是否被重复拼接(分辨率与后缀叠加)导致实际路径与缓存文件不一致。
适用环境:Issue 中确认的工具为 kohya-ss/sd-scripts(anima_train.py)、数据集使用 metadata json、开启 --cache_latents 与 --cache_latents_to_disk;涉及版本包括 main 068bcd7、main 1a3ec9e、dev fb03a16。操作系统、Python、CUDA、显卡型号未在 Issue 中明确。
最快修复方案:暂无确认的一步修复方案。Issue 中说明该问题已由 #2381 修复并合并到 main,报告中验证通过的提交为 b2b4992,建议先更新到该提交或之后的 main 版本再重试。若暂时无法升级,可使用评论中提供的 strategy_anima.py 临时补丁。
注意事项:临时补丁属于“相当强行”的做法,Issue 明确指出在以下情况仍会报错:同一图片被多个 Dataset 重复使用(尤其配合 skip_image_resolution)、以及极少数图片在 npz 尚未创建时的报错(规律不明)。升级修复版本是目前唯一被报告为“新规创建和重新读取都 OK”的路径。
问题场景
用户在运行 kohya-ss/sd-scripts 的 anima_train.py 时启用 --cache_latents 和 --cache_latents_to_disk,并通过 metadata json 配置数据集(dataset.config)。首次训练时 latents 缓存创建正常,但第二次及之后的训练在读取已有 .npz 缓存阶段抛出异常。用户同时提到:使用 SDXL Full-FT 时 npz 读取正常,因此判断问题与 anima 相关 strategy 结构有关。
报错原文
INFO caching latents... train_util.py:1174
ERROR Error loading file: train_util.py:2964
C:\ ## folder_name ### \ ### file_name ##_0602x0429_anima.npz
Traceback (most recent call last):
File "\train_util.py", line 2632, in new_cache_latents
dataset.new_cache_latents(model, accelerator)
File "train_util.py", line 1215, in new_cache_latents
submit_batch(batch, current_condition)
File "\train_util.py", line 1159, in submit_batch
info.image = info.image.result() # future to image
・・・
・・
・
PIL.UnidentifiedImageError: cannot identify image file 'C:\ ## folder_name ### \ ### file_name ##_0602x0429_anima.npz'
原因分析
根据 Issue 调查与维护者确认:在通过 metadata json 使用数据集时,如果对应 .npz 已经存在,代码会覆盖图片路径,并基于被覆盖后的路径再次生成 .npz 路径,从而产生错误的缓存文件名。
具体机制在报告者的分析中体现为:strategy_anima.py 的 get_latents_npz_path 使用 os.path.splitext(absolute_path)[0] 作为基础,但当时传入的 absolute_path 已经被拼接过一次分辨率与 _anima 后缀,导致返回结果中后缀重复,例如出现 ABCDEF_0602x0429_anima_0602x0429_anima 这类路径。由于真实存在的缓存文件名与代码尝试读取的文件名不一致,程序误判 .npz 不存在并尝试重建,最终在对该路径执行图像识别时抛出 PIL.UnidentifiedImageError。
维护者说明,由于修复涉及重命名相关代码改动,需先合并重命名分支后再修复,最终在 #2381 中完成修复并合并到 main。
环境排查
- 确认 sd-scripts 版本:报告涉及的版本为 main 068bcd7、main 1a3ec9e、dev fb03a16;修复版本对应的提交为 b2b4992。
- 确认运行脚本:
anima_train.py。 - 确认数据集配置方式:使用 metadata json(dataset.config)。
- 确认已开启
--cache_latents与--cache_latents_to_disk。 - 检查报错中的 .npz 文件名是否出现“分辨率 + _anima”后缀重复,例如
xxx_0602x0429_anima_0602x0429_anima.npz。 - 对比缓存目录中实际存在的 .npz 文件名与代码尝试加载的文件名是否一致。
- Python、CUDA、PyTorch、显卡型号等在本 Issue 中未提供,不作为排查依据。
解决步骤
- 确认当前 sd-scripts 版本是否早于 #2381 修复;若是,升级到 main 分支中 b2b4992 或之后的版本。
- 升级后重新运行 anima_train.py,观察 npz 的重新创建与再次读取是否均正常工作(这是 Issue 中最后验证通过的做法)。
- 若暂时无法升级,可优先尝试评论中给出的 strategy_anima.py 临时补丁:在
get_latents_npz_path中先判断后缀是否已存在,若存在则直接返回absolute_path,否则再按原逻辑拼接。 - 使用临时补丁时,注意避免同一图片在多 Dataset 中复用(特别是在使用 skip_image_resolution 时),并留意极少数图片在 npz 未创建时的报错。
- 如临时补丁后仍复现,请按上方“环境排查”确认缓存文件名是否仍存在后缀重复,并考虑直接升级到修复版本。
验证方法
升级到修复版本(b2b4992 或之后)后,重新运行 anima_train.py:确认 npz 的首次创建和二次读取均无报错,训练正常进入 caching latents 之后的流程。Issue 报告者以 b2b4992 验证了“npz 新规创建和重新读取均 OK”。若使用临时补丁,也应确认不再出现后缀重复的 npz 路径,且读取已有缓存时不再触发 PIL.UnidentifiedImageError。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![Wan 2.2 how to fix "no link found in parent graph for id [129:85] slot [7] cfg"](https://www.chat-gpts.plus/wp-content/uploads/2026/09/13069-1a343636-768x403.jpg)

![[Version 1.52.0] Doesn't connect to the local server](https://www.chat-gpts.plus/wp-content/uploads/2026/09/2548-f4f9aafa-768x403.jpg)