快速开始
前置条件
- 多张 MT GPU 卡(单节点/多节点)
- 一块或多块 InfiniBand 网卡
- 已安装 MUSA 驱动
- 已安装 MUSA Toolkits 软件包
- 已安装 mtml (容器内部直接安装 mtml 或者通过 host 端映射;若是通过 container-toolkit 方式起的容器,会直接映射进去)
安装 IB 驱动
如果有 IB 网卡,但是 IB 驱动未安装,请先安装 IB 驱动。
验证 IB 是否工作
通过 ibstat 命令查看 IB 端口是否正常工作
$ibstat
CA 'mlx5_0'
CA type: MT4123
Number of ports: 1
Firmware version: 20.31.1014
Hardware version: 0
Node GUID: 0xb83fd203005682a2
System image GUID: 0xb83fd203005682a2
Port 1:
State: Active
Physical state: LinkUp
Rate: 200
Base lid: 12
LMC: 0
SM lid: 5
Capability mask: 0x2651e848
Port GUID: 0xb83fd203005682a2
Link layer: InfiniBand
关注 network port "State" 是否为 "Active","Physical state" 是否为 "LinkUp",检查 network port 物理链路速率 rate 和 link_layer。
- 若是
rate: 200link_layer: InfiniBand,则说明是 200 Gb/s 的 IB 网络; - 若是
rate: 200link_layer: Ethernet,则说明是 200Gb/s 的以太网/RoCE 网络; - 若是
rate: 400link_layer: InfiniBand,则说明是 400Gb/s 原生 InfiniBand 网络。
安装 mpich 或者 openMPI(多机场景安装)
MPI 工具为 MCCL 提供跨节点的进程管理和通信基础,协调不同机器间的初始连接。多机场景下需要安装 MPI 工具。
#以下两种工具二选一安装即可
#1. mpich 工具安装,安装 mpich-4.2.0rc3 版本
wget https://www.mpich.org/static/downloads/4.2.0rc3/mpich-4.2.0rc3.tar.gz
tar -xzf mpich-4.2.0rc3.tar.gz
cd mpich-4.2.0rc3
# 若已经执行过 ./configure ,需要执行 make clean 清除
make clean
./configure --with-device=ch3:sock
make -j64
sudo make install
#验证,mpich 工具默认装在 /usr/local/bin 路径
export PATH=/usr/local/bin:$PATH
mpirun --version
#2. openMPI 工具安装
#查看可用 openmpi 版本
apt list -a openmpi-bin
#安装 openMPI(Ubuntu 22.04 + Linux 5.15.0-105-generic 版本与 AI 部门对齐统一安装 5.0.6 版本,方便问题排查)
wget https://oss.mthreads.com/tmp/torch_musa_build/openmpi-5.0.6.tar.bz2
tar -jxf openmpi-5.0.6.tar.bz2
cd openmpi-5.0.6
./configure --prefix=/usr/local/openmpi --without-hcoll --without-ucx
make -j4 all
make install
#验证,openmpi 工具手动安装统一装在装在 /usr/local/openmpi 路径
export PATH=/usr/local/openmpi/bin/:$PATH
mpirun --version
安装 MCCL
tar -zxvf mccl*.tar.gz
cd mccl && ./install.sh
验证
确认 mccl 安装版本
#确认版本
export LD_LIBRARY_PATH=/usr/local/musa/lib:/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH
/usr/local/musa/bin/mccl_version
#多机 config 文件配置(2节点为例)
#1. mpich 配置文件:hostfile_with_mpich
<node1_ip>:<process_num>
<node2_ip>:<process_num>
#2. openmpi 配置文件:hostfile_with_openmpi
<node1_ip> slots=process_num
<node2_ip> slots=process_num
#功能验证(单机+多机)
export PATH=/usr/local/musa/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/musa/lib:/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH
cd mccl/mccl-test/
#单机验证
./all_reduce_perf -b 1M -e 1024M -f 2 -g 1
#多机验证
cd mccl-test-mpi
#multi cluster verify with openmpi
mpirun --allow-run-as-root --mca btl_tcp_if_include bond0 -hostfile ./hostfile_with_openmpi -x LD_LIBRARY_PATH=/usr/local/musa/lib:/usr/lib/x86_64-linux-gnu/:/usr/local/lib ./all_reduce_perf -b 1M -e 1024M -f 2 -g 1
#multi cluster verify with mpich
mpirun -hostfile ./hostfile_with_mpich -env LD_LIBRARY_PATH=/usr/local/musa/lib:/usr/lib/x86_64-linux-gnu/:/usr/local/lib ./all_reduce_perf -b 1M -e 1024M -f 2 -g 1

