训练平台多机多卡实验(二) #102
Labels
No Label
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: HswOAuth/llm_course#102
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
本来第二章其实想写 本地物理机多机多卡互联实验,但苦于实在是没有那么多的设备,遂止,直接上训练平台做多机多卡实验了。
1.算法拷贝
实验主要是体验一下在训练平台上部署和训练的过程,我们不会自己写算法,就直接从平台上拷贝就好。
2.创建shell管理模型
平台的shell叫NoteBook,在这里可以管理我们使用的算法、镜像和选择需要使用的数据集。这里按我这么选择就好。
同样的notebook我们创造三个,每个是4卡,正好就是三机12卡来进行实验。
3.环境配置
export http_proxy=http://10.10.9.50:3000
export https_proxy=http://10.10.9.50:3000
以上是HTTP与HTTPS的代理设置,配置了HTTP与HTTPS的请求将会通过代理服务器http://10.10.9.50:3000来进行。
export no_proxy=localhost,127.0.0.1
这个变量设置了本地地址(localhost)绕过代理,即这些地址的请求不使用代理。
export HF_HOME=/code/huggingface-cache
HF_HOME设置了Hugging Face的缓存路径, 模型和数据会被缓存在该目录下,避免重复下载。
export HF_ENDPOINT=https://hf-mirror.com
HF_ENDPOINT指定 Hugging Face 的镜像地址。
export NCCL_DEBUG=INFO # 启用 NCCL 的调试信息输出,用于诊断通信问题
export NCCL_IB_DISABLE=0 # 启用 InfiniBand(用于高速网络通信)
export NCCL_IB_HCA=mlx5 # 指定 InfiniBand 的 HCA(Host Channel Adapter),
mlx5
是一种 Mellanox 网卡,常用于高性能计算集群。export NCCL_SOCKET_IFNAME=eth0 # 指定网络接口名称为
eth0
,这通常是默认的以太网接口,用于 NCCL 通信。以上是对NCCL (NVIDIA Collective Communications Library) 环境变量。这是一个搞笑的分布式通信库,主要用于多GPU或多机器间的并行训练。
export GLOO_SOCKET_IFNAME=eth0
Gloo 是另一种分布式训练库,适用于 CPU 和 GPU 的训练。
GLOO_SOCKET_IFNAME=eth0
表示 Gloo 通过网络接口eth0
进行通信。注意三台机器都要进行这样的设置。
4.启动训练
启动训练前需要设置一台主机作为master结点,将其ip进行设置。每个主机的ip可以通过ifconfig命令进行查看。
三台主机分别设置为节点0,1,2。可以通过NODE_RANK进行设置。
NPROC_PER_NODE=4 NNODES=3 PORT=12345 ADDR=10.244.55.43 NODE_RANK=0 xtuner train code/qwen1_5_1_8b_qlora_alpaca_e3_copy.py --work-dir /userhome/xtuner-workdir --deepspeed deepspeed_zero3
NPROC_PER_NODE=4 NNODES=3 PORT=12345 ADDR=10.244.55.43 NODE_RANK=1 xtuner train code/qwen1_5_1_8b_qlora_alpaca_e3_copy.py --work-dir /userhome/xtuner-workdir --deepspeed deepspeed_zero3
NPROC_PER_NODE=4 NNODES=3 PORT=12345 ADDR=10.244.55.43 NODE_RANK=2 xtuner train code/qwen1_5_1_8b_qlora_alpaca_e3_copy.py --work-dir /userhome/xtuner-workdir --deepspeed deepspeed_zero3
参数解释:
NODE_RANK=0
是主节点,NODE_RANK=1
和NODE_RANK=2
是其他参与的工作节点。code
目录下。所有节点都运行同一个训练脚本。zero3
(Zero Redundancy Optimizer Stage 3)技术,用于减少显存占用,优化大模型训练。三机十二卡运行实在是快,分分钟就跑出来了。最终运行结果如图所示。