TensorFlow 安装与环境配置

TensorFlow 安装与环境配置
TensorFlow 的最新安装步骤可参考官方网站上的说明(https://tensorflow.google.cn/install)。TensorFlow 支持 Python、Java、Go、C 等多种编程语言以及 Windows、OSX、Linux 等多种操作系统,此处及后文均以 Python 3.7 为准。

提示

本章介绍在一般的个人电脑或服务器上直接安装 TensorFlow 2 的方法。关于在容器环境(Docker)、云平台中部署 TensorFlow 或在线上环境中使用 TensorFlow 的方法,见附录 使用 Docker 部署 TensorFlow 环境 和 在云端使用 TensorFlow 。软件的安装方法往往具有时效性,本节的更新日期为 2019 年 10 月。

一般安装步骤
安装 Python 环境。此处建议安装 Anaconda 的 Python 3.7 64 位版本(后文均以此为准),这是一个开源的 Python 发行版本,提供了一个完整的科学计算环境,包括 NumPy、SciPy 等常用科学计算库。当然,你有权选择自己喜欢的 Python 环境。Anaconda 的安装包可在 这里 获得。

使用 Anaconda 自带的 conda 包管理器建立一个 Conda 虚拟环境,并进入该虚拟环境。在命令行下输入:

conda create --name tf2 python=3.7 # “tf2”是你建立的conda虚拟环境的名字
conda activate tf2 # 进入名为“tf2”的conda虚拟环境
使用 Python 包管理器 pip 安装 TensorFlow。在命令行下输入:

pip install tensorflow
等待片刻即安装完毕。

小技巧

也可以使用 conda install tensorflow 来安装 TensorFlow,不过 conda 源的版本往往更新较慢,难以第一时间获得最新的 TensorFlow 版本;

从 TensorFlow 2.1 开始,pip 包 tensorflow 即同时包含 GPU 支持,无需通过特定的 pip 包 tensorflow-gpu 安装 GPU 版本。如果对 pip 包的大小敏感,可使用 tensorflow-cpu 包安装仅支持 CPU 的 TensorFlow 版本。

在 Windows 下,需要打开开始菜单中的 “Anaconda Prompt” 进入 Anaconda 的命令行环境;

如果默认的 pip 和 conda 网络连接速度慢,可以尝试使用镜像,将显著提升 pip 和 conda 的下载速度(具体效果视您所在的网络环境而定);

清华大学的 pypi 镜像:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/

清华大学的 Anaconda 镜像:https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

如果对磁盘空间要求严格(比如服务器环境),可以安装 Miniconda ,仅包含 Python 和 Conda,其他的包可自己按需安装。Miniconda 的安装包可在 这里 获得。

如果在 pip 安装 TensorFlow 时出现了 “Could not find a version that satisfies the requirement tensorflow” 提示,比较大的可能性是你使用了 32 位(x86)的 Python 环境。请更换为 64 位的 Python。可以通过在命令行里输入 python 进入 Python 交互界面,查看进入界面时的提示信息来判断 Python 是 32 位(如 [MSC v.XXXX 32 bit (Intel)] )还是 64 位(如 [MSC v.XXXX 64 bit (AMD64)] )来判断 Python 的平台。

pip 和 conda 包管理器

pip 是最为广泛使用的 Python 包管理器,可以帮助我们获得最新的 Python 包并进行管理。常用命令如下:

pip install [package-name] # 安装名为[package-name]的包
pip install [package-name]==X.X # 安装名为[package-name]的包并指定版本X.X
pip install [package-name] --proxy=代理服务器IP:端口号 # 使用代理服务器安装
pip install [package-name] --upgrade # 更新名为[package-name]的包
pip uninstall [package-name] # 删除名为[package-name]的包
pip list # 列出当前环境下已安装的所有包
conda 包管理器是 Anaconda 自带的包管理器,可以帮助我们在 conda 环境下轻松地安装各种包。相较于 pip 而言,conda 的通用性更强(不仅是 Python 包,其他包如 CUDA Toolkit 和 cuDNN 也可以安装),但 conda 源的版本更新往往较慢。常用命令如下:

conda install [package-name] # 安装名为[package-name]的包
conda install [package-name]=X.X # 安装名为[package-name]的包并指定版本X.X
conda update [package-name] # 更新名为[package-name]的包
conda remove [package-name] # 删除名为[package-name]的包
conda list # 列出当前环境下已安装的所有包
conda search [package-name] # 列出名为[package-name]的包在conda源中的所有可用版本
conda 中配置代理:在用户目录下的 .condarc 文件中添加以下内容:

proxy_servers:
http: http://代理服务器IP:端口号
Conda 虚拟环境

在 Python 开发中,很多时候我们希望每个应用有一个独立的 Python 环境(比如应用 1 需要用到 TensorFlow 1.X,而应用 2 使用 TensorFlow 2.0)。这时,Conda 虚拟环境即可为一个应用创建一套 “隔离” 的 Python 运行环境。使用 Python 的包管理器 conda 即可轻松地创建 Conda 虚拟环境。常用命令如下:

conda create --name [env-name] # 建立名为[env-name]的Conda虚拟环境
conda activate [env-name] # 进入名为[env-name]的Conda虚拟环境
conda deactivate # 退出当前的Conda虚拟环境
conda env remove --name [env-name] # 删除名为[env-name]的Conda虚拟环境
conda env list # 列出所有Conda虚拟环境
GPU 版本 TensorFlow 安装指南
GPU 版本的 TensorFlow 可以利用 NVIDIA GPU 强大的计算加速能力,使 TensorFlow 的运行更为高效,尤其是可以成倍提升模型训练的速度。

在安装 GPU 版本的 TensorFlow 前,你需要具有一块不太旧的 NVIDIA 显卡,以及正确安装 NVIDIA 显卡驱动程序、CUDA Toolkit 和 cuDNN。

GPU 硬件的准备
TensorFlow 对 NVIDIA 显卡的支持较为完备。对于 NVIDIA 显卡,要求其 CUDA Compute Capability 须不低于 3.5,可以到 NVIDIA 的官方网站 查询自己所用显卡的 CUDA Compute Capability。目前,AMD 的显卡也开始对 TensorFlow 提供支持,可访问 这篇博客文章 查看详情。

NVIDIA 驱动程序的安装
Windows

Windows 环境中,如果系统具有 NVIDIA 显卡,则往往已经自动安装了 NVIDIA 显卡驱动程序。如未安装,直接访问 NVIDIA 官方网站 下载并安装对应型号的最新公版驱动程序即可。

Linux

在服务器版 Linux 系统下,同样访问 NVIDIA 官方网站 下载驱动程序(为 .run 文件),并使用 sudo bash DRIVER_FILE_NAME.run 命令安装驱动即可。在安装之前,可能需要使用 sudo apt-get install build-essential 安装合适的编译环境。

在具有图形界面的桌面版 Linux 系统上,NVIDIA 显卡驱动程序需要一些额外的配置,否则会出现无法登录等各种错误。如果需要在 Linux 下手动安装 NVIDIA 驱动,注意在安装前进行以下步骤(以 Ubuntu 为例):

禁用系统自带的开源显卡驱动 Nouveau(在 /etc/modprobe.d/blacklist.conf 文件中添加一行 blacklist nouveau ,使用 sudo update-initramfs -u 更新内核,并重启)

禁用主板的 Secure Boot 功能

停用桌面环境(如 sudo service lightdm stop)

删除原有 NVIDIA 驱动程序(如 sudo apt-get purge nvidia*)

小技巧

对于桌面版 Ubuntu 系统,有一个很简易的 NVIDIA 驱动安装方法:在系统设置(System Setting)里面选软件与更新(Software & Updates),然后点选 Additional Drivers 里面的 “Using NVIDIA binary driver” 选项并点选右下角的 “Apply Changes” 即可,系统即会自动安装 NVIDIA 驱动,但是通过这种安装方式安装的 NVIDIA 驱动往往版本较旧。

NVIDIA 驱动程序安装完成后,可在命令行下使用 nvidia-smi 命令检查是否安装成功,若成功则会打印出当前系统安装的 NVIDIA 驱动信息,形式如下:

$ nvidia-smi
Mon Jun 10 23:19:54 2019
±----------------------------------------------------------------------------+
| NVIDIA-SMI 419.35 Driver Version: 419.35 CUDA Version: 10.1 |
|-------------------------------±---------------------±---------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|=++==============|
| 0 GeForce GTX 106… WDDM | 00000000:01:00.0 On | N/A |
| 27% 51C P8 13W / 180W | 1516MiB / 6144MiB | 0% Default |
±------------------------------±---------------------±---------------------+

±----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 572 C+G Insufficient Permissions N/A |
±----------------------------------------------------------------------------+
提示

命令 nvidia-smi 可以查看机器上现有的 GPU 及使用情况。(在 Windows 下,将 C:\Program Files\NVIDIA Corporation\NVSMI 加入 Path 环境变量中即可,或 Windows 10 下可使用任务管理器的 “性能” 标签查看显卡信息)

更详细的 GPU 环境配置指导可以参考 这篇文章 和 这篇中文博客 。

CUDA Toolkit 和 cuDNN 的安装
在 Anaconda 环境下,推荐使用

conda install cudatoolkit=X.X
conda install cudnn=X.X.X
安装 CUDA Toolkit 和 cuDNN,其中 X.X 和 X.X.X 分别为需要安装的 CUDA Toolkit 和 cuDNN 版本号,必须严格按照 TensorFlow 官方网站所说明的版本 安装。例如,对于 TensorFlow 2.1,可使用:

conda install cudatoolkit=10.1
conda install cudnn=7.6.5
在安装前,可使用 conda search cudatoolkit 和 conda search cudnn 搜索 conda 源中可用的版本号。

当然,也可以按照 TensorFlow 官方网站上的说明 手动下载 CUDA Toolkit 和 cuDNN 并安装,不过过程会稍繁琐。

第一个程序
安装完毕后,我们来编写一个简单的程序来验证安装。

在命令行下输入 conda activate tf2 进入之前建立的安装有 TensorFlow 的 Conda 虚拟环境,再输入 python 进入 Python 环境,逐行输入以下代码:

import tensorflow as tf

A = tf.constant([[1, 2], [3, 4]])
B = tf.constant([[5, 6], [7, 8]])
C = tf.matmul(A, B)

print©
如果能够最终输出:

tf.Tensor(
[[19 22]
[43 50]], shape=(2, 2), dtype=int32)
说明 TensorFlow 已安装成功。运行途中可能会输出一些 TensorFlow 的提示信息,属于正常现象。

导入 TensorFlow 时部分可能出现的错误信息及解决方案

如果你在 Windows 下安装了 TensorFlow 2.1 正式版,可能会在导入 TensorFlow 时出现 DLL 载入错误 。此时安装 Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019 即可正常使用。

如果你的 CPU 年代比较久远或型号较为低端(例如,英特尔的 Atom 系列处理器),可能会在导入 TensorFlow 时直接崩溃。这是由于 TensorFlow 在版本 1.6 及之后,在官方编译版本中默认加入了 AVX 指令集。如果你的 CPU 不支持 AVX 指令集就会报错(你可以在 Windows 下使用 CPU-Z,或在 Linux 下使用 cat /proc/cpuinfo 查看当前 CPU 的指令集支持)。此时,建议结合自己的软硬件环境,使用社区编译版本进行安装,例如 GitHub 上的 yaroslavvb/tensorflow-community-wheels 。截至 2020 年 6 月,这个 Issue 里包含了去除 AVX 后,Ubuntu 下编译的最新版 TensorFlow。如果你的动手能力较强,也可以考虑在自己的平台下重新编译 TensorFlow。关于 CPU 指令集的更多内容可参考 “TensorFlow 性能优化” 一章的 “使用针对特定 CPU 指令集优化的 TensorFlow” 一节 。

此处使用的是 Python 语言,关于 Python 语言的入门教程可以参考 runoob 网站的 Python 3 教程 或 廖雪峰的 Python 教程 ,本手册之后将默认读者拥有 Python 语言的基本知识。不用紧张,Python 语言易于上手,而 TensorFlow 本身也不会用到 Python 语言的太多高级特性。

IDE 设置
对于机器学习的研究者和从业者,建议使用 PyCharm 作为 Python 开发的 IDE。

在新建项目时,你需要选定项目的 Python Interpreter,也就是用怎样的 Python 环境来运行你的项目。在安装部分,你所建立的每个 Conda 虚拟环境其实都有一个自己独立的 Python Interpreter,你只需要将它们添加进来即可。选择 “Add”,并在接下来的窗口选择 “Existing Environment”,在 Interpreter 处选择 Anaconda安装目录/envs/所需要添加的Conda环境名字/python.exe (Linux 下无 .exe 后缀)并点击 “OK” 即可。如果选中了 “Make available to all projects”,则在所有项目中都可以选择该 Python Interpreter。注意,在 Windows 下 Anaconda 的默认安装目录比较特殊,一般为 C:\Users\用户名\Anaconda3\ 或 C:\Users\用户名\AppData\Local\Continuum\anaconda3 。此处 AppData 是隐藏文件夹。 TensorFlow 的前身是 DistBelief。

对于 TensorFlow 开发而言,PyCharm 的 Professonal 版本非常有用的一个特性是 远程调试 (Remote Debugging)。当你编写程序的终端机性能有限,但又有一台可远程 ssh 访问的高性能计算机(一般具有高性能 GPU)时,远程调试功能可以让你在终端机编写程序的同时,在远程计算机上调试和运行程序(尤其是训练模型)。你在终端机上对代码和数据的修改可以自动同步到远程机,在实际使用的过程中如同在远程机上编写程序一般,与串流游戏有异曲同工之妙。不过远程调试对网络的稳定性要求高,如果需要长时间训练模型,建议登录远程机终端直接训练模型(Linux 下可以结合 nohup 命令 1 ,让进程在后端运行,不受终端退出的影响)。远程调试功能的具体配置步骤见 PyCharm 文档 。

小技巧

如果你是学生并有.edu 结尾的邮箱的话,可以在 这里 申请 PyCharm 的免费 Professional 版本授权。

对于 TensorFlow 及深度学习的业余爱好者或者初学者, Visual Studio Code 或者一些在线的交互式 Python 环境(比如免费的 Google Colab )也是不错的选择。Colab 的使用方式可参考 附录 。

警告

如果你使用的是旧版本的 PyCharm ,可能会在安装 TensorFlow 2 后出现部分代码自动补全功能丧失的问题。升级到新版的 PyCharm (2019.3 及以后版本)即可解决这一问题。

1
关于 nohup 命令可参考 https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/

TensorFlow 所需的硬件配置 *
提示

对于学习而言,TensorFlow 的硬件门槛并不高。甚至,借助 免费 或 灵活 的云端计算资源,只要你有一台能上网的电脑,就能够熟练掌握 TensorFlow!

在很多人的刻板印象中,TensorFlow 乃至深度学习是一件非常 “吃硬件” 的事情,以至于一接触 TensorFlow,第一件事情可能就是想如何升级自己的电脑硬件。不过,TensorFlow 所需的硬件配置很大程度是视任务和使用环境而定的:

对于 TensorFlow 初学者,无需硬件升级也可以很好地学习和掌握 TensorFlow。本手册中的大部分教学示例,大部分当前主流的个人电脑(即使没有 GPU)均可胜任,无需添置其他硬件设备。对于本手册中部分计算量较大的示例(例如 在 cats_vs_dogs 数据集上训练 CNN 图像分类 ),一块主流的 NVIDIA GPU 会大幅加速训练。如果自己的个人电脑难以胜任,可以考虑在云端(例如 免费的 Colab )进行模型训练。

对于参加数据科学竞赛(比如 Kaggle)或者经常在本机进行训练的个人爱好者或开发者,一块高性能的 NVIDIA GPU 往往是必要的。CUDA 核心数和显存大小是决定显卡机器学习性能的两个关键参数,前者决定训练速度,后者决定可以训练多大的模型以及训练时的最大 Batch Size,对于较大规模的训练而言尤其敏感。

对于前沿的机器学习研究(尤其是计算机视觉和自然语言处理领域),多 GPU 并行训练是标准配置。为了快速迭代实验结果以及训练更大规模的模型以提升性能,4 卡、8 卡或更高的 GPU 数量是常态。

作为参考,笔者给出截至本手册撰写时,自己所在工作环境的一些硬件配置:

笔者写作本书的示例代码时,除了分布式和云端训练相关章节,其他部分均使用一台 Intel i5 处理器,16GB DDR3 内存的普通台式机(未使用 GPU)在本地开发测试,部分计算量较大的模型使用了一块淘宝上 180 元购买的 NVIDIA P106-90 (单卡 3GB 显存)矿卡进行训练;

在笔者的研究工作中,长年使用一块 NVIDIA GTX 1060 (单卡 6GB 显存)在本地环境进行模型的基础开发和调试;

笔者所在的实验室使用一台 4 块 NVIDIA GTX 1080 Ti (单卡 11GB 显存)并行的工作站和一台 10 块 NVIDIA GTX 1080 Ti (单卡 11GB 显存)并行的服务器进行前沿计算机视觉模型的训练;

笔者合作过的公司使用 8 块 NVIDIA Tesla V100 (单卡 32GB 显存)并行的服务器进行前沿自然语言处理(如大规模机器翻译)模型的训练。

尽管科研机构或公司使用的计算硬件配置堪称豪华,不过与其他前沿科研领域(例如生物)动辄几十上百万的仪器试剂费用相比,依然不算太贵(毕竟一台六七万至二三十万的深度学习服务器就可以供数位研究者使用很长时间)。因此,机器学习相对而言还是十分平易近人的。

关于深度学习工作站的具体配置,由于硬件行情更新较快,故不在此列出具体配置,推荐关注 知乎问题 - 如何配置一台适用于深度学习的工作站? ,并结合最新市场情况进行配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值