这周试了一下stable diffusion 和 lora模型的训练,因为显卡太菜所以遇到了一些坑,这里记录一下,如果有遇到同类问题的炼金术师(雾)也许可以参考看看
1050+2G:
画画可以,训练直接寄,报错RuntimeError: CUDA out of memory,显存不足。所有参数调到1+开Unet only+训练集分辨率128*128都不行,所以别想了,换显卡吧
1060+6G:
画画可以,可以简单训练。训练调试过程中的报错记录:
0、同上显存不足:参数调低点,起码能跑。据说设置PYTORCH_CUDA_ALLOC_CONF的max_split_size_mb=32可破,但我试了32和128,都没成功。想再挣扎一下的可以参考:
通过设置PYTORCH_CUDA_ALLOC_CONF中的max_split_size_mb解决Pytorch的显存碎片化导致的CUDA:Out Of Memory问题_梦音Yune的博客-CSDN博客
1、具体的报错log忘了,原因是CUDA和pytorch版本没对上,解决方法有俩,一个是改CUDA版本,一个是改pytorch版本,网上建议改后者,但我直接升级驱动之后也解决了。看CUDA版本的方法:cmd里输入nvidia-smi
2、Error no kernel image is available for execution on the device,原因是10系显卡太破了,不支持unit8,解决方法参考:
【Lora模型训练过程报错】Error no kernel image is available for execution on the device at line_安利FFF的博客-CSDN博客
3、“页面文件太小。无法完成操作”:调低batch_size = 1,然后把训练脚本所在的盘的虚拟内存开到60G可破
1660+6G:
大坑,据说是因为fp16数据类型在运算时会出现nan,所以画画和训练都会出问题
1、画画会出现黑图/卡生成95%,如果用的启动器,要在设置里关掉半精度优化,我顺便把nancheck也关了,好像就没怎么画黑图了
2、训练一开始就loss = nan,训了白训。需要改配置为mixed_precision="no",但这样会导致6G显存叕不太够用了,只能降低训练集的分辨率了
3、训练加reg会出现RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling `cublasCreate(handle) ,跟之前的显存不足报错内容不太一样,但ChatGPT告诉我这也是显存不足的原因,于是我把各参数调到1试了一下,确实能run了,看来就是显存不足,鉴定为寄
(未完待续...)