提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
@[TOC](赛博丹炉训练lora出现RuntimeError: Error(s) in loading state_dict for UNet2DConditionModel:Missing key(s) in state_dict:)
前言
新手小白在CSDN上的第一篇记录,还望大家多多鼓励。今天在使用赛博丹炉训练lora时,开始训练出现报错提醒:RuntimeError: Error(s) in loading state_dict for UNet2DConditionModel:Missing key(s) in state_dict:,记录一下解决过程与结果。
提示:以下是本篇文章正文内容,下面案例可供参考
报错提示误区
一开始以为最后这里的报错是问题来源,然后最后说一个“returned non-zero exit status 1”,后来发现这只是一个报错说明,并不是真正的问题所在,真正的报错原因往上翻了好久找到了,就是标题中的“RuntimeError: Error(s) in loading state_dict for UNet2DConditionModel:Missing key(s) in state_dict:”。
解决过程
chatgpt提示我此错误显示在加载UNet2DConditionModel的状态字典(state_dict)时缺失了一些关键。具体缺失的键包括有关注意力(attention)和归一化(normalization)层的权重和偏置。这通常发生在以下几种情况:
有可能尝试加载的权重与模型的定义不匹配。
有可能权重文件损坏或不完整,并未完整保存所有必需的参数。
所以问题就在于加载的模型它匹配不了,至于为什么匹配不了我确实不知道…所以我们换个模型尝试一下,从原本的SDXL:sd_xl_base_1.0.safetensors,换到了SD1.5:v1-5-pruned.ckpt,然后就模型匹配正常了。
之后又出现了网络配置的问题,这个问题很好解决,科学上网就好啦。
结果
Anyway,它成功开始训练了。附一张训练过程的截图。