在 Azure MI300X GPU 虚机上运行 DeepSeek-R1

image.png

本文编译自 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 堆栈中的等效产品。

image.png

运行 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 模型。这包括设置机器、安装必要的驱动程序以及执行模型。祝您推理愉快!

参考

扩展阅读:《企业存储技术》文章分类索引更新(微信公众号合集标签)

END

作者:jesselopez
原文:企业存储技术

推荐阅读

欢迎关注企业存储技术极术专栏,欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
5628
内容数
291
关注存储、服务器、图形工作站、AI硬件等方面技术。WeChat:490834312
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息