编译和安装

操作步骤

  1. 使用PuTTY工具,以root用户登录服务器。
  2. 执行以下命令安装Docker toolkit。

    distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
    yum-config-manager --add-repo https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo
    dnf clean expire-cache --refresh
    dnf install -y nvidia-docker2
    systemctl restart docker

  3. 执行以下命令获取基础镜像。

    docker pull nvidia/cuda-arm64:11.1-devel-centos8

  4. 执行以下命令运行Docker。

    docker run -it nvidia/cuda-arm64:11.1-devel-centos8 /bin/bash

  5. 执行以下命令修改“/etc/yum.repos.d/nvidia-ml.repo”文件。

    1. 打开“/etc/yum.repos.d/nvidia-ml.repo”文件。
      vi /etc/yum.repos.d/nvidia-ml.repo
    2. 按“i”进入编辑模式,添加如下粗体内容。
      [nvidia-ml]
      name=nvidia-ml
      baseurl=https://developer.download.nvidia.com/compute/machine-learning/repos/rhel8/sbsa
      enabled=1
      gpgcheck=1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA
      sslverify=false
    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  6. 执行以下命令修改“/etc/yum.repos.d/cuda.repo”文件。

    1. 打开“/etc/yum.repos.d/cuda.repo”文件。
      vi /etc/yum.repos.d/cuda.repo
    2. 按“i”进入编辑模式,添加如下粗体内容。
      [cuda]
      name=cuda
      baseurl=https://developer.download.nvidia.com/compute/cuda/repos/rhel8/sbsa
      enabled=1
      gpgcheck=1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA
      sslverify=false
    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  7. 执行以下命令刷新Yum源缓存。

    yum makecache

  8. 执行以下命令安装系统依赖。

    yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel python3 python3-devel gcc wget cmake3 libarchive git which

  9. 执行以下命令下载并安装Cudnn8。

    wget https://developer.download.nvidia.cn/compute/machine-learning/repos/rhel8/sbsa/libcudnn8-8.0.4.30-1.cuda11.1.aarch64.rpm --no-check-certificate
    rpm -ivh libcudnn8-8.0.4.30-1.cuda11.1.aarch64.rpm
    wget https://developer.download.nvidia.cn/compute/machine-learning/repos/rhel8/sbsa/libcudnn8-devel-8.0.4.30-1.cuda11.1.aarch64.rpm --no-check-certificate
    rpm –ivh libcudnn8-devel-8.0.4.30-1.cuda11.1.aarch64.rpm

  10. 执行以下命令部署Anaconda。

    执行./Anaconda3-2021.05-Linux-aarch64.sh时,需手动输入“Enter”和“yes”,默认部署在“/root/anaconda3”目录。

    wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-aarch64.sh
    chmod +x Anaconda3-2021.05-Linux-aarch64.sh
    ./Anaconda3-2021.05-Linux-aarch64.sh
    export PATH=/root/anaconda3/bin/:$PATH

  11. 执行以下命令安装PyTorch编译依赖。

    conda install astunparse numpy ninja pyyaml setuptools cmake cffi typing_extensions future six requests dataclasses

    (可选)conda代理配置方法如下:

    cat > /root/.condarcexport PATH=/root/anaconda3/bin:$PATH
    channels:
      - conda-forge
      - defaults
    proxy_servers:
      http: xxxxxx
      https: xxxxxx
    ssl_verify: false

  12. 执行以下命令配置环境变量。

    export PATH=/root/anaconda3/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda/lib64

  13. 执行以下命令下载并编译PyTorch源码。

    export GIT_SSL_NO_VERIFY=1
    git clone --recursive https://github.com/pytorch/pytorch  --depth=1
    cd pytorch
    git submodule sync
    git submodule update --init --recursive --jobs 0
    export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
    python setup.py install

  14. 执行以下命令新建另一个终端Shell导出容器。

    docker ps

    PyTorch源码等大文件移到容器外后删除再导出镜像。

    1. 备份源码。
      docker cp 4ad81495b7ef:/pytorch .
    2. 删除容器内PyTorch源码。
      rm -rf pytorch/
      rm -rf Anaconda3-2021.05-Linux-aarch64.sh
      rm -f libcudnn8-8.0.4.30-1.cuda11.1.aarch64.rp
      rm -f libcudnn8-devel-8.0.4.30-1.cuda11.1.aarch64.rpm
    3. 导出镜像。
      docker export -o pytorch_cuda.tar 4ad81495b7ef