抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

请忽略文章封面配图的带nvlink的多卡,实际情况是无nvlink,有nvlink的多卡该教程不奏效

本人在2024年第一次使用RTX 4090 + TITAN RTX 双卡训练yolo时出现卡死的情况
(初始化阶段)

经过大量检索找到了解决办法
来源:https://github.com/Megvii-BaseDetection/YOLOX/issues/1289#issuecomment-1409988436

仅允许IP套接字通信

训练前在终端输入:

1
2
3
export NCCL_LL_THRESHOLD=0
export NCCL_P2P_DISABLE=1
export NCCL_IB_DISABLE=1

也可以写入python脚本(使用os,问ai)
NCCL_P2P_DISABLE 变量禁用点对点 (P2P) 传输,该传输使用 NVLink 或 PCI 在 GPU 之间使用 CUDA 直接访问。
NCCL_IB_DISABLE 变量禁用 NCCL 要使用的 IB/RoCE 传输。相反,NCCL 将回退到使用 IP 套接字。

解释
对于分布式训练,子进程始终被初始化dist.init_process_group由TCP 协议控制
因此,仅使用 IP 通信似乎是合理的。

警告
NCCL_LL_THRESHOLD 通常设置为零。
可能会影响模型性能。
https://github.com/NVIDIA/nccl/issues/369#issue-678319427

建议:多卡训练尽量显存相同,同时性能差距尽量小,否则影响速度和训练性能

–>end

如果这帮助了你,可以对提出该解决方法的作者star or follow https://github.com/ZXYFrank
If this helps you, you can star or follow the author who proposed the solution