Skip to main content

快速开始

前置条件

  • 多张 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: 200 link_layer: InfiniBand,则说明是 200 Gb/s 的 IB 网络;
  • 若是 rate: 200 link_layer: Ethernet,则说明是 200Gb/s 的以太网/RoCE 网络;
  • 若是 rate: 400 link_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