当我第一次使用Linux时,我想要做的第一件事就是安装GPU版本Tensorflow。我找到了一个很好的指南。但即使考虑到这一点,我也花了超过40个小时的安装。这篇文章我想节省你的时间,分享自己的经验。下面你会找到来自的更新指南
第1步:更新和升级您的系统:
sudo apt-get update sudo apt-get upgrade
第2步:验证您是否拥有支持CUDA的GPU:
lspci | grep -i nvidia
注意GPU型号。例如:GeForce 840M
如果没有看到任何设置,请通过在命令行输入update-pciids(通常位于/sbin中)并更新以前的lspci命令来更新Linux维护的PCI硬件数据库。
第3步:验证您是否拥有受支持的Linux版本:
要确定您正在运行的分发和版本号,请在命令行键入以下内容:
uname -m && cat /etc/*release
x86_64表示您在64位系统上运行,该系统支持cuda 9.1。
第4步:安装依赖项:
想要从源代码编译必须安装这些库:
sudo apt-get install build-essential sudo apt-get install cmake git unzip zipsudo add-apt-repository ppa:deadsnakes/ppasudo apt-get updatesudo apt-get install python2.7-dev python3.5-dev python3.6-dev pylint
第5步:安装linux内核:
转到终端并键入:
uname -r
你也许可以得到类似这样的版本号“4.15.0-23-generic”。记下你的linux内核版本。
在Ubuntu18.04中,你有4.15版本Linux内核。但因为这个版本,你有可能会卡在cuda安装上。我在Google上搜索了好几个小时,并没有解决这个问题。
如果你在终端上看到这个,你的CUDA没有以正确的方式安装
为了避免这个问题需要安装4.16内核:
wget /~kernel-ppa/mainline/v4.16/linux-headers-4.16.0-041600_4.16.0-041600.04012230_all.debwget /~kernel-ppa/mainline/v4.16/linux-headers-4.16.0-041600-generic_4.16.0-041600.04012230_amd64.debwget /~kernel-ppa/mainline/v4.16/linux-image-4.16.0-041600-generic_4.16.0-041600.04012230_amd64.deb
下载完所有上述内核文件后,现在按如下方式安装它们。Linux头文件也将用这个命令安装:
sudo dpkg -i *.deb
安装完成后,重新启动计算机并验证是否正在使用新的内核版本:
uname -sr
你必须得到这样的东西才行:
现在你已经有了一个正确版本的内核
现在使用的内核版本比Ubuntu默认安装的内核版本更新。
第6步:安装NVIDIA CUDA 9.2:
删除以前的cuda安装:
sudo apt-get purge nvidia*sudo apt-get autoremovesudo apt-get autocleansudo rm -rf /usr/local/cuda*
安装cuda:
sudo apt-key adv --fetch-keys http://developer./compute/cuda/repos/ubuntu1710/x86_64/7fa2af80.pubecho "deb https://developer./compute/cuda/repos/ubuntu1710/x86_64 /" | sudo tee /etc/apt/sources.list.d/cuda.listsudo apt-get update sudo apt-get -o Dpkg::Options::="--force-overwrite" install cuda-9-2 cuda-drivers
在执行最后一个命令时请注意步骤6!
在第一次尝试通常脚本卡在unitramfs(每当我在4.15内核上启动它时,我看到这个unitramfs文件没有找到,并且cuda安装错误)。在内核4.16上,你不会遇到这个问题。
Building for 4.15.0-22-genericBuilding for architecture x86_64Building initial module for 4.15.0-22-generic
如果此线路不会在几分钟内更新,请打开系统监视器并等待CPU内核的负载减少。不要马上键入!
然后在终端中尝试这个:
敲击ESC几次然后输入:password + Enter + password + Enter..
如果没有帮助:
敲击ESC几次然后输入:password + Enter + password + Enter..
请耐心等待,慢慢输入密码。10次敲击ESC并再次输入。
如果你在新系统上安装cuda,你只需要“盲目地”输入密码一次。否则准备做两次这样做:当编译内核,当看到这条消息时:
+++writing new private key to ‘/var/lib/shim-signed/mok/MOK.priv’— — -
这样你就会成功!
步骤7:重新启动系统以加载NVIDIA驱动程序。
步骤8:转到终端并键入:
echo 'export PATH=/usr/local/cuda-9.2/bin${PATH:+:${PATH}}' >> ~/.bashrcecho 'export LD_LIBRARY_PATH=/usr/local/cuda-9.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrcsource ~/.bashrcsudo ldconfignvidia-smi
检查驱动程序版本可能驱动程序版本:396.26
现在,如果你使用nvidia-smi命令,你可以获得GPU的临时属性,仅此而已(下面没有找到进程)。而且你的屏幕分辨率很低,因为你的nvidia驱动程序没有检测到GPU监视器。
但你可以用Xorg解决这个问题!
使用此命令来创建Xorg:
sudo nvidia-xconfig
那就是在路径中创建一个文件xorg.conf文件:(etc/X11/xorg.conf)。要更改分辨率,您需要更改此文件。要执行此操作,请将此命令与监视器的参数配合使用。对我的电脑我的命令是这样:
cvt 1920x1080 60
按Enter键即可
Modeline“1920x60_60.00”9.25 1920 1976 2160 2400 60 63 73 76 -hsync + vsync
只需复制它并打开xorg.conf:
sudo -i gedit /etc/X11/xorg.conf
粘贴在这里(而不是modeline)。也改变HorizSync和VertRefresh:
然后重新启动它。现在你的屏幕分辨率应该和以前一样。现在你可以输入
nvidia-settings
看到这个:
现在您可以看到有关GPU的温度和其他有用信息。
第9步:安装cuDNN 7.1.4:
NVIDIA cuDNN是用于深度神经网络的GPU加速库。
转到/cudnn并登录下载
登录并接受协议后。
下载以下内容:
适用于Linux的cuDNN v7.1.4库
转到下载的文件夹并在终端中执行以下操作:
tar -xf cudnn-9.2-linux-x64-v7.1.tgzsudo cp -R cuda/include/* /usr/local/cuda-9.2/includesudo cp -R cuda/lib64/* /usr/local/cuda-9.2/lib64
第10步:安装NCCL 2.2.13:
NVIDIA集群通信库(NCCL)实现了针对NVIDIA GPU进行性能优化的多GPU和多节点集群通信原语。
访问/nccl并填写调查然后下载Nvidia NCCL。
完成调查后下载以下内容。
Download NCCL v2.2.13, for CUDA 9.2 -> NCCL 2.2.13 O/S agnostic and CUDA 9.2
转到下载的文件夹并在终端中执行以下操作:
tar -xf nccl_2.2.13-1+cuda9.2_x86_64.txzcd nccl_2.2.13-1+cuda9.2_x86_64sudo cp -R * /usr/local/cuda-9.2/targets/x86_64-linux/sudo ldconfig
第11步:安装依赖项
libcupti
sudo apt-get install libcupti-devecho 'export LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
Python相关:
要为Python 2.7安装这些软件包,以下命令:
sudo apt-get install python-numpy python-dev python-pip python-wheel
要为Python 3.n安装这些软件包,以下命令:
sudo apt-get install python3-numpy python3-dev python3-pip python3-wheel
第12步:从源代码编译配置Tensorflow:
下载bazel:
cd ~/wget /bazelbuild/bazel/releases/download/0.14.0/bazel-0.14.0-installer-linux-x86_64.shchmod +x bazel-0.14.0-installer-linux-x86_64.sh./bazel-0.14.0-installer-linux-x86_64.sh --userecho 'export PATH="$PATH:$HOME/bin"' >> ~/.bashrc
重新加载环境变量
source ~/.bashrcsudo ldconfig
通过下载最新的tensorflow 1.8.0开始构建TensorFlow:
cd ~/git clone /tensorflow/tensorflow.gitcd tensorflowgit pullgit checkout r1.8./configure
指定python路径
请指定python的位置。[默认是/usr/bin/python]:/usr/bin/python3
按下enter键两次
Do you wish to build TensorFlow with jemalloc as malloc support? [Y/n]: YDo you wish to build TensorFlow with Google Cloud Platform support? [Y/n]: YDo you wish to build TensorFlow with Hadoop File System support? [Y/n]: YDo you wish to build TensorFlow with Amazon S3 File System support? [Y/n]: YDo you wish to build TensorFlow with Apache Kafka Platform support? [Y/n]: YDo you wish to build TensorFlow with XLA JIT support? [y/N]: NDo you wish to build TensorFlow with GDR support? [y/N]: NDo you wish to build TensorFlow with VERBS support? [y/N]: NDo you wish to build TensorFlow with OpenCL SYCL support? [y/N]: NDo you wish to build TensorFlow with CUDA support? [y/N]: YPlease specify the CUDA SDK version you want to use, e.g. 7.0. [Leave empty to default to CUDA 9.0]: 9.2Please specify the location where CUDA 9.2 toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]: /usr/local/cuda-9.2Please specify the cuDNN version you want to use. [Leave empty to default to cuDNN 7.0]: 7.1.4Please specify the location where cuDNN 7 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda-9.2]: /usr/local/cuda-9.2Do you wish to build TensorFlow with TensorRT support? [y/N]: NPlease specify the NCCL version you want to use. [Leave empty to default to NCCL 1.3]: 2.2Please specify the location where NCCL 2 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda-9.2]: /usr/local/cuda-9.2/targets/x86_64-linux
现在你需要注意一下显卡计算能力(compute capability),我们已经在第1步记下来了,例如5.0
Please note that each additional compute capability significantly increases your build time and binary size. [Default is: 5.0] 5.0Do you want to use clang as CUDA compiler? [y/N]: NPlease specify which gcc should be used by nvcc as the host compiler. [Default is /usr/bin/gcc]: /usr/bin/gccDo you wish to build TensorFlow with MPI support? [y/N]: NPlease specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]: -march=nativeWould you like to interactively configure ./WORKSPACE for Android builds? [y/N]:N
配置完成!
第13步:使用bazel建立Tensorflow
安装tensorflow GPU版本的过程的下一步将是使用bazel构建tensorflow。这个过程需要相当长的时间!请做好心理准备!
要为TensorFlow构建pip包,通常会调用以下命令:
bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
注意:如果您收到类似不支持的平台的错误,请确保您正在运行与配置tensorflow构建时使用的python关联的正确pip命令。
add "--config=mkl" if you want Intel MKL support for newer intel cpu for faster training on cpuadd "--config=monolithic" if you want static monolithic build (try this if build failed)add "--local_resources 2048,.5,1.0" if your PC has low ram causing Segmentation fault or other related errors
这个过程将花费很多时间。可能需要1-2小时甚至更长时间。比如,在我的i5-4590上需要2小时3分钟。没办法只能等待!
此外,如果您遇到像Segmentation Fault这样的错误,那么再试一次它通常有效。
bazel build命令构建一个名为build_pip_package的脚本。按如下所示运行此脚本将在tensorflow_pkg目录内生成一个.whl文件:
要构建whl文件,请执行以下命令:
bazel-bin/tensorflow/tools/pip_package/build_pip_package tensorflow_pkg
用pip安装tensorflow:
cd tensorflow_pkg
对于现有的virtual environment:
pip install tensorflow*.whl
使用virtualenv创建新的virtual environment:
sudo apt-get install virtualenvvirtualenv tf_1.8.0_cuda9.2 -p /usr/bin/python3source tf_1.8.0_cuda9.2/bin/activatepip install tensorflow*.whl
for python 2 :(如果需要,使用sudo)
pip2 install tensorflow*.whl
for python 3 :(如果需要,使用sudo)
pip3 install tensorflow*.whl
注意:如果您遇到像不受支持的平台那样的错误,请确保您正在运行与配置Tensorflow构建时使用的python关联的正确pip命令。
您可以通过以下命令检查pip版本和关联的python
pip -V
步骤14:验证Tensorflow安装
在终端运行
pythonimport tensorflow as tfhello = tf.constant('Hello, TensorFlow!')sess = tf.Session()print(sess.run(hello))
如果系统输出以下内容,则准备开始编写TensorFlow程序:
Hello, TensorFlow!
成功!您现在已经在您的机器上成功安装了tensorflow 1.8.0。
点击原文查看网页版。
欢迎访问,获取更过CVML技术信息。