非 congda 环境 ubuntu 22.04 源码编译安装 pytorch 并初步检查可用性

非 congda 环境 编译安装 pytorch

0, 安装 cuda sdk ,cudnn 及 nccl

按照官网步骤,blacklist需要特别注意

0.1 cuda sdk

0.2 cudnn

0.3 安装nccl

git clone --recursive https://github.com/NVIDIA/nccl.git
ls
cd nccl/
make -j src.build
sudo apt install build-essential devscripts debhelper fakeroot
make pkg.debian.build
sudo dpkg -i  build/pkg/deb/libnccl2_2.22.3-1+cuda12.3_amd64.deb 
sudo dpkg -i  build/pkg/deb/libnccl-dev_2.22.3-1+cuda12.3_amd64.deb

注:

cudnn 9.x不需要登陆开发者账户即可 wget 下载,按照官网 类似 cuda sdk 安装方法,wget到如下两个文件:

验证cuda ,这台是个笔记本:

验证cudnn的可用性:
 

cp -r /usr/src/cudnn_samples_v9/  ./tmp/

cd tm/cudnn_samples_v9/

mkdir build

cd build

cmake ..

执行 multiHead...测试:

如果编译上面的示例时,提示找不到 cudnn,这注释掉 top 的 CMakelists.txt 的这一行:

1, 下载 pytorch 源代码

git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
# if you are updating an existing checkout
git submodule sync
git submodule update --init --recursive

选定好 源码分支之后,安装 ci依赖:

workspace/pytorch$
$ pip install -r .ci/docker/requirements-ci.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

如果遇到版本冲突,则首选删除以前安装过的 模块: 当时使用 pip install 安装的模块,可以类似这样删除:

pip uninstall numpy

sudo pip install ...的模块,则类似:

sudo pip uninstall numpy

这步最好在编译pytorch 之间就执行,因为会依赖这其中某些包。编译安装 pytorch 之后再改动 模块版本,会带来不兼容或找不到等问题。


2, 安装cmake 3.30

 新的pytorch 需要依赖3.27及其以上 cmake


$ sudo apt install libssl-dev
$ wget  https://github.com/Kitware/CMake/releases/download/v3.30.3/cmake-3.30.3.tar.gz

$ tar xf v3.30.3/cmake-3.30.3.tar.gz
$ cd cmake-3.30.3/
$ ./bootstrap
$ make -j
$ sudo make install

3, 预备环境

3.1 安装python 包

在非conda 环境,即普通环境中安装依赖包:

$ sudo pip install mkl-static mkl-include -i https://pypi.tuna.tsinghua.edu.cn/simple

$ sudo pip  install numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests dataclasses -i https://pypi.tuna.tsinghua.edu.cn/simple




$ sudo pip install expecttest

$ sudo pip install hypothesis
$ sudo pip install boto3

$ sudo apt install llvm clang

FileCheck:

$ sudo apt-get install llvm clang
$ FileCheck-14 --version
$ which FileCheck-14
$ cd /usr/bin/
$ sudo ln -s FileCheck-14 FileCheck

3.2 安装 OpenBLAS

Makefile:


all:
	wget https://github.com/OpenMathLib/OpenBLAS/archive/refs/tags/v0.3.27.tar.gz
	tar zxf v0.3.27.tar.gz 
	make -C OpenBLAS-0.3.27 FC=gfortran -j

install:
	make -C OpenBLAS-0.3.27 install
#PREFIX=/opt/OpenBLAS
# PREFIX=../local/

clean:
	-rm -rf ./local/ ./OpenBLAS-0.3.27/ ./v0.3.27.tar.gz

下载编译安装:

$ make

$ sudo make install

make 之后会经过几分钟的编译。

ls /opt/OpenBLAS/

4, 编译安装pytorch

4.1 检查 nvcc

检查nvcc是否可以执行:

$ nvcc

如果不能执行,则设置 PATH:


 

$ export PATH=/usr/local/cuda/bin:$PATH

4.2 编译release版本的 pytorch 并出错

配置C++


 

$ export _GLIBCXX_USE_CXX11_ABI=1

清理之前的编译并配置

$ python setup.py clean
$ python setup.py build --cmake-only

如果系统中同时存在ROCm和cuda 环境,则选择屏蔽 ROCm:

$ USE_ROCM=OFF python setup.py build --cmake-only


编译pytorch
 

$ python setup.py install

如果编译成功,则会报安装权限不够:


 

$ sudo python setup.py install

由于编译器错误,产生一个错误:

builtin_xxx

故编译一个 debug版本的

4.3 编译一个 DEBUG版本的pytorch


编译 debug 版本的 pytorch

$ export _GLIBCXX_USE_CXX11_ABI=1

$ python setup.py clean

$ USE_ROCM=OFF DEBUG=1  python setup.py build --cmake-only

主要是其中这句要加DEBUG=1:

USE_ROCM=OFF DEBUG=1  python setup.py build --cmake-only

如果为系统内的ROCm编译pytorch,则需使用:

USE_CUDA=OFF DEBUG=1 python setup.py build --cmake-only

如果编译test 测试,需要加 BUILD_TEST=1:

$ BUILD_TEST=1 USE_ROCM=OFF DEBUG=1 python setup.py build --cmake-only

进一步配置:

$ ccmake build

\blas

[enter]

默认为MKL,按[enter] 改为OpenBLAS

 

$ ccmake build

#//查找 test
/test

选中前几个benchmark:
[enter] 切换 ON / OFF


[c] config

#//config 成功后执行 generate
[g]


#//退出
[e]

编译:

$ DEBUG=1 python setup.py install

安装:

加个 sudo

$ DEBUG=1 sudo  python setup.py install

4.4 卸载 pip 安装的pytorch

如果之前安装过pytorch,可以先卸载:

sudo pip uninstall torch

sudo pip uninstall torchvision

4.5 卸载自己编译安装的 pytorch

通过 python setup.py install 安装的系统,可以对安装文件做路径记录,利用这个功能对pytorch 进行卸载。

记录安装目录:

$ sudo python setup.py install  --record ../install_location.txt

卸载删除:

$ cd ..
$ cat install_location.txt | sudo xargs rm -rf

5. 验证可用性

5.1 简单验证

打印 torch 版本,并验证cuda gpu的可用:

或者在 terminal中输入:

$ python -c "import torch; print(torch.__version__)"

$ python -c "import torchvision; print(torchvision.__version__)"

5.2 跑个cusolver test case

#//in dir: pytorch$


$ pytest test/test_linalg.py -k "test_cholesky"

用 nvprof 跟一下 调用的cuda kernel,暴露了显卡能力 在 8.0 以下:

$ nvprof pytest test/test_linalg.py -k "test_cholesky" 

6.错误解决

6.1 无法 import torch

按照提示执行 python setup.py develop

$ sudo  python setup.py develop

6.2 导入测试矩阵时出错

执行

$ python

>>> from torch.testing._internal.common_utils import random_hermitian_pd_matrix

可能会出现一些问题,如果之前开启了 BUILD_TEST=1,那么可能需要解决一些包的依赖问题,参考如下:

$ sudo pip uninstall sympy
$ pip uninstall sympy
$ sudo pip install sympy

$ sudo pip install expecttest

$ sudo pip install hypothesis
$ sudo pip install boto3

7, 总结

在重新安装某些关联的 python  moudle 后,最好重新编译安装 pytorch:

sudo python setup.py install

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值