马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
利用分布式训练在RTX40系显卡报错:NotImplementedError: Using RTX 4000 series doesn’t support faster communication broadband via P2P or IB. Please set NCCL_P2P_DISABLE=“1” and NCCL_IB_DISABLE=“1” or use accelerate launch which will do this automatically.
体现 GPU 不支持某些高效的通信模式(P2P 和 InfiniBand)。
解决方案:
第一种:
在运行你的 Python 脚本之前手动设置环境变量来禁用这些通信模式,用命令行设置环境变量:
- export NCCL_P2P_DISABLE=1
- export NCCL_IB_DISABLE=1
复制代码 然后在启动代码
也可以直接加载NCCL_P2P_DISABLE=1 NCCL_IB_DISABLE=1 python xx.py
如果在debug调试可以配置:
- {
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Python",
- "type": "debugpy",
- "request": "launch",
- "program": "${file}",
- "console": "integratedTerminal",
- "env": {
- "CUDA_VISIBLE_DEVICES": "1,2",
- "NPROC_PER_NODE": "2",
- "MASTER_PORT": "29500",
- "NCCL_P2P_DISABLE": "1",
- "NCCL_IB_DISABLE": "1"
- },
- "args": [
- "--rlhf_type", "dpo",
- "--model_type", "qwen2-0_5b-instruct",
- ]
- }
- }
复制代码 第二种:
accelerate launch 可以自动设置这些环境变量。你只必要通过 accelerate 启动命令
例如accelerate launch --multi_gpu --num_processes 2 --num_machines 1 xx.py
或accelerate launch --config_file xx.yaml xx.py
补充: 那么deepspeed启动和torchrun启动和accelerate launch这种分布式框架有啥区别?
1、deepspeed step2.py --deepspeed:直接利用 deepspeed 命令来启动训练脚本会自动处置处罚了许多底层的配置。是微软开辟的一个深度学习优化库,最经典就是ZeRO 优化
2、torchrun --nnodes 1 --nproc_per_node 1 sft.py --deepspeed ds_config.json:是 PyTorch 提供的分布式启动工具,更机动可以直接控制 --nnodes 和 --nproc_per_node,是对 torch.distributed.launch 的改进和替代。并且不仅限于 DeepSpeed,还可以与其他分布式战略如DDP联合。
3、accelerate launch --multi_gpu --num_processes 2 dpo_train.py: Accelerate 是 Hugging Face 提供的一个高级封装工具,它将复杂的分布式训练配置简化为一个配置文件(或命令行选项),用户无需深入了解底层实现即可轻松启动分布式训练使命
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |