Pytorch 在 Ubuntu18.04 上的编译、安装、与问题

这里主要是develop开发版的编译与安装。如果不是开发版,安装是非常容易的,anaconda已经做得非常到位了,可参考该帖的后面部分,
https://blog.csdn.net/tanmx219/article/details/82831964

在自己编译的情况下,和官网相比,我每次重新编译总是缺些什么,所以决定记录一下,

https://github.com/pytorch/pytorch
https://m.oldpan.me/archives/pytorch-build-simple-instruction

目前是pytorch v1.0
------------------------------------------------------------------------------------

conda install numpy pyyaml mkl mkl-include setuptools cmake cffi typing pybind11
conda install cudnn (cudatoolkit: 9.2-0+cudnn:7.2.1-cuda9.2_0)
conda install ninja (optional, warning: C++ will not be compiled incrementally)
conda install -c pytorch magma-cuda92 (optional, Add LAPACK support for the GPU if needed)
git clone --recursive https://github.com/pytorch/pytorch
cd pytorch

export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
如果不需要使用cuda的话,这里还要加上一句:export NO_CUDA=1

python setup.py install 
对于开发者模式,可以使用
python setup.py build develop


------------------------------------------------------------------------------------

源码安装的Pytorch,卸载需要执行:

pip uninstall torch
python setup.py clean

------------------------------------------------------------------------------------

注意git clone之前确保已经安装git,如果没有安装,sudo apt-get install git-all安装一下。

 

碰到的问题

Linux的问题总是千奇百怪,每次都不一样,也记录一下

=========================================================================

Problem 1:

---------------------------------------------------------------------------------------------------------------------------------

Cuda的安装,网上讲的安装方法非常多,其中包括一种比较有意思的,
https://askubuntu.com/questions/1028830/how-do-i-install-cuda-on-ubuntu-18-04

-----how to install-----
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo ubuntu-drivers autoinstall
reboot
sudo apt install nvidia-cuda-toolkit gcc-6
nvcc --version

-----replace------
sudo sh cuda_9.1.85_387.26_linux.run (--override)
to uninstall the NVIDIA Driver, run nvidia-uninstall

-----how to remove-----
sudo apt-get remove --purge nvidia-*
sudo apt-get remove --purge libnvidia-*

这个方法是通过PPA proprietary graphics driver team 开发的包安装,可参考:
https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa
这里有其团队的信息,
https://launchpad.net/~graphics-drivers
不过写这东东时我也是第一次用这种方式安装,检查了一下,貌似通过这种形式安装的都是最新版本,还没看到过详细文档。
官网上提到:
Current long-lived branch release: `nvidia-410` (410.66)
Dropped support for Fermi series (https://nvidia.custhelp.com/app/answers/detail/a_id/4656)
Old long-lived branch release: `nvidia-390` (390.87)
默认是nvidia-410,
总之,通过这种方式会安装很多包,这里装了多少多余的东西俺就不知道了。

--------------------

那假设我就是想安装nvidia-390怎么办呢?还是老办法保险:
sudo apt-get install nvidia-driver-390
sudo apt-get install nvidia-driver-390-dev

=========================================================================

Problem 2:

---------------------------------------------------------------------------------------------------------------------------------

CMake Error at cmake/public/cuda.cmake:318 (message):
  CUDA 9.1 is not compatible with std::tuple from GCC version >= 6.  Please
  upgrade to CUDA 9.2 or use the following option to use another version (for
  example):
    -DCUDA_HOST_COMPILER=/usr/bin/gcc-5
.....
-- Configuring incomplete, errors occurred!
See also "/home/matthew/dev/pytorch/build/CMakeFiles/CMakeOutput.log".
See also "/home/matthew/dev/pytorch/build/CMakeFiles/CMakeError.log".
Failed to run 'bash ../tools/build_pytorch_libs.sh --use-cuda --use-fbgemm --use-nnpack --use-mkldnn --use-qnnpack caffe2'

网上有不少解决办法,参考:https://github.com/pytorch/pytorch/issues/14152

Solution 1:

--------------------------------------------------------------------------------------------------------------------------------

版本不对,大概是先卸载再安装,参考:

step1: remove the previous cuda
sudo apt-get --purge remove nvidia-cuda-toolkit
conda remove cudnn (if has installed a different version needed)

step2: install cudnn  (this will install cudnn7_cuda9.2)
conda install cudnn

https://blog.csdn.net/tanmx219/article/details/86210023
https://github.com/pytorch/pytorch/issues/14152

=========================================================================

Problem 3:

---------------------------------------------------------------------------------------------------------------------------------

$ python setup.py build develop
Building wheel torch-1.1.0a0+964732f
running build
running build_deps
setup.py::build_deps::run()
+ SYNC_COMMAND=cp
......
--     USE_GLOO_IBVERBS    : OFF
--   Public Dependencies  : Threads::Threads;caffe2::mkl;caffe2::mkldnn
--   Private Dependencies : qnnpack;nnpack;cpuinfo;fbgemm;fp16;gloo;aten_op_header_gen;onnxifi_loader;rt;gcc_s;gcc;dl
-- Configuring done
CMake Error in caffe2/CMakeLists.txt:
  Imported target "caffe2::mkl" includes non-existent path
    "/home/matthew/anaconda3/envs/torchdev/include"
  in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:
  * The path was deleted, renamed, or moved to another location.
  * An install or uninstall procedure did not complete successfully.
  * The installation package was faulty and references files it does not
  provide.

-- Generating done
-- Build files have been written to: /home/matthew/dev/pytorch/build
Failed to run 'bash ../tools/build_pytorch_libs.sh --use-fbgemm --use-nnpack --use-mkldnn --use-qnnpack caffe2'

解决办法
---------------------------------------------------------------------------------------------------------------------------------

这个问题是因为上一次编译没编译完,这次接着编译,但命令路径变了,所以必须清空重来
python setup.py clean
python setup.py build develop

=========================================================================

Problem 3:

--------------------------------------------------------------------------------------------------------------------------------

The Nouveau kernel driver is currently in use by your system.  This driver is incompatible with the NVIDIA driver,

参考:
https://tutorials.technology/tutorials/85-How-to-remove-Nouveau-kernel-driver-Nvidia-install-error.html
How to remove Nouveau kernel driver (fix Nvidia install error)

sudo apt-get remove nvidia*
sudo apt autoremove
sudo apt-get install dkms build-essential linux-headers-generic
sudo vim /etc/modprobe.d/blacklist.conf

blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
sudo update-initramfs -u
reboot

sudo apt-get --purge remove xserver-xorg-video-nouveau

=========================================================================

Problem 4:

--------------------------------------------------------------------------------------------------------------------------------

-- Caffe2: Cannot find glog automatically. Using legacy find.
-- Could NOT find glog (missing: GLOG_INCLUDE_DIR GLOG_LIBRARY) 
CMake Warning at cmake/public/glog.cmake:66 (message):
  Caffe2: glog cannot be found.  Depending on whether you are building Caffe2
  or a Caffe2 dependent library, the next warning / error will give you more
  info.
Call Stack (most recent call first):
  cmake/Dependencies.cmake:291 (include)
  CMakeLists.txt:219 (include)

===>>>

$ sudo apt-get install libgflags-dev    libgoogle-glog-dev

=========================================================================

Problem 5:

--------------------------------------------------------------------------------------------------------------------------------

-- Found CUDA: /usr/local/cuda (found version "10.0") 
-- Caffe2: CUDA detected: 10.0
-- Caffe2: CUDA nvcc is: /usr/local/cuda/bin/nvcc
-- Caffe2: CUDA toolkit directory: /usr/local/cuda
-- Caffe2: Header version is: 10.0
-- Could NOT find CUDNN (missing: CUDNN_INCLUDE_DIR CUDNN_LIBRARY) 
CMake Warning at cmake/public/cuda.cmake:101 (message):
  Caffe2: Cannot find cuDNN library.  Turning the option off
Call Stack (most recent call first):
  cmake/Dependencies.cmake:685 (include)
  CMakeLists.txt:219 (include)

===>>> 

安装了cuda+cudnn后这个就会消失

 

 

 


 

 

posted @ 2019-01-16 16:50  SpaceVision  阅读(313)  评论(0编辑  收藏  举报