thuiar / MMSA

MMSA is a unified framework for Multimodal Sentiment Analysis.
MIT License
616 stars 104 forks source link

混精度训练模式下SIMS数据集中部分video数据在前向传播中会出现NaN #76

Open AZYoung233 opened 7 months ago

AZYoung233 commented 7 months ago

混精度训练模式下SIMS数据集中部分video数据在前向传播中会出现NaN(audio和text正常),但是关掉混精度模式就没有任何问题,不知道是不是因为特征提取的时候某些值的大小特别小

py-rgb commented 7 months ago

可以提供具体的信息?如如何实现混合精度,与出错误的数据id等信息。

AZYoung233 commented 7 months ago

可以提供具体的信息?如如何实现混合精度,与出错误的数据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是:video0046$$0051 video0038$ $00397 似乎每一次batch里面都会有一些数据会出现NaN,具体原因我也不清楚 感谢您百忙中回复我~

py-rgb commented 7 months ago

SIMS v2数据集中部分样本的vision特征值存在很大的值,我觉得这可能是导致运算出现Nan的原因。你可以试着在forward之前,对vision特征做一次归一化,看看是否还会出现Nan。

AZYoung233 commented 7 months ago

SIMS v2数据集中部分样本的vision特征值存在很大的值,我觉得这可能是导致运算出现Nan的原因。你可以试着在forward之前,对vision特征做一次归一化,看看是否还会出现Nan。

谢谢你的回复~ 我这边主要是v1出问题,v2反而能够正常运行,我后续试试看归一化的办法