Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LOSS:nan 微调时LOSS异常 #298

Open
wangbenchi opened this issue Apr 17, 2024 · 14 comments
Open

LOSS:nan 微调时LOSS异常 #298

wangbenchi opened this issue Apr 17, 2024 · 14 comments

Comments

@wangbenchi
Copy link

屏幕截图 2024-04-17 220928
请教一下在进行微调时不管我的lr设置多小,这里的loss总会在第一个batch后变成nan是怎么回事

使用的是sh文件中提供的默认参数
context_length=52
warmup=100
batch_size=128
valid_batch_size=128
accum_freq=1
lr=5e-5
wd=0.001

@Scau-Guang
Copy link

可能有脏数据

@csh-23001
Copy link

我也遇到了这个问题,而且用官方提供的处理好的数据集也会这样,请问问题解决了吗

@Scau-Guang
Copy link

Scau-Guang commented Apr 21, 2024 via email

@a694654760
Copy link

我也遇到了类似的问题,有解决方法麻烦踢我一下~

@csh-23001
Copy link

我把accum_freq这个参数设置为1之后就莫名其妙好了,也可能和batch size有关,我把单卡batch size设置成了200

@a694654760
Copy link

我把accum_freq这个参数设置为1之后就莫名其妙好了,也可能和batch size有关,我把单卡batch size设置成了200

请问你有用自己的数据集吗,我这边遇到的问题是使用自己的数据集,loss一直不收敛,和题主的还不太一样,不知道是不是我标签什么的做错了

@csh-23001
Copy link

我把accum_freq这个参数设置为1之后就莫名其妙好了,也可能和batch size有关,我把单卡batch size设置成了200

请问你有用自己的数据集吗,我这边遇到的问题是使用自己的数据集,loss一直不收敛,和题主的还不太一样,不知道是不是我标签什么的做错了

我用的是自己的数据,当时的情况是开始几个batch的loss正常,精度有七十多,后面loss就变为了non,精度变成三十多。
我之前怀疑是梯度爆炸,然后去代码里面加上了梯度裁剪,但是还是没什么用。
后面把学习率设置为0,发现还是会出现这样的情况
所以我怀疑这和硬件有关,我把单卡batch size设置成210 的时候,loss有时候正常有时候为non,它们交替出现,我单卡显存是32g

@a694654760
Copy link

a694654760 commented May 7, 2024

我把accum_freq这个参数设置为1之后就莫名其妙好了,也可能和batch size有关,我把单卡batch size设置成了200

请问你有用自己的数据集吗,我这边遇到的问题是使用自己的数据集,loss一直不收敛,和题主的还不太一样,不知道是不是我标签什么的做错了

我用的是自己的数据,当时的情况是开始几个batch的loss正常,精度有七十多,后面loss就变为了non,精度变成三十多。 我之前怀疑是梯度爆炸,然后去代码里面加上了梯度裁剪,但是还是没什么用。 后面把学习率设置为0,发现还是会出现这样的情况 所以我怀疑这和硬件有关,我把单卡batch size设置成210 的时候,loss有时候正常有时候为non,它们交替出现,我单卡显存是32g

我是用2*v100,单卡显存32g, 单卡batch size设置了128,我自己的数据集,其实只有三种文本标签,只不过我对应了不同的文本id,大概类似于这样:
{text_id:0, text:"标签A", image_id[0]}
{text_id:1, text:"标签B", image_id[1]}
{text_id:2, text:"标签A", image_id[2]}
{text_id:3, text:"标签A", image_id[3]}
{text_id:4, text:"标签C", image_id[4]}
向请教你一下,这样做数据对不对,我的loss就一直5.5x不变,acc就0.x,不知道是哪里出了问题,用MUGE训练正常的,但是MUGE的验证集acc也是一直30.x

@csh-23001
Copy link

我把accum_freq这个参数设置为1之后就莫名其妙好了,也可能和batch size有关,我把单卡batch size设置成了200

请问你有用自己的数据集吗,我这边遇到的问题是使用自己的数据集,loss一直不收敛,和题主的还不太一样,不知道是不是我标签什么的做错了

我用的是自己的数据,当时的情况是开始几个batch的loss正常,精度有七十多,后面loss就变为了non,精度变成三十多。 我之前怀疑是梯度爆炸,然后去代码里面加上了梯度裁剪,但是还是没什么用。 后面把学习率设置为0,发现还是会出现这样的情况 所以我怀疑这和硬件有关,我把单卡batch size设置成210 的时候,loss有时候正常有时候为non,它们交替出现,我单卡显存是32g

我是用2*v100,单卡显存32g, 单卡batch size设置了128,我自己的数据集,其实只有三种文本标签,只不过我对应了不同的文本id,大概类似于这样: {text_id:0, text:"标签A", image_id[0]} {text_id:1, text:"标签B", image_id[1]} {text_id:2, text:"标签A", image_id[2]} {text_id:3, text:"标签A", image_id[3]} {text_id:4, text:"标签C", image_id[4]} 向请教你一下,这样做数据对不对,我的loss就一直5.5x不变,acc就0.x,不知道是哪里出了问题,用MUGE训练正常的,但是MUGE的验证集acc也是一直30.x

应该没问题吧,可能是因为他这个模型已经训练的很好了,我后面的训练在验证集上的loss下降不多,不过一直训练下去在训练集上的loss倒是能下降到很低。
也可以试试给标签加个模版,我看到有些预训练模型在做分类任务的微调的时候会加个模版,因为标签字数太少,也不便于提取文本特征,比如猫狗分类任务的模版可以是:“图片中的动物是<标签>”。要根据你的具体分类任务设计一个模版,让它更好的提取文本特征,在猫狗分类任务中提示模版里面的“动物”这个词是有用,但我这个不太熟,可能说错。

@a694654760
Copy link

我把accum_freq这个参数设置为1之后就莫名其妙好了,也可能和batch size有关,我把单卡batch size设置成了200

请问你有用自己的数据集吗,我这边遇到的问题是使用自己的数据集,loss一直不收敛,和题主的还不太一样,不知道是不是我标签什么的做错了

我用的是自己的数据,当时的情况是开始几个batch的loss正常,精度有七十多,后面loss就变为了non,精度变成三十多。 我之前怀疑是梯度爆炸,然后去代码里面加上了梯度裁剪,但是还是没什么用。 后面把学习率设置为0,发现还是会出现这样的情况 所以我怀疑这和硬件有关,我把单卡batch size设置成210 的时候,loss有时候正常有时候为non,它们交替出现,我单卡显存是32g

我是用2*v100,单卡显存32g, 单卡batch size设置了128,我自己的数据集,其实只有三种文本标签,只不过我对应了不同的文本id,大概类似于这样: {text_id:0, text:"标签A", image_id[0]} {text_id:1, text:"标签B", image_id[1]} {text_id:2, text:"标签A", image_id[2]} {text_id:3, text:"标签A", image_id[3]} {text_id:4, text:"标签C", image_id[4]} 向请教你一下,这样做数据对不对,我的loss就一直5.5x不变,acc就0.x,不知道是哪里出了问题,用MUGE训练正常的,但是MUGE的验证集acc也是一直30.x

应该没问题吧,可能是因为他这个模型已经训练的很好了,我后面的训练在验证集上的loss下降不多,不过一直训练下去在训练集上的loss倒是能下降到很低。 也可以试试给标签加个模版,我看到有些预训练模型在做分类任务的微调的时候会加个模版,因为标签字数太少,也不便于提取文本特征,比如猫狗分类任务的模版可以是:“图片中的动物是<标签>”。要根据你的具体分类任务设计一个模版,让它更好的提取文本特征,在猫狗分类任务中提示模版里面的“动物”这个词是有用,但我这个不太熟,可能说错。

模板也已经加了,但是不管我怎么调整数据,结果都是一样,请问你的id是从0开始的吗,这个有没有影响啊?id是不是得从他们训练的id接着来

@csh-23001
Copy link

我把accum_freq这个参数设置为1之后就莫名其妙好了,也可能和batch size有关,我把单卡batch size设置成了200

请问你有用自己的数据集吗,我这边遇到的问题是使用自己的数据集,loss一直不收敛,和题主的还不太一样,不知道是不是我标签什么的做错了

我用的是自己的数据,当时的情况是开始几个batch的loss正常,精度有七十多,后面loss就变为了non,精度变成三十多。 我之前怀疑是梯度爆炸,然后去代码里面加上了梯度裁剪,但是还是没什么用。 后面把学习率设置为0,发现还是会出现这样的情况 所以我怀疑这和硬件有关,我把单卡batch size设置成210 的时候,loss有时候正常有时候为non,它们交替出现,我单卡显存是32g

我是用2*v100,单卡显存32g, 单卡batch size设置了128,我自己的数据集,其实只有三种文本标签,只不过我对应了不同的文本id,大概类似于这样: {text_id:0, text:"标签A", image_id[0]} {text_id:1, text:"标签B", image_id[1]} {text_id:2, text:"标签A", image_id[2]} {text_id:3, text:"标签A", image_id[3]} {text_id:4, text:"标签C", image_id[4]} 向请教你一下,这样做数据对不对,我的loss就一直5.5x不变,acc就0.x,不知道是哪里出了问题,用MUGE训练正常的,但是MUGE的验证集acc也是一直30.x

应该没问题吧,可能是因为他这个模型已经训练的很好了,我后面的训练在验证集上的loss下降不多,不过一直训练下去在训练集上的loss倒是能下降到很低。 也可以试试给标签加个模版,我看到有些预训练模型在做分类任务的微调的时候会加个模版,因为标签字数太少,也不便于提取文本特征,比如猫狗分类任务的模版可以是:“图片中的动物是<标签>”。要根据你的具体分类任务设计一个模版,让它更好的提取文本特征,在猫狗分类任务中提示模版里面的“动物”这个词是有用,但我这个不太熟,可能说错。

模板也已经加了,但是不管我怎么调整数据,结果都是一样,请问你的id是从0开始的吗,这个有没有影响啊?id是不是得从他们训练的id接着来

ID应该没影响吧

@a694654760
Copy link

我把accum_freq这个参数设置为1之后就莫名其妙好了,也可能和batch size有关,我把单卡batch size设置成了200

请问你有用自己的数据集吗,我这边遇到的问题是使用自己的数据集,loss一直不收敛,和题主的还不太一样,不知道是不是我标签什么的做错了

我用的是自己的数据,当时的情况是开始几个batch的loss正常,精度有七十多,后面loss就变为了non,精度变成三十多。 我之前怀疑是梯度爆炸,然后去代码里面加上了梯度裁剪,但是还是没什么用。 后面把学习率设置为0,发现还是会出现这样的情况 所以我怀疑这和硬件有关,我把单卡batch size设置成210 的时候,loss有时候正常有时候为non,它们交替出现,我单卡显存是32g

我是用2*v100,单卡显存32g, 单卡batch size设置了128,我自己的数据集,其实只有三种文本标签,只不过我对应了不同的文本id,大概类似于这样: {text_id:0, text:"标签A", image_id[0]} {text_id:1, text:"标签B", image_id[1]} {text_id:2, text:"标签A", image_id[2]} {text_id:3, text:"标签A", image_id[3]} {text_id:4, text:"标签C", image_id[4]} 向请教你一下,这样做数据对不对,我的loss就一直5.5x不变,acc就0.x,不知道是哪里出了问题,用MUGE训练正常的,但是MUGE的验证集acc也是一直30.x

应该没问题吧,可能是因为他这个模型已经训练的很好了,我后面的训练在验证集上的loss下降不多,不过一直训练下去在训练集上的loss倒是能下降到很低。 也可以试试给标签加个模版,我看到有些预训练模型在做分类任务的微调的时候会加个模版,因为标签字数太少,也不便于提取文本特征,比如猫狗分类任务的模版可以是:“图片中的动物是<标签>”。要根据你的具体分类任务设计一个模版,让它更好的提取文本特征,在猫狗分类任务中提示模版里面的“动物”这个词是有用,但我这个不太熟,可能说错。

模板也已经加了,但是不管我怎么调整数据,结果都是一样,请问你的id是从0开始的吗,这个有没有影响啊?id是不是得从他们训练的id接着来

ID应该没影响吧

好吧,我已经想不到从哪里找问题了哈哈哈,还是谢谢你啦

@L1n111ya
Copy link

我把accum_freq这个参数设置为1之后就莫名其妙好了,也可能和batch size有关,我把单卡batch size设置成了200

请问你有用自己的数据集吗,我这边遇到的问题是使用自己的数据集,loss一直不收敛,和题主的还不太一样,不知道是不是我标签什么的做错了

我用的是自己的数据,当时的情况是开始几个batch的loss正常,精度有七十多,后面loss就变为了non,精度变成三十多。 我之前怀疑是梯度爆炸,然后去代码里面加上了梯度裁剪,但是还是没什么用。 后面把学习率设置为0,发现还是会出现这样的情况 所以我怀疑这和硬件有关,我把单卡batch size设置成210 的时候,loss有时候正常有时候为non,它们交替出现,我单卡显存是32g

我的问题和你一样,有时候正常,有时候nan,正常的时候从整体来看,只看正常的话是在收敛的

@Scau-Guang
Copy link

Scau-Guang commented Jul 24, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants