MMSA
MMSA copied to clipboard
混精度训练模式下SIMS数据集中部分video数据在前向传播中会出现NaN
混精度训练模式下SIMS数据集中部分video数据在前向传播中会出现NaN(audio和text正常),但是关掉混精度模式就没有任何问题,不知道是不是因为特征提取的时候某些值的大小特别小
可以提供具体的信息?如如何实现混合精度,与出错误的数据id等信息。
可以提供具体的信息?如如何实现混合精度,与出错误的数据id等信息。
with autocast():
output= model(labels_m, (text,text_lengths), (audio, audio_lengths), (vision, vision_lengths))
loss = output['Loss']
# backward
scaler.scale(loss).backward()
train_loss += loss.item()
lr.append(optimizer.state_dict()['param_groups'][0]['lr'])
# update parameters
if not left_epochs:
# update
scaler.step(optimizer)
scaler.update()
scheduler.step()
left_epochs = self.args.update_epochs
if not left_epochs:
# update
scaler.step(optimizer)
scaler.update()
实现方法如上,修改自源代码,另外2个数据集都能正常运行 目前找到的一些id是:video_0046$$0051 video_0038$ $00397 似乎每一次batch里面都会有一些数据会出现NaN,具体原因我也不清楚 感谢您百忙中回复我~
SIMS v2数据集中部分样本的vision特征值存在很大的值,我觉得这可能是导致运算出现Nan的原因。你可以试着在forward之前,对vision特征做一次归一化,看看是否还会出现Nan。
SIMS v2数据集中部分样本的vision特征值存在很大的值,我觉得这可能是导致运算出现Nan的原因。你可以试着在forward之前,对vision特征做一次归一化,看看是否还会出现Nan。
谢谢你的回复~ 我这边主要是v1出问题,v2反而能够正常运行,我后续试试看归一化的办法