本文编译自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
-n
az vm create --name mi300x --resource-group
--location
--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
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
--name
mi300x
az vm generalize --resource-group
--name
mi300x
3.
创建共享图库并保存自定义镜像:
az sig create --resource-group
--gallery-name
mi300xImages
VMID=$(az vm get-instance-view -g
-n mi300x
--query id -o tsv)
az sig image-definition create --resource-group
--gallery-name mi300xImages --gallery-image-definition Ubuntu-2204-ROCm
--publisher
--offer ubuntu2204 --sku ROCm --os-type
Linux --hyper-v-generation v2 --features
SecurityType
=Standard
az sig image-version create --resource-group
--gallery-name mi300xImages --gallery-image-definition Ubuntu-2204-ROCm
--gallery-image-version 1.0.0 --target-regions
--replica-count 1
--virtual-machine
${VMID}
4.
删除虚拟机及相关资源:
az vm delete --yes --resource-group
--name
mi300x
az network nic delete --resource-group
--name
mi300xNIC
az network public-ip delete --resource-group
--name mi300xPIP
5.
检索创建新虚拟机时所需的虚拟机映像资源
ID
:
az image show --resource-group
--name Ubuntu-2204-ROCm
--query
id
--output tsv
6.
从自定义映像创建新的虚拟机:
az vm create --name
--resource-group
--location
--image
--size
Standard_ND96isr_MI300X_v5 --security-type Standard --os-disk-size-gb
256
--admin-username
--ssh-key-values
其他准备
除了配置虚拟机之外,还有其他步骤来准备环境以最佳地运行
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