本文编译自 Azure High Performance Computing (HPC) Blog,原文标题《Running DeepSeek-R1 on a single NDv5 MI300X VM》。
贡献者:Davide Vanzo、Yuval Mazor、Jesse Lopez
DeepSeek-R1 是基于 DeepSeek-V3 构建的开放权重推理模型,专为对话式 AI、编码和复杂问题解决而设计。由于其强大的推理能力,它在 AI/ML 社区之外获得了极大关注,经常与 OpenAI 的模型相媲美。它的一个主要优势是它可以在本地运行,让用户完全控制自己的数据。
NDv5 MI300X VM 配备 8 个 AMD Instinct MI300X GPU,每个 GPU 配备 192GB HBM3 并通过 Infinity Fabric 3.0 互连。MI300X 每个 GPU 的内存带宽高达 5.2 TB/s,可提供高效处理大型模型所需的容量和速度 - 使用户能够在单个 VM 上以全精度运行 DeepSeek-R1。
在这篇博文中,我们将引导您完成在 Azure 上配置 NDv5 MI300X 实例并使用 SGLang 推理框架运行 DeepSeek-R1 进行推理的步骤。
启动 NDv5 MI300X VM
先决条件
- - 检查您的订阅是否为 VM 系列“ StandardNDI Sv 5MI300X”提供了足够的 vCPU 配额(请参阅配额文档)。
- - 如果需要,请联系你的 Microsoft 客户代表以请求增加配额。
- - 安装了 Azure CLI 并登录到相应租户的 Bash 终端。或者,也可以使用 Azure Cloud Shell 。
配置虚拟机
1.使用 Azure CLI 在 ND_MI300x_v5 上创建 Ubuntu-22.04 VM:
az group create –location <REGION> -n <RESOURCE_GROUP_NAME>
az vm create --name mi300x --resource-group <RESOURCE_GROUP_NAME> --location <REGION> --image Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:22.04.202410020 --size Standard_ND96isr_MI300X_v5 --security-type Standard --os-disk-size-gb 256 --os-disk-delete-option Delete --admin-username azureadmin --ssh-key-values <PUBLIC_SSH_PATH>
2.通过 SSH 登录虚拟机并将内核降级到版本 5.15.0:
sudo apt install -y linux-image-5.15.0-1073-azure linux-modules-5.15.0-1073-azure linux-headers-5.15.0-1073-azure linux-tools-5.15.0-1073-azure
sudo sed -i "s|GRUB_DEFAULT=.*|GRUB_DEFAULT='gnulinux-advanced-0b58668a-ba2e-4a00-b89a-3354b7a547d4>gnulinux-5.15.0-1073-azure-advanced-0b58668a-ba2e-4a00-b89a-3354b7a547d4'|g" /etc/default/grub
sudo update-grub
删除当前内核包。当系统询问是否中止内核删除时,请确保回答“否” :
sudo apt remove -y linux-azure-6.5-cloud-tools-6.5.0-1025 linux-azure-6.5-headers-6.5.0-1025 linux-azure-6.5-tools-6.5.0-1025 linux-cloud-tools-6.5.0-1025-azure linux-headers-6.5.0-1025-azure linux-image-6.5.0-1025-azure linux-modules-6.5.0-1025-azure linux-tools-6.5.0-1025-azure
sudo reboot
重启后,确认使用的内核是 5.15.0 版本:
uname -r
3.安装所需的驱动程序和软件:
git clone --branch mi300x https://github.com/vanzod/azhpc-images.git
cd azhpc-images/ubuntu/ubuntu-22.x/ubuntu-22.04-hpc
sudo ./install.sh AMD
创建自定义 VM 映像(可选)
为了在未来部署虚拟机时具有更大的灵活性,我们建议创建自定义虚拟机映像。这样,映像将包含所有必需的组件,而无需在每次部署新虚拟机时安装它们。
1. 将虚拟机通用化以创建映像:
sudo rm -f ~/.bash_history
sudo waagent -force -deprovision+user
2.使用 Azure CLI 解除分配并将 VM 标记为通用:
az vm deallocate --resource-group <RESOURCE_GROUP_NAME> --name mi300x
az vm generalize --resource-group <RESOURCE_GROUP_NAME> --name mi300x
3.创建共享图库并保存自定义镜像:
az sig create --resource-group <RESOURCE_GROUP_NAME> --gallery-name mi300xImages
VMID=$(az vm get-instance-view -g <RESOURCE_GROUP_NAME> -n mi300x --query id -o tsv)
az sig image-definition create --resource-group <RESOURCE_GROUP_NAME> --gallery-name mi300xImages --gallery-image-definition Ubuntu-2204-ROCm --publisher <PUBLISHER_NAME> --offer ubuntu2204 --sku ROCm --os-type Linux --hyper-v-generation v2 --features SecurityType=Standard
az sig image-version create --resource-group <RESOURCE_GROUP_NAME> --gallery-name mi300xImages --gallery-image-definition Ubuntu-2204-ROCm --gallery-image-version 1.0.0 --target-regions <REGION> --replica-count 1 --virtual-machine ${VMID}
4.删除虚拟机及相关资源:
az vm delete --yes --resource-group <RESOURCE_GROUP_NAME> --name mi300x
az network nic delete --resource-group <RESOURCE_GROUP_NAME> --name mi300xNIC
az network public-ip delete --resource-group <RESOURCE_GROUP_NAME> --name mi300xPIP
5. 检索创建新虚拟机时所需的虚拟机映像资源 ID:
az image show --resource-group <RESOURCE_GROUP_NAME> --name Ubuntu-2204-ROCm --query id --output tsv
6. 从自定义映像创建新的虚拟机:
az vm create --name <VM_NAME> --resource-group <RESOURCE_GROUP_NAME> --location <REGION> --image <CUSTOM_IMAGE_RESOURCE_ID> --size Standard_ND96isr_MI300X_v5 --security-type Standard --os-disk-size-gb 256 --admin-username <USERNAME> --ssh-key-values <PUBLIC_SSH_PATH>
其他准备
除了配置虚拟机之外,还有其他步骤来准备环境以最佳地运行 DeepSeed 或其他 AI 工作负载,包括在 RAID-0 配置中在节点上设置 8 个 NVMe 磁盘,作为 Docker 和 Hugging Face 的缓存位置。
以下步骤假设您已连接到 VM 并在 Bash shell 中工作。
1. 在 RAID-0 配置中准备 NVMe 磁盘
mkdir -p /mnt/resource_nvme/
sudo mdadm --create /dev/md128 -f --run --level 0 --raid-devices 8 $(ls /dev/nvme*n1)
sudo mkfs.xfs -f /dev/md128
sudo mount /dev/md128 /mnt/resource_nvme
sudo chmod 1777 /mnt/resource_nvme
2. 配置 Hugging Face 使用 RAID-0。此环境变量还应传播到从 Hugging Face 提取图像或数据的任何容器。
mkdir –p /mnt/resource_nvme/hf_cache
export HF_HOME=/mnt/resource_nvme/hf_cache
3.配置 Docker 使用 RAID-0
mkdir -p /mnt/resource_nvme/docker
sudo tee /etc/docker/daemon.json > /dev/null <<EOF
{
"data-root": "/mnt/resource_nvme/docker"
}
EOF
sudo chmod 0644 /etc/docker/daemon.json
sudo systemctl restart docker
使用 *MI300X
如果您熟悉 Nvidia 和 CUDA 工具和环境,AMD 提供了 ROCm 堆栈中的等效产品。
运行 DeepSeek-R1
1. 拉取容器镜像。它大约有 20 GB,因此可能需要几分钟才能下载。
docker pull lmsysorg/sglang:v0.4.2-rocm620
2. 启动 SGLang 服务器。首次启动时会下载模型(~ 642 GB),下载至少需要几分钟。一旦应用程序输出“服务器已启动并准备就绪!”,您就可以开始对模型进行查询。
docker run \
--device=/dev/kfd \
--device=/dev/dri \
--security-opt seccomp=unconfined \
--cap-add=SYS_PTRACE \
--group-add video \
--privileged \
--shm-size 32g \
--ipc=host \
-p 30000:30000 \
-v /mnt/resource_nvme:/mnt/resource_nvme \
-e HF_HOME=/mnt/resource_nvme/hf_cache \
-e HSA_NO_SCRATCH_RECLAIM=1 \
lmsysorg/sglang:v0.4.2-rocm620 \
python3 -m sglang.launch_server --model deepseek-ai/DeepSeek-R1 --tp 8 trust-remote-code --host 0.0.0.0
3. 您现在可以对 DeepSeek-R1 进行查询。例如,来自同一主机上的另一个 shell 对模型的这些请求提供了模型数据并将生成示例响应。
curl http://localhost:30000/get_model_info
{"model_path":"deepseek-ai/DeepSeek-R1","tokenizer_path":"deepseek-ai/DeepSeek-R1","is_generation":true}
curl http://localhost:30000/generate -H "Content-Type: application/json" -d '{ "text": "Once upon a time,", "sampling_params": { "max_new_tokens": 16, "temperature": 0.6 } }'
结论
在这篇文章中,我们详细介绍了如何在单个 Azure NDv5 MI300X 实例上运行全尺寸 671B DeepSeek-R1 模型。这包括设置机器、安装必要的驱动程序以及执行模型。祝您推理愉快!
参考
- https://github.com/deepseek-a...
- https://github.com/deepseek-a...
- https://www.amd.com/en/develo...
- https://techcommunity.microso...
- https://docs.sglang.ai/index....
扩展阅读:《企业存储技术》文章分类索引更新(微信公众号合集标签)
END
作者:jesselopez
原文:企业存储技术
推荐阅读
- AI 时代的高端文件存储系统:IBM、DDN、Weka 和 VAST
- 一次无需调优的测试:SMT多线程对存储服务器IOPS的贡献
- zStorage 分布式存储系统的性能分析方法
- MLPerf Llama大模型推理测试:一款GPU独战NVIDIA群雄
欢迎关注企业存储技术极术专栏,欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。