pytorch 源码编译安装

pytorch 源码编译安装

  • 介绍
  • 前提准备
    • 创建虚拟环境
    • 虚拟环境中安装相关包
    • 下载源码
  • pytorch 源码编译
  • 结论

介绍

本文主要介绍pytorch的源码编译,如要使用GPU,需确保设备已经安装 显卡驱动 以及CUDA

源码编译安装 pytorch=1.10.2(github官网,github镜像)

【本文环境】

系统:Ubuntu 14.04
NVIDIA_SMI:460.106.00
CUDA Version:11.2
Anaconda 版本: 4.12.0

前提准备

创建虚拟环境

conda create -n py38 python=3.8 -y
# 激活虚拟环境
conda activate py38
# 创建虚拟环境的 python 版本为 3.8.13

虚拟环境中安装相关包

虚拟环境中安装相关包(安装官网对应版本要求装即可),默认是最新版本,如果想安装其它版本可以点击【main】→【Tags】然后搜索对应版本(本文以v1.10.2-rc1为例),往下滑找到【From Source】即可进入安装教程。

pytorch 源码编译安装_第1张图片

# setuptools 最好指定版本否则容易出错,本文正常编译版本为 46.0.0
conda install astunparse numpy ninja pyyaml mkl mkl-include setuptools=46.0.0 cmake cffi typing_extensions future six requests dataclasses

# 如果需要使用GPU的话,magma-cuda112 要对应你的CUDA版本,这里对应的是CUDA版本为 11.2
conda install -c pytorch magma-cuda112  
# 其他版本可通过 https://anaconda.org/pytorch/repo 下载,一般就是修改上面对应的数字即可,如安装CUDA10.2,即为 conda install -c pytorch magma-cuda102

# 安装 gcc 与 g++,本文安装的版本是 7.3
# https://anaconda.org/ehmoussi/gcc_impl_linux-64
conda install -c ehmoussi gcc_impl_linux-64 gxx_impl_linux-64

下载源码

git clone --recursive https://github.com/pytorch/pytorch

cd pytorch
# 如果想安装特定版本,如 v1.10.2-rc1
# git checkout v1.10.2-rc1
# 版本可通过 输入git tag 或 网站上看(上图所示)
git submodule sync
git submodule update --init --recursive

# 正常情况下上面步骤就能下载对应源码,如果网络不行可以试着通过镜像地址 或 gitee 克隆
# 如 git clone --recursive https://hub.yzuu.cf/pytorch/pytorch
# 如 git clone --recursive https://gitee.com/ascend/pytorch.git
# 通过镜像下载后在 git submodule update --init --recursive 其它第三方库还是去 github.com 下载导致失败时,可找到对应路径下的 【.gitmodules】文件,并修改里面的 github.com 地址为可用地址即可,如将 github.com 全部替换为 hub.yzuu.cf

# 还有一种更简单快速的下载方式就是 去 [AutoDL](https://www.autodl.com/home) 租一台服务器,运行后先关机,再以【无卡模式运行】(具体操作为【容器实例】中【操作】下面【更多】→【无卡模式开机】),主要是为了省钱,启动后,通过 AutoDL 主页的【帮助文本】找到【学术资源加速】复制命令【source /etc/network_turbo】到服务器上执行即可

# 如果 遇到 third_party/lss 无法下载,可通过下载对应模块放到该路径下,或者设置git代理进行下载

# git 代理设置,前提是你有代理
# git config --global http.proxy "localhost:端口号"
# git config --global https.proxy "localhost:端口号"
# 代理设置好,下载完后,就可以取消了,否则可能影响你其他操作
# 取消代理 
# git config --global --unset http.proxy 
# git config --global --unset https.proxy

lss 文件(此lss文件是 编译v1.10.2-rc1所用到的,如版本不对自己下载对应版本)
链接:https://pan.baidu.com/s/1NxApJZeETyVsDzNGU2ACQA
提取码:weij

pytorch 源码编译

# 想了解一些编译参数的作用,可在 setup.py 文件中查看
# 一定要设置 MAX_JOBS,否则编译的时候 CPU 容易100%,导致经常出错,具体值根据自己CPU设置
export MAX_JOBS=4

# 默认自动检测当前设备GPU架构,然后设置,如果想自己指定可通过TORCH_CUDA_ARCH_LIST设置,最好还是自己指定,防止有些GPU在编译时没有检测到,如 3.5 对应的是比较老的设备了如k40m,6.1 →1080Ti,7.5→2080Ti,3090→8.6 根据自己设备进行设置
# export TORCH_CUDA_ARCH_LIST="3.5;6.1;7.5"

# 指定已经安装好的 CUDA 路径
export CUDA_HOME=/usr/local/cuda-11.2

# 指定gcc、g++编译器
export CC=【你创建的虚拟环境路径】/bin/x86_64-conda_cos6-linux-gnu-gcc
export CXX=【你创建的虚拟环境路径】/bin/x86_64-conda_cos6-linux-gnu-g++

export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
# 直接安装
python setup.py install
# 或者 编译成 whl安装文件,编译成功后在dist文件下面,可通过 pip install torch-xxxx.whl 安装
python setup.py bdist_wheel

# 需要重新编译,如编译其它版本 先 python setup.py clean,再重头开始

结论

1)setuptools 版本不能过高,否则容易出错,本文版本为 46.0.0
2)gcc 与 g++ 版本也可能导致编译失败,如果是使用conda虚拟环境的 gcc 与 g++,可通过设置环境变量 CC 与 CXX 指定
3)MAX_JOBS 最好不要设置太大,否则编译到一半总是容易中断,出现类似 c++ 什么的报错
4)要指定torch支持的架构(即 显卡),可通过 设置 TORCH_CUDA_ARCH_LIST 指定

你可能感兴趣的:(pytorch,人工智能,python,机器学习,深度学习)