源码编译安装tensorflow GPU版本过程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/yuanfuli/article/details/102760605

tensorflow-build

源码编译安装tensorflow GPU版本过程

硬件信息及版本

  • hw :
    • Intel® Core™ i7-6700HQ CPU @ 2.60GHz
    • NVIDIA GTX1060 6G GDDR5
    • 8GB DDR4内存
  • OS : Ubuntu 18.04.2 LTS
  • tensorflow branch : origin/r1.13
  • cuda : 10.0
  • cudnn: 7.4.2
  • nccl: 2.4.2
  • python :2.7
  • bazel: 0.19.2
+ 源码编译安装TensorFlow版本需要对应,不然可能会出现不可预期的错误!

查看GPU信息

命令

  • lspci | grep -i nvidia
  • sudo lshw -numeric -C display

输出

  • 06:00.0 VGA compatible controller: NVIDIA Corporation GK110B [GeForce GTX TITAN Z] (rev a1)
  • 06:00.1 Audio device: NVIDIA Corporation GK110 HDMI Audio (rev a1)
  • 07:00.0 3D controller: NVIDIA Corporation GK110B [GeForce GTX TITAN Z] (rev a1)

禁用nouveau驱动

  + 使用核显和独显,因为对NVIDIA显卡驱动支持不太好,很多在安装TensorFlow GPU版本时经常会遇到黑屏,进不到Linux系统中等问题; 因此在安装显卡驱动和CUDA前先禁用nouveau驱动

操作

  • sudo vim /etc/modprobe.d/blacklist-nouveau.conf
  • # 输入以下内容
  • blacklist nouveau
  • options nouveau modset=0

执行

  • sudo update-initramfs -u

重启电脑查看是否成功

  • sudo lspci | grep nouveau
    如果没有内容,则禁用成功。

安装cuda

执行以下命令

  • sudo /etc/init.d/lightdm stop    # 关闭X-server ctrl+alt+F1进入命令行
  • sudo init 3
  • chmod 777 cuda_10.0.130_410.48_linux.run
  • sudo ./cuda_10.0.130_410.48_linux.run
  • sudo vim ~/.bashrc
  • # 添加以下三行内容
  • export CUDA_HOME=/usr/local/cuda-10.0
  • export PATH=/usr/local/cuda-10.0/bin:$PATH
  • export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
  • source ~/.bashrc    #使配置的环境变量生效
  • sudo vim /etc/ld.so.conf.d/cuda-10-0.conf
    # 添加以下二行内容
  • /usr/local/cuda-10.0/lib64
  • /usr/local/cuda-10.0/extras/CUPTI/lib64
  • sudo ldconfig
  • nvidia-smi       #出现GPU相关信息表示驱动安装成功
  • nvcc --version    #查看cuda版本信息
  • sudo service lightdm start

验证

  • cd /usr/local/cuda-10.0/samples/1_Utilities/deviceQuery
  • sudo make
  • sudo ./deviceQuery
    保证编译没有error,执行deviceQuery输出信息的最后类似以下:
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.0, CUDA Runtime Version = 10.0, NumDevs = 2, Device0 = GeForce GTX TITAN Z, Device1 = GeForce GTX TITAN Z
Result = PASS

安装cuDNN

执行以下命令

  • tar -xzvf cudnn-10.0-linux-x64-v7.4.2.24.tgz
  • sudo cp cuda/include/cudnn.h /usr/local/cuda/include
  • sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
  • sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

查看是否安装成功

  • nvcc -V

nccl : 2.4.2

  • 下载链接
  • sudo dpkg -i nccl-repo-ubuntu1804-2.4.2-ga-cuda10.0_1-1_amd64.deb
  • sudo apt update
  • sudo apt install libnccl2 libnccl-dev
  • 如果希望保留较旧版本的CUDA,请指定特定版本,例如:
  • sudo apt-get install libnccl2=2.4.2-1+cuda10.0 libnccl-dev=2.4.2-1+cuda10.0

bazel: 0.19.2

  • 下载链接
  • chmod +xxx bazel-0.19.2-installer-linux-x86_64.sh
  • ./bazel-0.19.2-installer-linux-x86_64.sh --user

python2.7.16: miniconda2

  • 首先安装miniconda2,可以自己搜索安装方法,在该创建虚拟下使用bazel编译安装TensorFlow
  • conda create -n python2 python=2.7 -y
  • conda activate
  • source activate python2
    退出:
  • conda deactivate
  • source deactivate

编译命令:仅供参考

bazel build --config=opt --config=cuda --local_resources 4096,4,1.0 --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" //tensorflow/tools/pip_package:build_pip_package

使用上述命令,可能CPU或内存资源不够,导致卡死,出现错误:

/tensorflow/core/kernels/BUILD:762:1: C++ compilation of rule '//tensorflow/core/kernels:broadcast_to_op' failed (Exit 4)

可以使用下面命令,但是编译速度相比前面慢许多。

bazel build --config=opt --config=cuda --local_resources 4096,4.0,1.0 -j 1 --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" //tensorflow/tools/pip_package:build_pip_package

遇到问题

/tensorflow/BUILD:573:1: Executing genrule //tensorflow:tf_python_api_gen_v1 failed (Exit 1)...
AttributeError: attribute '__doc__' of 'type' objects is not writable  Target //tensorflow/tools/pip_package:build_pip_package failed to build
  • 若有安装卸载之前的enum:pip uninstall enum
  • 执行命令: pip install enum34

测试安装成功

  • import tensorflow as tf
  • print(‘Loaded TF version’, tf.version)
  • hello = tf.constant(‘Hello, TensorFlow!’)
  • # 通过log_device_placement参数来输出运行每一个运算的设备。
  • sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
  • print(sess.run(hello))
    输出:
  • Loaded TF version 1.2.1
  • Hello, TensorFlow!

卸载

  • sudo apt-get remove --purge nvidia-*     #卸载驱动
  • sudo pip3 uninstall tensorflow

官方编译安装教程

祝君好运!!!

猜你喜欢

转载自blog.csdn.net/yuanfuli/article/details/102760605
今日推荐