ChatGLM-6B icon indicating copy to clipboard operation
ChatGLM-6B copied to clipboard

[BUG/Help] 3090双卡训练比单卡慢出一倍以上

Open XiaTiaoQAQ opened this issue 1 year ago • 19 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

Current Behavior

相同数据集,脚本上区别是修改了CUDA_VISIBLE_DEVICES=0为CUDA_VISIBLE_DEVICES=0,1。 3090单卡是51.82s/it image 3090双卡是124.55s/it image GPU占用如下 3090单卡GPU100% 显存13G image 3090双卡GPU占用很少时间双卡100% 平均一卡100%另一卡50% 显存占用27G image

Expected Behavior

双卡训练效率提高,显存占用不线性增加

Steps To Reproduce

  1. 相同镜像、相同数据集、只改变卡数量
  2. 修改train.sh中CUDA_VISIBLE_DEVICES
  3. 训练现象如上

Environment

- OS:Ubuntu
- Python:3.8
- Transformers:4.27.1
- PyTorch:1.10.0
- CUDA Support (`python -c "import torch; print(torch.cuda.is_available())"`) :True

Anything else?

No response

XiaTiaoQAQ avatar Apr 13 '23 12:04 XiaTiaoQAQ

2块v100训练同样比一块v100慢,什么原因?

huliangbing avatar Apr 16 '23 15:04 huliangbing

@huliangbing @XiaTiaoQAQ 除了软件之外,硬件上NVLink实装了吗?3090默认persitence mode没有开启的,开启后才能用NVLink。NVLink开启后,训练速度才会比单卡快

yhyu13 avatar Apr 17 '23 09:04 yhyu13

谢谢!那找到原因,我用的是两块pcie v100

huliangbing avatar Apr 17 '23 12:04 huliangbing

4块t4卡比单卡训练慢,求问什么原因

mercurydarkork avatar Apr 20 '23 08:04 mercurydarkork

主要是卡之间的通信要很长时间

cywjava avatar Apr 22 '23 00:04 cywjava

是挺离谱的,单卡比双卡还快,占的显存还多一倍以上

Zombiessss avatar Apr 26 '23 03:04 Zombiessss

我准备组装一台低成本8卡机器,已经确定不使用NVlink而使用PCIE 3.0 x16. 请问你们的显卡全部工作在pcie x16模式下吗?很多主板只有第一个插槽是x16,第二个可能是x4,这使得显卡间通讯带宽大幅缩小。有没有人能告诉我带宽的影响到底有多大?

KegangWangCCNU avatar May 04 '23 14:05 KegangWangCCNU

我准备组装一台低成本8卡机器,已经确定不使用NVlink而使用PCIE 3.0 x16. 请问你们的显卡全部工作在pcie x16模式下吗?很多主板只有第一个插槽是x16,第二个可能是x4,这使得显卡间通讯带宽大幅缩小。有没有人能告诉我带宽的影响到底有多大?

8卡单单机的服务器都有专门主办的吧。有钱直接问老板就行。其实可以试试AutoDL的8x A100

yhyu13 avatar May 04 '23 17:05 yhyu13

我当然知道,目前是打算拿下一块超微的主板,双路CPU,每一路包含4个pcie3.0 x16,但是我仍然不确定没有nvlink的情况下带宽瓶颈有多严重。根据经验,多卡训练的主要瓶颈就是带宽(而不是Flops),一般来说nvlink可以提供上百G的带宽,而pcie3.0 x16只有16G每秒,pcie4.0 x16只有32G每秒

On Fri, May 5, 2023 at 1:10 AM Hang Yu @ DigiPen @.***> wrote:

我准备组装一台低成本8卡机器,已经确定不使用NVlink而使用PCIE 3.0 x16. 请问你们的显卡全部工作在pcie x16模式下吗?很多主板只有第一个插槽是x16,第二个可能是x4,这使得显卡间通讯带宽大幅缩小。有没有人能告诉我带宽的影响到底有多大?

8卡单单机的服务器都有专门主办的吧。有钱直接问老板就行

— Reply to this email directly, view it on GitHub https://github.com/THUDM/ChatGLM-6B/issues/595#issuecomment-1535114752, or unsubscribe https://github.com/notifications/unsubscribe-auth/A7PPX6PLY73PXKEN2VEACCDXEPPHTANCNFSM6AAAAAAW5A5ZOM . You are receiving this because you commented.Message ID: @.***>

KegangWangCCNU avatar May 04 '23 17:05 KegangWangCCNU

我用是用的超微,5张3090 24GB ,插了两张NVLINK,我也没觉得有多快。。 image

另外还有一台超微 8卡 P40 24gb,全拿来做推理了。

我当然知道,目前是打算拿下一块超微的主板,双路CPU,每一路包含4个pcie3.0 x16,但是我仍然不确定没有nvlink的情况下带宽瓶颈有多严重。根据经验,多卡训练的主要瓶颈就是带宽(而不是Flops),一般来说nvlink可以提供上百G的带宽,而pcie3.0 x16只有16G每秒,pcie4.0 x16只有32G每秒 On Fri, May 5, 2023 at 1:10 AM Hang Yu @ DigiPen @.> wrote: 我准备组装一台低成本8卡机器,已经确定不使用NVlink而使用PCIE 3.0 x16. 请问你们的显卡全部工作在pcie x16模式下吗?很多主板只有第一个插槽是x16,第二个可能是x4,这使得显卡间通讯带宽大幅缩小。有没有人能告诉我带宽的影响到底有多大? 8卡单单机的服务器都有专门主办的吧。有钱直接问老板就行 — Reply to this email directly, view it on GitHub <#595 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/A7PPX6PLY73PXKEN2VEACCDXEPPHTANCNFSM6AAAAAAW5A5ZOM . You are receiving this because you commented.Message ID: @.>

cywjava avatar May 05 '23 03:05 cywjava

我用是用的超微,5张3090 24GB ,插了两张NVLINK,我也没觉得有多快。。 image

另外还有一台超微 8卡 P40 24gb,全拿来做推理了。

我当然知道,目前是打算拿下一块超微的主板,双路CPU,每一路包含4个pcie3.0 x16,但是我仍然不确定没有nvlink的情况下带宽瓶颈有多严重。根据经验,多卡训练的主要瓶颈就是带宽(而不是Flops),一般来说nvlink可以提供上百G的带宽,而pcie3.0 x16只有16G每秒,pcie4.0 x16只有32G每秒 On Fri, May 5, 2023 at 1:10 AM Hang Yu @ DigiPen @.> wrote: 我准备组装一台低成本8卡机器,已经确定不使用NVlink而使用PCIE 3.0 x16. 请问你们的显卡全部工作在pcie x16模式下吗?很多主板只有第一个插槽是x16,第二个可能是x4,这使得显卡间通讯带宽大幅缩小。有没有人能告诉我带宽的影响到底有多大? 8卡单单机的服务器都有专门主办的吧。有钱直接问老板就行 — Reply to this email directly, view it on GitHub <#595 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/A7PPX6PLY73PXKEN2VEACCDXEPPHTANCNFSM6AAAAAAW5A5ZOM . You are receiving this because you commented.Message ID: _@**.**_>

谢谢,我在云服务器平台上测试了多卡性能,非常堪忧。基本上只有小型模型在非常大的batch size下才可以获得理想的加速,而且显卡越多带宽瓶颈越明显。结论是如果不能保证所有的显卡都具有nvlink连接就不要用多卡训练。但是推理不受影响

KegangWangCCNU avatar May 05 '23 09:05 KegangWangCCNU

遇到了同样的问题,多卡比单卡效率低

顺便想问一下,@XiaTiaoQAQ Ubuntu系统下GPU监控用的是什么软件?

w4o avatar May 05 '23 14:05 w4o

https://github.com/hiyouga/ChatGLM-Efficient-Tuning 使用上述仓库的命令即可,实测每个GPU卡的显存分配大体一致 accelerate config # accelerate launch src/finetune.py 配置参数 无论是多个pcie接口的多卡,还是nvlink,都有加速效果,配置参数很重要!!!

---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2023年05月05日 22:46 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [THUDM/ChatGLM-6B] [BUG/Help] 3090双卡训练比单卡慢出一倍以上 (Issue #595) |

遇到了同样的问题,多卡比单卡效率低

@.*** Ubuntu系统下GPU监控用的是什么软件?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

huliangbing avatar May 05 '23 15:05 huliangbing

@w4o GPU监控最简单是nvidia-smi -l

huliangbing avatar May 05 '23 15:05 huliangbing

@w4o GPU监控最简单是nvidia-smi -l

是的,我现在用的是 nvidia-smi ,但是我想看显存的使用和利用率趋势(随着时间递增),像 @XiaTiaoQAQ 截图中那样,不知道是什么软件。

w4o avatar May 06 '23 02:05 w4o

IMG_20230506_220213.jpg Psensor

huliangbing avatar May 06 '23 14:05 huliangbing

mark

MurrayC7 avatar May 19 '23 09:05 MurrayC7

@w4o 大佬,我遇到了和您一样的问题,请问应该如何解决呢

niuhuluzhihao avatar Jun 16 '23 16:06 niuhuluzhihao

@XiaTiaoQAQ 请问这个问题应该如何解决呢?麻烦指导一下

Is there an existing issue for this?

  • [x] I have searched the existing issues

Current Behavior

相同数据集,脚本上区别是修改了CUDA_VISIBLE_DEVICES=0为CUDA_VISIBLE_DEVICES=0,1。 3090单卡是51.82s/it image 3090双卡是124.55s/it image GPU占用如下 3090单卡GPU100% 显存13G image 3090双卡GPU占用很少时间双卡100% 平均一卡100%另一卡50% 显存占用27G image

Expected Behavior

双卡训练效率提高,显存占用不线性增加

Steps To Reproduce

  1. 相同镜像、相同数据集、只改变卡数量
  2. 修改train.sh中CUDA_VISIBLE_DEVICES
  3. 训练现象如上

Environment

- OS:Ubuntu
- Python:3.8
- Transformers:4.27.1
- PyTorch:1.10.0
- CUDA Support (`python -c "import torch; print(torch.cuda.is_available())"`) :True

Anything else?

No response

niuhuluzhihao avatar Jun 17 '23 08:06 niuhuluzhihao

@huliangbing @XiaTiaoQAQ 除了软件之外,硬件上NVLink实装了吗?3090默认persitence mode没有开启的,开启后才能用NVLink。NVLink开启后,训练速度才会比单卡快

请教一下: 1、nvlink需要桥接器吗?我是4029超微10gpu款服务器,需要另配nvlink桥接器吗? 2、nvlink可以支持多卡(大于2张)吗?

Hkaisense avatar Aug 22 '23 16:08 Hkaisense

我用是用的超微,5张3090 24GB ,插了两张NVLINK,我也没觉得有多快。。

image

另外还有一台超微 8卡 P40 24gb,全拿来做推理了。

我当然知道,目前是打算拿下一块超微的主板,双路CPU,每一路包含4个pcie3.0 x16,但是我仍然不确定没有nvlink的情况下带宽瓶颈有多严重。根据经验,多卡训练的主要瓶颈就是带宽(而不是Flops),一般来说nvlink可以提供上百G的带宽,而pcie3.0 x16只有16G每秒,pcie4.0 x16只有32G每秒

On Fri, May 5, 2023 at 1:10 AM Hang Yu @ DigiPen @.> wrote: 我准备组装一台低成本8卡机器,已经确定不使用NVlink而使用PCIE 3.0 x16. 请问你们的显卡全部工作在pcie x16模式下吗?很多主板只有第一个插槽是x16,第二个可能是x4,这使得显卡间通讯带宽大幅缩小。有没有人能告诉我带宽的影响到底有多大? 8卡单单机的服务器都有专门主办的吧。有钱直接问老板就行 — Reply to this email directly, view it on GitHub <#595 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/A7PPX6PLY73PXKEN2VEACCDXEPPHTANCNFSM6AAAAAAW5A5ZOM . You are receiving this because you commented.Message ID: @.>

同样请教一下: 1、nvlink需要桥接器吗?我是4029超微10gpu款服务器,需要另配nvlink桥接器吗? 2、nvlink可以支持多卡(大于2张)吗?

Hkaisense avatar Aug 22 '23 16:08 Hkaisense