DeepSpeed在docker容器内实现多机多卡

文章介绍了如何在多台Docker宿主机上配置overlay网络,通过Dockerswarm创建集群,然后建立attachable的overlay网络,使得不同主机上的容器可以相互通信。在启动容器时指定网络,并提到了在使用deepspeed时需注意NCCL的配置,特别是指定通讯网卡为eth0。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多台docker宿主机网络配置

https://docs.docker.com/network/overlay/
这里需要创建overlay网络是多台宿主机的容器可以通过网络连接

创建集群

docker swarm init

另一台机器加入集群

docker swarm join --token SWMTKN-1-1nnq6klpq7z93lqmshd4rqvk44x1qyyen4wacuei1t46wnvm3r-80qzsy8qfdke7hgex7n5x2c37 172.17.0.5:2377

在集群里创建一个my-attachable-overlay的虚拟网络

docker network create -d overlay --attachable my-attachable-overlay

启动容器时使用创建的网络

docker run -it --gpus=all --ipc=host --net=my-attachable-overlay --name ydq_chatglm_env -v /data3:/data3 chatglm:v0.3 /bin/bash

以该网络创建的容器间可以直接通讯
两边容器都启动后

#分别查看机器分配到的IP
ifcofig

deepspeed的配置

按照官网设置

#需要注意NCCL的配置,这里需要根据机器的情况指定NCCL的通讯网卡
NCCL_SOCKET_IFNAME=eth0
### 使用 llama-factory 进行单训练 对于希望利用 llama-factory 执行单训练的用户来说,理解其基于 Docker 的架构以及具体的命令集至关重要。通过这些工具可以有效地管理和分配计算资源给个 GPU。 启动训练之前,确保已经安装并配置好 Docker 和 nvidia-docker 支持[^2]。这一步骤是必要的,因为 llama-factory 利用了容器化技术来简化环境设置过程,并保证不同硬件间的兼容性。 执行训练的具体指令如下所示: ```bash llamafactory-cli train \ --gpus 0,1,2,3 \ # 指定使用的GPU编号 --distributed \ # 启用分布式模式 examples/train_lora/multi_gpu_training.yaml ``` 上述命令中的 `examples/train_lora/multi_gpu_training.yaml` 文件包含了用于指导训练流程的各项参数设定。此文件需根据实际需求调整优化器选项、学习率以及其他超参配置[^1]。 为了进一步提高效率,在 YAML 配置文件内还可以指定数据加载方式和其他加速策略。例如启用混合精度训练以减少内存占用和加快运算速度;或是采用 DeepSpeed实现更高效的通信制和支持更大的批量处理能力。 完成训练之后,可以通过类似的命令来进行推理测试或导出最终模型权重: ```bash llamafactory-cli chat examples/inference/multi_gpu_inference.yaml llamafactory-cli export examples/merge_lora/final_model_export.yaml ``` 以上操作均应在同一台器上拥有足够数量显的情况下运行,从而充分利用本地资源提升性能表现。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值