PyTorch快速起步

准备工作

PyTorch Start Locally 提供了一个快速部署安装,通过简单的排列选择就能够获得安装命令(请参考官网)。例如,我在虚拟机 z-k8s-n-1 中通过 IOMMU ( 采用OVMF实现passthrough GPU和NVMe存储 )实现虚拟机内部访问 NVIDIA GPU

对于运行 GPU Kubernetes架构 ,例如我的虚拟机 z-k8s-n-1 是Kubernetes集群中的一个worker节点,则只需要为 容器运行时(Container Runtimes) 安装对应的NVIDIA Container Toolkit( 为containerd安装NVIDIA Container Toolkit为Docker安装NVIDIA Container Toolkit ),这样结合 NVIDIA GPU Operator ( 安装NVIDIA GPU Operator )就能自动在 GPU Kubernetes架构 调度运行支持 NVIDIA CUDA 的容器 pods

备注

这里我的虚拟机 z-k8s-n-1 已经 为containerd安装NVIDIA Container Toolkit ,所以实际虚拟机已经完成了 安装CUDA准备 ,并且配置了 CUDA软件仓库 。这样仅需执行一步CUDA安装,如果你没有如我这样的准备工作,则可能需要补充完成这两个步骤。

不过,对于直接在虚拟机内部进行直接开发(训练/推理),则需要 安装NVIDIA CUDA :

Ubuntu 使用NVIDIA官方软件仓库安装CUDA
sudo apt -y install cuda

警告

这里我实践发现,已经 为containerd安装NVIDIA Container Toolkit 的虚拟机无法 安装NVIDIA CUDA ,会提示冲突:

The following packages have unmet dependencies:
 libnvidia-extra-525 : Conflicts: libnvidia-extra
 libnvidia-extra-530 : Conflicts: libnvidia-extra
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

所以我暂停这个实践测试,改为先构建 NVIDIA Virtual GPU (vGPU) ,将物理 Nvidia Tesla P10 GPU运算卡 拆分成 2 块 vgpu (每个12G显存),然后分别 采用OVMF实现passthrough GPU和NVMe存储 直通到2个虚拟机中进行模拟测试(其中2个vgpu准备通过切换方式用于 容器运行时(Container Runtimes)KVM Atlas 虚拟机),这样就能实现不同的场景。

再次准备工作

在完成 vGPU快速起步 之后,我现在有2个虚拟机分别各配置一块 vGPU。需要注意,PyTorch运行环境非常占用磁盘空间,需要将默认虚拟机磁盘 使用libvirt和XFS在线扩展Ceph RBD设备vda 扩展到 32GB

将虚拟机磁盘扩展(xfs和btrfs)
# 以下命令在Host物理机上运行,扩展虚拟机磁盘
rbd resize --size 32768 y-k8s-n-2
virsh blockresize --domain y-k8s-n-2 --path vda --size 32G
rbd resize --size 51200 y-k8s-n-2.docker
virsh blockresize --domain y-k8s-n-2 --path vdb --size 50G

# 以下命令在虚拟机 y-k8s-n-2 运行,扩展文件系统
#安装growpart
apt install cloud-guest-utils
#扩展分区2
growpart /dev/vda 2
#扩展XFS根分区
xfs_growfs /

#扩展vdb分区1
growpart /dev/vdb 1
#扩展btrfs分区
btrfs filesystem resize max /var/lib/docker

START LOCALLY

备注

测试环境采用 vGPU快速起步 构建的虚拟机内部 vGPU

Ubuntu Linux 22.04 LTS 安装 pip3 以及 venv
apt install python3-pip
apt install python3-venv
  • 创建virtualenv:

venv初始化
cd ~
python3 -m venv venv3
  • 激活:

激活venv
source venv3/bin/activate
  • 安装:

使用 pip3 安装 pytorch
pip3 install torch torchvision torchaudio
  • 验证:

验证torch工作
import torch
x = torch.rand(5, 3)
print(x)

输出类似:

验证torch工作代码运行输出
tensor([[0.2434, 0.6199, 0.1791],
        [0.5107, 0.5054, 0.5134],
        [0.6419, 0.2998, 0.9463],
        [0.4190, 0.5476, 0.8832],
        [0.3318, 0.1395, 0.9307]])

参考