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

multi-gpu-dataparrel-cls.py 报错inf #4

Open
jiakechong1991 opened this issue Aug 2, 2023 · 4 comments
Open

multi-gpu-dataparrel-cls.py 报错inf #4

jiakechong1991 opened this issue Aug 2, 2023 · 4 comments

Comments

@jiakechong1991
Copy link

jiakechong1991 commented Aug 2, 2023

实验条件:4卡 Ubuntu
背景:项目的其他 训练脚本 都能运行复现成功,所以框架环境应该没问题,只有下面的脚本执行有问题
运行命令:CUDA_VISIBLE_DEVICES=0,1 python multi-gpu-dataparallel-cls.py
报错如下
warnings.warn('Was asked to gather along dimension 0, but all '
image

我的排查过程
我把模型的输出(logits, label = self.on_step(batch_data)
loss = self.criterion(logits, label)这两行的结果变量)打印了一下,然后手动计算loss,发现确实是inf
然后我把同样的输入在 model(不打开 数据并行)单卡测试,发现loss正常,
然后把同样的输入在 model(打开 数据并行)上双卡测试,发现loss确实 inf.
一直没有排查出原因,还请大佬指教

@taishan1994
Copy link
Owner

实验条件:4卡 Ubuntu 背景:项目的其他 训练脚本 都能运行复现成功,所以框架环境应该没问题,只有下面的脚本执行有问题 运行命令:CUDA_VISIBLE_DEVICES=0,1 python multi-gpu-dataparallel-cls.py 报错如下: warnings.warn('Was asked to gather along dimension 0, but all ' image

我的排查过程: 我把模型的输出(logits, label = self.on_step(batch_data) loss = self.criterion(logits, label)这两行的结果变量)打印了一下,然后手动计算loss,发现确实是inf 然后我把同样的输入在 model(不打开 数据并行)单卡测试,发现loss正常, 然后把通常的输入在 model(打开 数据并行)上双卡测试,发现loss确实 inf. 一直没有排查出原因,还请大佬指教

可能的解决方法:
1、调小学习率。
2、代码中增加梯度裁剪策略。

@jiakechong1991
Copy link
Author

实验如下(单一变量操作):

  1. 把学习率从 learning_rate = 3e-5 改成 1e-5和3e-7 报错不变
  2. 把梯度加上裁剪,代码如下:
    image
    报错如下:
    image

大佬,疑惑一个问题:

  1. 同样的模型,同样的输入,为啥单卡时,输出的logits和多卡的输出logits不同呢?dataparallel不就是 每个GPU加载同样的模型吗?

感谢大佬百忙之中指教

@taishan1994
Copy link
Owner

我也不知道是什么原因了。

@jiakechong1991
Copy link
Author

感谢,我再研究下,如果解决就贴在这里

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

2 participants