Tensorflow 学习入门(一)环境搭建
前提需求
众所周知Tensorflow 是一项立足于CPU运算和GPU运算的AI框架而且基于GPU的Tensorflow效率更高速度更快但是搭建过程却更加烦琐。主要前提条件为一张Nvidia显卡,Nvidia 显卡的基本驱动和Cuda库。
基于CPU
基于CPU的Tensorflow 环境十分简单只需要使用一行简单的代码就可以布置
# Current stable release for CPU-only
pip install tensorflow
# Preview nightly build for CPU-only (unstable)
pip install tf-nightly
# Install TensorFlow 2.0 Alpha
pip install tensorflow==2.0.0-alpha0
一般来说我们只需要第一段代码就可以完成基于CPU的Tensorflow的环境搭建。
基于GPU
不同于CPU的Tensorflow 环境搭建非常繁琐。而且因为一定的原因,Tensorflow 官方并不支持 Macos 作为GPU运行环境,虽然有民间大神提供补丁但是仅能支持1.8版本的TF。
安装驱动
这里的驱动主要为Linux 环境下的Nvidia 驱动(Windows下的确实没啥好说的)。以下为TF官网提供的Ubuntu18.04驱动安装代码,可以说是相当贴心了。
# 添加英伟达的驱动库
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt-get update
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt-get update
# 安装英伟达驱动
sudo apt-get install --no-install-recommends nvidia-driver-418
在这之后官网的说法是可以直接重启了,但是实际上在最后一行代码处我们会遭遇依赖问题,不过这并没有什么问题,直接按照提示安装逐个安装依赖即可。值得一提的是,在安装 xserver-xorg-core的时候apt会自动删除旧有的xserver-xorg驱动以保障后面的xserver-xorg-video-nvidia-{version}正常安装。而被删除的驱动中还包含着图形界面的键鼠驱动所以桌面端用户需要补充以下代码。
sudo apt-get install xserver-xorg-core
sudo apt-get install xserver-xorg-video-nvidia-418
#依赖解决,正式安装
sudo apt-get install --no-install-recommends nvidia-driver-418
#驱动成功安装添加图形界面的键鼠相关驱动
sudo apt-get install xserver-xorg-input-kbd
sudo apt-get install xserver-xorg-input-mouse
#以防缺少其他驱动执行以下代码
sudo apt-get install xserver-xorg-input-all
此后重启系统并使用nvidia-smi
命令来确认驱动正常运行。
CUDA 运行库以及cuDNN库
Linux
使用以下命令来完成CUDA和cuDNN库的安装
# Install development and runtime libraries (~4GB)
sudo apt-get install --no-install-recommends \
cuda-10-0 \
libcudnn7=7.4.1.5-1+cuda10.0 \
libcudnn7-dev=7.4.1.5-1+cuda10.0
# Install TensorRT. Requires that libcudnn7 is installed above.
sudo apt-get update && \
sudo apt-get install nvinfer-runtime-trt-repo-ubuntu1604-5.0.2-ga-cuda10.0 \
&& sudo apt-get update \
&& sudo apt-get install -y --no-install-recommends libnvinfer-dev=5.0.2-1+cuda10.0
Windows
尽管Windows 可以很简单的从官网下载CUDA的安装工具和cudnn的库压缩包,但是为了使其能够生效,我们需要添加环境变量。假设 CUDA 被安装在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
而cuDNN安装在 C:\tools\cuda
使用以下命令添加环境变量即可。
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin;%PATH%
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\CUPTI\libx64;%PATH%
SET PATH=C:\tools\cuda\bin;%PATH%
pip 安装 Tensorflow-GPU
本来这个部分可以跳过的但是为了区别CPU版的调用再提一下
pip3 install tensorflow-gpu
Python 开发环境编译
完成前提准备后我们就可以正式安装TF了。不过开发Tensorflow所需的Python官方认定版本为 3.4、3.5、3.6所以无论是Python2.x还是Python3.7都是无法正常使用的。不过即使机器上现存的Python环境不匹配也没有关系可以通过virtualenv
和Anaconda
来搭建虚拟环境。由于Anaconda 不区分系统环境,这里就是用Anaconda
举例了。
在packageURL中选用适合的包
conda create -n venvName pip python=3.6 # select python version
source activate venvName
pip install --ignore-installed --upgrade packageURL
#使用命令退出环境
source deactivate
值得注意的是,在虚拟环境中指定了唯一确定的Python3.x环境所以在该环境中pip就是pip3。
为Docker 三呼万岁
在个人学习的过程中,Tensorflow 的前期准备花掉了我大量的时间(尤其是Linux环境的显卡驱动安装bug)不过还好,Docker的存在让我在没能成功布置环境的情况下简单体验了下Tensorflow。
官方提供了两张表以方便用户根据自己的需求下载对应的容器。
版本表
Tag | 描述 |
---|---|
latest | 顾名思义最新稳定版 |
nightly | 最新版(不稳定版) |
version | 指定版本 |
devel | 开发版(包含源码的最新版) |
功能表
该表中的tag指的是上面表中的tag
Tag变量 | 描述 |
---|---|
tag-gpu | 添加GPU支持此外需要额外的docker支持 |
tag-py3 | 添加Python3支持 |
tag-jupyter | 增加jupyter记事本功能 |
以下为样例命令
docker pull tensorflow/tensorflow # latest stable release
docker pull tensorflow/tensorflow:devel-gpu # nightly dev release w/ GPU support
docker pull tensorflow/tensorflow:latest-gpu-jupyter # latest release w/ GPU support and Jupyter
此外Docker内的TF在没有Nvidia官方驱动的Linux 环境下需要依赖Docker的驱动支持。因此还需要以下命令。
# 验证显卡设备
lspci | grep -i nvidia
# 验证Docker的显卡驱动
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
这两项都成功运行才表示-gpu变量可以正常使用。