用nn.parallel.DistributedDataParallel 跑Diffusion模型的时候报错如图,感觉以前也报过类似的错,困扰了一天不知道原因是什么,感觉是跟DDP有关。
看了一下别人的Blog,不使用GPU,“CUDA_VISIBLE_DEVICES”:“”,可以让CUDA抛出详细错误,但是我的模型是DDP形式的,没办法直接使用CPU,要改的地方比较多。
发现在运行python脚本之前,加一句CUDA_LAUNCH_BLOCKING=1能抛出详细错误:
CUDA_LAUNCH_BLOCKING=1 python Diff_VPS/train_diffusion.py
这是因为CUDA_LAUNCH_BLOCKING是CUDA的环境变量,设为1可以disable CUDA执行的异步性。
报错显示数据无法载入到GPU上。
最终解决:是timestep数据超载问题,设置了betas在200内采样,但是后面的timesteps取到了1000,正确写法应该如下,数字对应上: