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

非 congda 环境 编译安装 pytorch

0, 安装 cuda sdk ,cudnn 及 nccl

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

0.1 cuda sdk

0.2 cudnn

0.3 安装nccl

bash 复制代码
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的可用性:

bash 复制代码
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

bash 复制代码
$ 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 环境,即普通环境中安装依赖包:

bash 复制代码
$ 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:

bash 复制代码
$ 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:

bash 复制代码
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

下载编译安装:

bash 复制代码
$ make

$ sudo make install

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

ls /opt/OpenBLAS/

4, 编译安装pytorch

4.1 检查 nvcc

检查nvcc是否可以执行:

bash 复制代码
$ nvcc

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

bash 复制代码
$ export PATH=/usr/local/cuda/bin:$PATH

4.2 编译release版本的 pytorch 并出错

配置C++

bash 复制代码
$ export _GLIBCXX_USE_CXX11_ABI=1

清理之前的编译并配置

bash 复制代码
$ python setup.py clean
$ python setup.py build --cmake-only

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

bash 复制代码
$ USE_ROCM=OFF python setup.py build --cmake-only

编译pytorch

bash 复制代码
$ python setup.py install

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

bash 复制代码
$ sudo python setup.py install

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

builtin_xxx

故编译一个 debug版本的

4.3 编译一个 DEBUG版本的pytorch

编译 debug 版本的 pytorch

bash 复制代码
$ 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

进一步配置:

bash 复制代码
$ ccmake build

\blas

[enter]

默认为MKL,按[enter] 改为OpenBLAS
bash 复制代码
$ ccmake build

#//查找 test
/test

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


[c] config

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


#//退出
[e]

编译:

bash 复制代码
$ DEBUG=1 python setup.py install

安装:

加个 sudo

bash 复制代码
$ 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

卸载删除:

bash 复制代码
$ cd ..
$ cat install_location.txt | sudo xargs rm -rf

5. 验证可用性

5.1 简单验证

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

或者在 terminal中输入:

bash 复制代码
$ python -c "import torch; print(torch.__version__)"
bash 复制代码
$ python -c "import torchvision; print(torchvision.__version__)"

5.2 跑个cusolver test case

bash 复制代码
#//in dir: pytorch$


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

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

bash 复制代码
$ nvprof pytest test/test_linalg.py -k "test_cholesky" 

6.错误解决

6.1 无法 import torch

按照提示执行 python setup.py develop

bash 复制代码
$ sudo  python setup.py develop

6.2 导入测试矩阵时出错

执行

$ python

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

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

bash 复制代码
$ 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

相关推荐
audyxiao0015 分钟前
AI一周重要会议和活动概览
人工智能·计算机视觉·数据挖掘·多模态
骑个小蜗牛9 分钟前
Python 标准库:string——字符串操作
python
Jeremy_lf24 分钟前
【生成模型之三】ControlNet & Latent Diffusion Models论文详解
人工智能·深度学习·stable diffusion·aigc·扩散模型
桃花键神1 小时前
AI可信论坛亮点:合合信息分享视觉内容安全技术前沿
人工智能
野蛮的大西瓜1 小时前
开源呼叫中心中,如何将ASR与IVR菜单结合,实现动态的IVR交互
人工智能·机器人·自动化·音视频·信息与通信
CountingStars6192 小时前
目标检测常用评估指标(metrics)
人工智能·目标检测·目标跟踪
tangjunjun-owen2 小时前
第四节:GLM-4v-9b模型的tokenizer源码解读
人工智能·glm-4v-9b·多模态大模型教程
冰蓝蓝2 小时前
深度学习中的注意力机制:解锁智能模型的新视角
人工智能·深度学习
橙子小哥的代码世界2 小时前
【计算机视觉基础CV-图像分类】01- 从历史源头到深度时代:一文读懂计算机视觉的进化脉络、核心任务与产业蓝图
人工智能·计算机视觉
黄公子学安全2 小时前
Java的基础概念(一)
java·开发语言·python