opensora训练记录
记录i2v adapter和ip adapter的训练
Created on August 13|Last edited on August 13
Comment
t2v训练
t2v模型训练时,loss基本上平稳,随着训练步数的增加也没有降低的趋势。但是在实际测试时发现,训练是有效果的,高质量的数据有带来提升。
Run set
2
I2V训练
i2v adapter训练
在基于第二版代码的基础上,训练了i2v adapter,训练的步数为5k,训练loss曲线和之前全量训练模型参数时趋势相差不大,都是比较平稳,但是实际测试,生成效果要差一些,模型��力(t2v, i2v)都有所下降。
Run set
3
i2v
i2v adapter & ip adapter训练
在第9版代码的基础上,对I2v adapter &IP Adapter进行训练,发现训练到第134步时,loss会变成Nan。
Run set
1
更换激活函数
在提交的第十版代码中,将图像clip后的mlp层的激活函数从gelu换成silu。发现还是会在同样的步骤loss变成Nan。
Run set
1
关闭IP adapter做消融
在第十版代码的基础上,去掉了IP adapter,仅对i2v adapter进行训练,发现还是会在134步的时候loss变成Nan。之前第二版的代码中是能正常训练i2v adapter的,所以排除掉了IP adapter的问题。原因应该在最近修改的代码部分。
Run set
1
排除数据原因
因为每次都是到134的时候会变成Nan,所以需要检查一下是不是数据的原因导致。训练时跳过了前129步,从130步开始训练。发现到137步的loss都是正常的,可以排除是数据的原因。
Run set
1
跳过有问题的loss
打算将loss为Nan的训练跳过。
所以将下面的代码
loss = loss_dict["loss"].mean()booster.backward(loss=loss, optimizer=optimizer)optimizer.step()optimizer.zero_grad()
改成
loss = loss_dict["loss"].mean()if loss > 0 and loss < 1:booster.backward(loss=loss, optimizer=optimizer)optimizer.step()optimizer.zero_grad()
仅在loss为(0,1)的时候更新模型。但是发现会在20多步的时候卡住,可能是因为backward或者step的内部有barrier操作。
Run set
1
关掉所有的mask策略
将���有的mask策略关掉,然后训练i2v adapter & ip adapter。在134步的时候,loss便正常了。
Run set
1
更改mask和首帧不加噪音操作顺序
更改mask和frame_similarity_prior的顺序,原始顺序为
if frame_similarity_prior:# first frame do not add any noisex_t[:, :, 0:1, :, :] = x_start[:, :, 0:1]if mask is not None:t0 = torch.zeros_like(t)x_t0 = self.add_noise(x_start, noise, t0)x_t = torch.where(mask[:, None, :, None, None], x_t, x_t0)
调整顺序,mask策略还原成原先的mask,然后进行训练,到134步loss还是会变成Nan。
Run set
1
去掉所有和head相关的mask
应该是mask的过程中,会将首帧mask掉,替换成随机的噪音。和固定住首帧的训练策略不相符。所以把和head相关的mask都去掉。loss正常,看起来是有下降的趋势。loss值和走势上都要好于t2v的训练。但是实际测试效果不太理想。
Run set
3
Add a comment