.. _pytorch_startup:
====================
PyTorch快速起步
====================
准备工作
=========
`PyTorch Start Locally `_ 提供了一个快速部署安装,通过简单的排列选择就能够获得安装命令(请参考官网)。例如,我在虚拟机 ``z-k8s-n-1`` 中通过 :ref:`iommu` ( :ref:`ovmf_gpu_nvme` )实现虚拟机内部访问 :ref:`nvidia_gpu`
对于运行 :ref:`gpu_k8s_arch` ,例如我的虚拟机 ``z-k8s-n-1`` 是Kubernetes集群中的一个worker节点,则只需要为 :ref:`container_runtimes` 安装对应的NVIDIA Container Toolkit( :ref:`install_nvidia_container_toolkit_for_containerd` 或 :ref:`install_nvidia_container_toolkit_for_docker` ),这样结合 :ref:`nvidia_gpu_operator` ( :ref:`install_nvidia_gpu_operator` )就能自动在 :ref:`gpu_k8s_arch` 调度运行支持 :ref:`cuda` 的容器 ``pods`` 。
.. note::
这里我的虚拟机 ``z-k8s-n-1`` 已经 :ref:`install_nvidia_container_toolkit_for_containerd` ,所以实际虚拟机已经完成了 :ref:`install_cuda_prepare` ,并且配置了 :ref:`cuda_repo` 。这样仅需执行一步CUDA安装,如果你没有如我这样的准备工作,则可能需要补充完成这两个步骤。
不过,对于直接在虚拟机内部进行直接开发(训练/推理),则需要 :ref:`install_nvidia_cuda` :
.. literalinclude:: ../../machine_learning/cuda/install_nvidia_cuda/cuda_toolkit_ubuntu_repo_install
:language: bash
:caption: Ubuntu 使用NVIDIA官方软件仓库安装CUDA
.. warning::
这里我实践发现,已经 :ref:`install_nvidia_container_toolkit_for_containerd` 的虚拟机无法 :ref:`install_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.
所以我暂停这个实践测试,改为先构建 :ref:`vgpu` ,将物理 :ref:`tesla_p10` 拆分成 2 块 vgpu (每个12G显存),然后分别 :ref:`ovmf_gpu_nvme` 直通到2个虚拟机中进行模拟测试(其中2个vgpu准备通过切换方式用于 :ref:`container_runtimes` 和 :ref:`kvm` 虚拟机),这样就能实现不同的场景。
再次准备工作
==============
在完成 :ref:`vgpu_quickstart` 之后,我现在有2个虚拟机分别各配置一块 vGPU。需要注意,PyTorch运行环境非常占用磁盘空间,需要将默认虚拟机磁盘 :ref:`ceph_extend_rbd_drive_with_libvirt_xfs` 将 ``vda`` 扩展到 ``32GB``
.. literalinclude:: pytorch_startup/rbd_resize
:caption: 将虚拟机磁盘扩展(xfs和btrfs)
START LOCALLY
=================
.. note::
测试环境采用 :ref:`vgpu_quickstart` 构建的虚拟机内部 vGPU
- 安装 python3 / pip3 ( 采用 :ref:`virtualenv` ):
.. literalinclude:: ../../python/startup/virtualenv/apt_install_pip3_venv
:language: bash
:caption: 在 :ref:`ubuntu_linux` 22.04 LTS 安装 ``pip3`` 以及 ``venv``
- 创建virtualenv:
.. literalinclude:: ../../python/startup/virtualenv/venv
:language: bash
:caption: venv初始化
- 激活:
.. literalinclude:: ../../python/startup/virtualenv/venv_active
:language: bash
:caption: 激活venv
- 安装:
.. literalinclude:: pytorch_startup/pip3_install_pytorch
:caption: 使用 ``pip3`` 安装 pytorch
- 验证:
.. literalinclude:: pytorch_startup/verify_pytorch.py
:language: python
:caption: 验证torch工作
输出类似:
.. literalinclude:: pytorch_startup/verify_pytorch_output
:language: python
:caption: 验证torch工作代码运行输出
参考
======
- `PyTorch Start Locally `_