1、如果有的模型在字典里,需要提前用
nn.ModuleDict(other_model_dict)
进行包装,否则将不会被注入模型参数,也无法自动net.cuda()进入显存
2、如果显示梯度未回传,需要检查对应模块的变量是否需要梯度;detatch操作会断开梯度;z_last = x[:, self.num_patch_x:-1][:, -self.num_patch_z:]
属于两次索引,也会断开梯度;
3、.permute().contiguous().view() 在checkpoint包裹的时候会断开梯度
建议改为permute.reshape()
4、实验室A100机器存在通信问题,DDP需要加上这些:
PYTHONUNBUFFERED=1;CUDA_VISIBLE_DEVICES=0,1,2,3;NCCL_P2P_DISABLE=1;NCCL_IB_DISABLE=1;NCCL_SOCKET_IFNAME=eno2