RASPHINO'S BLOG

在 Arch Linux 下搭建使用 n 卡加速的 PyTorch 炼丹环境

rasphino
Feb 10, 2019
阅读本文需要 6 分钟

Introduction

唉没什么可说的,我们直接进入正题(

在 archlinux 上安装 PyTorch 大概有三种方法:

  • 直接安装官方源的 python-pytorch-cuda
  • 手动安装 nvidia 官方的 cuda 等依赖之后手动安装 pytorch
  • 安装官方源的的 cuda 等依赖之后,手动在虚拟环境中安装使用 cuda 的 pytorch

前两种方法都有一定的缺点:第一种方法虽然最简单,但是会直接把 pytorch 安装到系统中,不能使用虚拟环境;第二种方法是通用安装方法,但是太过于繁琐。

显然,本文要介绍的就是结合前两种方法优点的第三种方法。

前置条件

  • 使用 archlinux
  • 正确安装 nvidia 显卡驱动
  • 双显卡用户使用 nvidia-prime 解决方案

安装

安装 cuda 等相关依赖

sudo pacman -S cuda cudnn nccl opencv

安装 anaconda 并配置虚拟环境

注意:截至本文写作时 anaconda 的最新版本为 2018.12,请查询最新版本号之后下载最新版本

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2018.12-Linux-x86_64.sh
chmod +x Anaconda3-2018.12-Linux-x86_64.sh
bash Anaconda3-2018.12-Linux-x86_64.sh

根据提示安装完成之后,anaconda 会在 .bashrc 中添加一段 init 脚本:

# added by Anaconda3 2018.12 installer
# >>> conda init >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$(CONDA_REPORT_ERRORS=false '/home/rasp/anaconda3/bin/conda' shell.bash hook 2> /dev/null)"
if [ $? -eq 0 ]; then
    \eval "$__conda_setup"
else
    if [ -f "/home/rasp/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/rasp/anaconda3/etc/profile.d/conda.sh"
        CONDA_CHANGEPS1=false conda activate base
    else
        \export PATH="/home/rasp/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda init <<<

它会在 bash 启动时自动加载 anaconda 的一些设置,这可能导致部分 python 程序无法正常运行。如果我们想按需加载这些配置的话,我们可以将这段脚本修改为:

# added by Anaconda3 2018.12 installer
# >>> conda init >>>
# !! Contents within this block are managed by 'conda init' !!
set_conda() {
    __conda_setup="$(CONDA_REPORT_ERRORS=false '/home/rasp/anaconda3/bin/conda' shell.bash hook 2> /dev/null)"
    if [ $? -eq 0 ]; then
        \eval "$__conda_setup"
    else
        if [ -f "/home/rasp/anaconda3/etc/profile.d/conda.sh" ]; then
            . "/home/rasp/anaconda3/etc/profile.d/conda.sh"
            CONDA_CHANGEPS1=false conda activate base
        else
            \export PATH="/home/rasp/anaconda3/bin:$PATH"
        fi
    fi
    unset __conda_setup
}
# <<< conda init <<<

然后在需要使用 anaconda 的时候,只需要执行一次 set_conda 即可。

然后我们新建一个虚拟环境:

conda create -n pytorch python=3.6 anaconda

激活这个虚拟环境:

conda activate pytorch

安装 PyTorch

注意:截至本文写作时 archlinux 官方源的 cuda 版本为 10.0,请查询最新版本号之后访问 pytorch 官网获取安装指令

激活 pytorch 这个虚拟环境之后,运行

conda install pytorch torchvision cudatoolkit=10.0 -c pytorch

静待 conda 解析相关依赖、下载安装完成.

测试

使用 conda 安装并执行 ipython之后,将以下内容复制到 ipython 中执行:

import torch
torch.cuda.is_available()

如果返回 True 则说明正确安装 PyTorch。