跳到主要内容

环境准备

环境依赖​

MUSA SDK 和 MUSA Driver 属于不同层级:

  • MUSA SDK:镜像内的 Toolkits、Runtime 和运行库,供 vLLM、PyTorch 等软件使用。
  • MUSA Driver:安装在宿主机,负责识别 GPU 并向容器提供设备访问能力。

对应关系如下。请根据宿主机上 mthreads-gmi 显示的 Driver Version 选择镜像:

MUSA SDK宿主机 MUSA Driver(mthreads-gmi)PyTorchvLLM镜像
4.3.53.3.52.9.00.24.1registry.mthreads.com/presale/devtech/vllm-mt:d0930
5.2.05.2.02.11.00.29.1registry.mthreads.com/presale/devtech/vllm-mt-0.29-sdk520:d0930

除上述驱动和镜像版本外,宿主机还需要安装以下组件:

组件版本要求
mtml按 MTML 安装指南安装与当前环境兼容的版本
mt-container-toolkit2.2.0

建议将 mt-container-toolkit 升级到 2.2.0。版本过低时,Docker 容器可能无法正确使用 GPU。可从 KUAE Cloud Native Toolkits v2.2.0 下载安装包,并执行:

sudo dpkg -i mt-container-toolkit_2.2.0-1_amd64.deb
cd /usr/bin/musa && sudo ./docker setup "$PWD"

以上为依赖组件推荐版本,安装方式如下:

  1. (推荐)通过 MUSA-Deploy 工具一键安装。
  2. 通过官网下载对应软件包,然后依照文档指示通过软件管理工具(如 dpkg)安装:

环境检测​

基础配置检查​

执行以下命令检查 OS 与 Linux kernel 版本:

lsb_release -a
uname -r

示例输出:

No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.4 LTS
Release: 22.04
Codename: jammy
5.15.0-105-generic

如果版本不符预期,建议更换系统或 Kernel 到推荐版本。

GMI 检查​

执行以下命令确认系统可以识别 S4000 设备,并检查设备状态:

mthreads-gmi

如果命令不存在或无法输出设备信息,请先确认宿主机 MUSA Driver、MTML 和 mt-container-toolkit 是否正确安装。

容器工具配置检查​

在使用 vLLM Docker 镜像前,需要先安装 mtml 和 mt-container-toolkit,并执行以下命令确保 MUSA 相关环境可以被正确映射进容器:

cd /usr/bin/musa
docker setup "$PWD"

IOMMU 配置检查​

内存不小于 256 GB 的 S4000 服务器必须开启 IOMMU。先检查当前状态:

grep -E 'iommu|IOMMU' /proc/cmdline
ls /sys/class/iommu
sudo dmesg | grep -Ei 'DMAR|IOMMU|AMD-Vi'

/sys/class/iommu 下存在设备时,表示 IOMMU 已启用。如果未启用,先在 BIOS 中开启:Intel 平台开启 VT-d,AMD 或海光平台开启 IOMMU/AMD-Vi。然后备份并修改 GRUB:

sudo cp /etc/default/grub /etc/default/grub.bak.$(date +%F)

Intel CPU 执行:

sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="\(.*\)"/GRUB_CMDLINE_LINUX_DEFAULT="\1 intel_iommu=on iommu.passthrough=0"/' /etc/default/grub

AMD 或海光 CPU 将 intel_iommu=on 替换为 amd_iommu=on。确认参数只出现一次后,更新配置并重启:

sudo update-grub
sudo reboot

重启后重新执行本节开头的检查命令。Intel 平台通常能看到 DMAR: IOMMU enabled;AMD 或海光平台通常能看到 AMD-Vi 和 Interrupt remapping enabled。

进程 / 任务数配置检查​

针对全尺寸大参数量模型,比如 DeepSeek模型,如果出现问题 1.6: resource temporarily unavailable 错误,需要检查 systemd 任务数配置:

grep '^DefaultTasksMax=' /etc/systemd/system.conf

如未配置,可编辑 /etc/systemd/system.conf,找到或添加 DefaultTasksMax 参数,并根据需求调整值。例如:

DefaultTasksMax=70%

修改后重载 systemd 配置并重启 Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

如果使用 k8s 启动服务,还需检查 kubelet 配置:

grep '^podPidsLimit:' /var/lib/kubelet/config.yaml

可根据实际需求调大该值,例如:

podPidsLimit: 65535

修改后重启 kubelet:

sudo systemctl restart kubelet

启动容器​

以下示例使用推荐镜像启动容器。请根据实际环境修改模型目录、数据目录、容器名称和镜像标签。

docker run -itd \
--name vllm-musa-s4000 \
--net host \
--privileged \
--pid=host \
-e MTHREADS_VISIBLE_DEVICES=all \
-v /data/llm_models:/data/llm_models \
-v /data:/data \
registry.mthreads.com/presale/devtech/vllm-mt:d0930 \
sleep infinity

如果宿主机 mthreads-gmi 显示 Driver Version 为 5.2.0,将镜像替换为:

registry.mthreads.com/presale/devtech/vllm-mt-0.29-sdk520:d0930

参数说明:

参数说明
docker run -itd以交互终端方式在后台启动容器
--name vllm-musa-s4000指定容器名称,可按需修改
--net host使用宿主机网络,便于服务端口直接对外暴露
--privileged使用特权模式,便于容器访问宿主机设备资源
--pid=host与宿主机共享 PID namespace,便于部分运行时组件识别进程 / 设备状态
-e MTHREADS_VISIBLE_DEVICES=all指定容器内可见的 MUSA 设备;如需限制设备,请按实际设备编号调整
-v /data/llm_models:/data/llm_models挂载宿主机模型目录到容器内,可按需修改
-v /data:/data挂载宿主机数据目录到容器内,可按需修改
registry.mthreads.com/presale/devtech/vllm-mt:d0930MUSA SDK 4.3.5、宿主机 MUSA Driver 3.3.5 对应的 vLLM-MUSA 镜像
sleep infinity保持容器运行,便于后续进入容器启动服务

进入容器环境​

容器启动后,执行以下命令进入容器:

docker exec -it vllm-musa-s4000 /bin/bash

进入容器后,先验证 GPU 运行时和 vLLM 版本:

musaInfo
vllm --version

musaInfo 应显示 MTT S4000 以及与宿主机匹配的驱动和运行时版本。如果结果不正确,先返回宿主机检查驱动、mtml 和 mt-container-toolkit。如果容器内缺少 libmusa.so,可按宿主机上的实际版本执行:

docker cp /usr/lib/x86_64-linux-gnu/libmusa.so.4.3.5 vllm-musa-s4000:/usr/lib/x86_64-linux-gnu/