非 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

相关推荐
昨日之日200643 分钟前
Moonshine - 新型开源ASR(语音识别)模型,体积小,速度快,比OpenAI Whisper快五倍 本地一键整合包下载
人工智能·whisper·语音识别
浮生如梦_1 小时前
Halcon基于laws纹理特征的SVM分类
图像处理·人工智能·算法·支持向量机·计算机视觉·分类·视觉检测
深度学习lover1 小时前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
热爱跑步的恒川2 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
API快乐传递者2 小时前
淘宝反爬虫机制的主要手段有哪些?
爬虫·python
阡之尘埃4 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
孙同学要努力6 小时前
全连接神经网络案例——手写数字识别
人工智能·深度学习·神经网络
Eric.Lee20216 小时前
yolo v5 开源项目
人工智能·yolo·目标检测·计算机视觉
其实吧37 小时前
基于Matlab的图像融合研究设计
人工智能·计算机视觉·matlab
丕羽7 小时前
【Pytorch】基本语法
人工智能·pytorch·python