内容简介:知道创宇IA-Lab 岳永鹏
知道创宇IA-Lab 岳永鹏
TensorFlow™ 是一个开放源代码软件库,用于进行高性能数值计算。借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU、GPU、TPU)和设备(桌面设备、服务器集群、移动设备、边缘设备等)。 TensorFlow™ 最初是由 Google Brain 团队(隶属于 Google 的 AI 部门)中的研究人员和工程师开发的,可为机器学习和深度学习提供强有力支持,并且其灵活的数值计算核心广泛应用于许多其他科学领域。目前 TensorFlow™ 有适用于CPU(TensorFlow CPU)和GPU(TensorFlow GPU)的两种安装选择。 有区别于通过pip安装TensorFlow CPU版本,安装TensorFlow GPU还需要更多的底层依赖。
$ pip install tensorflow-gpu==1.12
TensorFlow GPU主要是通过NVIDIA提供的CUDA和cuDNN存取GPU,从而实现比CPU快数十倍的深度学习训练加速能力。本文结合知道创宇IA实验室在实际的业务生产中积累的经验,主要介绍TensorFlow GPU版本的安装和使用。
名词解释
在进入正题之前,首先详细介绍一下其所涉及的几个名词。
- Graphic Processing Unit(GPU):用于个人计算机、工作站和服务器的专用图像设备。又名显示卡或显卡,目前主要的生产厂商是NVIDA生产的N卡和AMD 生产的A卡。相比于由几个核组成CPU专注于顺序串行处理,GPU 则拥有一个由数以千计的更小、更高效的核组成的大规模并行计算架构,其更擅长并行计算。
- Compute Unified Device Architecture(CUDA):它是NVIDIA推出的能够解决GPU复杂计算问题的并行计算架构。目前NVIDIA面向分布式计算的显卡架构的演变已经历了Tesla、Fermi、Kepler、Maxwell、Pascal、Volta(以物理学家名字命名),且随着架构的演变其浮点计算的能力也越来越强。在NVIDIA Tesla常以第一个字母来命名其产品,比如Tesla M40、Tesla P100、Tesla V100。
- CUDA Toolkit:CUDA Toolkit是为创建高性能GPU加速应用程序提供了开发环境。目前支持C,C ++,Fortran,Python和MATLAB的编程,编译器的名称是nvcc。
- NVIDIA GPU drivers(显卡驱动):它是用来驱动NVIDIA显卡所对应的软件程序。
- CUDA Deep Neural Network Library(cuDNN):NVIDIA打造的针对深度神经网络的加速库,是一个用于深层神经网络的GPU加速库。如果你要用GPU训练模型,cuDNN不是必须的,但是一般会采用这个加速库。
GPU支持
安装TensorFlow GPU相应的硬件和软件(驱动和库)支持。TensorFlow™ 最新版本(1.12)对硬件:
- NVIDIA® GPU card with CUDA® Compute Capability 3.5 or higher.
具有计算能力3.5或更高版本的NVIDIA®GPU卡。
对软件的要求:
- NVIDIA® GPU drivers —CUDA 9.0 requires 384.x or higher.
NVIDIA® GPU 驱动程序 -CUDA 9.0需要384.x或更高版本。
- CUDA® Toolkit —TensorFlow supports CUDA 9.0.
CUDA® Toolkit- TensorFlow支持CUDA 9.0。
- CUPTI ships with the CUDA Toolkit.
CUPTI附带CUDA工具包。
- cuDNN SDK (> = 7.2)
NVIDIA深度神经网络的加速库(版本大于等于7.2)
硬件支持
从TensorFlow 所需要软件CUDA和CUDA的名词描述可以得出TensorFlow仅仅支持N卡,如果计算机属于A卡,则只能安装TensorFlow CPU版本,或者用AMD的ROCm GPU平台来安装GPU 版本的TensorFlow。本文重点讲以最为流行的N卡支持CUDA为重点讲解。使用lspci命令可以查看机器的NVIDIA显卡配置
02:00.0 3D controller: NVIDIA Corporation GM200GL [Tesla M40] (rev a1)
82:00.0 3D controller: NVIDIA Corporation GM200GL [Tesla M40] (rev a1)
从显示结果看当前机器的GPU卡的型号是NVIDIA Tesla M40。当然,也并非所有的N卡都支持TensorFlow GPU 版本,其还要求GPU具有相应的计算能力,比如TensorFlow最新版1.12就要求计算能力大于3.5。NVIDIA GPU卡的计算能力可以通过其 官网列表 查询得到。目前NVIDIA产品主要系列有:
- GeForce, 面向普通大众用户,包括GTX和TITAN系列,价格比较亲民,用于科学计算精度稍低。GTX桌面版750以上、笔记本930M以上和全系的TITAN X计算能力均大于等于5。
- Tesla,面向企业部署而设计的用于大规模并行计算的产品,包含有F(Fermi 架构)、K(Kepler架构)、M(Maxwell架构)、P(Pascal架构)和V(Volta架构)系列产品。目前除Tesla K10以外,K、M、P、V系列的产品的计算能力均大于5。Tesla系列与GeForce 系列的TITAN X相比,其单机长期上线运行,稳定性更好。
- Quadro,面向专业的绘图设计,其分为桌面版和手机版两个系列。
- Terga/Jetson, 面向移动和嵌入式设备。
软件支持
TensorFlow官方文档会指定每一个TensorFlow GPU版本所依赖的 python 、cuDNN、GPU显卡驱动和CUDA的版本。在安装的时候一定注意版本的对应关系,若Python、cuDNN、GPU显卡驱动和CUDA的版本有低于TensorFlow GPU 要求的版本,在安装和使用过程中会出现错误。下表是TensorFlow GPU在 Linux 系统下版本对应表。
TensorFlow GPU | python | cuDNN | CUDA |
1.12 | 2.7、3.3-3.6 | >=7.2 | 9 |
1.11 | 2.7、3.3-3.6 | >=7.2 | 9 |
1.10 | 2.7、3.3-3.6 | 7 | 9 |
1.9.0 | 2.7、3.3-3.6 | 7 | 9 |
1.8.0 | 2.7、3.3-3.6 | 7 | 9 |
1.7.0 | 2.7、3.3-3.6 | 7 | 9 |
1.6.0 | 2.7、3.3-3.6 | 7 | 9 |
1.5.0 | 2.7、3.3-3.6 | 7 | 9 |
1.4.0 | 2.7、3.3-3.6 | 6 | 8 |
1.3.0 | 2.7、3.3-3.6 | 6 | 8 |
1.2.0 | 2.7、3.3-3.6 | 5.1 | 8 |
1.1.0 | 2.7、3.3-3.6 | 5.1 | 8 |
1.0.0 | 2.7、3.3-3.6 | 5.1 | 8 |
TensorFlow GPU 安装过程
以服务器的NVIDIA Tesla M40为例,在操作系统Centos 7上安装最新版本TensorFlow GPU 1.12。
GPU 驱动安装
根据TensorFlow 1.12 GPU支持要求的NVIDIA驱动版本,从 NVIDIA网站 选择对应的型号和操作系统,CUDA Toolkit版本,下载驱动文件,如NVIDIA-Linux-x86_64-384.145.run。
运行驱动文件,根据提示完成安装。
安装完成以后通过NVIDIA命令工具nvidia-smi查看GPU情况
从上图可以看到,NVIDIA GPU显卡驱动型号384.145。当有TensorFlow GPU任务运行的时候,使用该命令也可以查看GPU的内存使用情况,也可以作为检查TensorFlow是CPU运行还是GPU运行。
CUDA 安装
从 NVIDIA网站 选择相应的驱动版本,选择Linux,x86_64,CentOS 7,下载rpm(local)驱动文件。
根据安装指导安装
$ sudo yum clean all
$ sudo yum install cuda
配置系统环境(/etc/profile)或者当前用户的环境(~/.bashrc)。
export CUDA_HOME=/usr/local/cuda-9.0/
export PATH=$PATH:$CUDA_HOME/bin
Source配置文件后,查看nvcc版本,若如下图所示则说明CUDA安装成功。到此,也就配置好了CUDA C/C++的编译环境,可以使用nvcc编译.cu的文件。
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176
cuDNN 安装
从 NVIDIA网站 下载cuDNN 安装包,根据GPU及CUDA版本选择对应cuDNN版本,下载cuDNN v7.4.1 for CUDA9.0。
解压拷贝到CUDA安装目录,需要注意的是在/usr/local 目录下存在cuda和cuda-9.0两个目录,一定要拷贝到cuda目录下。
$ cp lib64/* /usr/local/cuda/lib64
安装TensorFlow
安装TensorFlow GPU就比较容易了,在启用Python不同的虚拟环境下,可以直接通过pip安装,国内的用户可以选择国内的豆瓣pip源。
验证TensorFlow GPU
启动python交互运行界面,导入TensorFlow模块,进行简单的验证。
>>> sess = tf.Session()
2018-11-21 16:02:44.949511: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Found device 0 with properties:
name: Tesla M40 major: 5 minor: 2 memoryClockRate(GHz): 1.112
2018-11-21 16:02:45.089993: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Found device 1 with properties:
name: Tesla M40 major: 5 minor: 2 memoryClockRate(GHz): 1.112
从输出的日志可以看到发现了两个GPU卡,则说明 TensorFlow GPU是安装成功的。
TensorFlow示例运行
TensorFlow GitHub官方仓库
下载相应的代码,可以直接运行samples里面实例。
欢迎关注我们的公众号
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Zookeeper详解-安装(四)
- CentOS安装MySQL详解
- Tomcat安装、配置、优化及负载均衡详解
- Mac中mongoDB的安装与卸载步骤详解
- 使用 LVS 实现负载均衡原理及安装配置详解
- 最简单的kubernetes HA安装方式-sealos详解
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
从界面到网络空间
(美)海姆 / 金吾伦/刘钢 / 上海科技教育出版社 / 2000-7 / 16.40元
计算机急剧改变了20世纪的生活。今天,我们凭借遍及全球的计算机网络加速了过去以广播、报纸和电视形式进行的交流。思想风驰电掣般在全球翻飞。仅在角落中潜伏着已完善的虚拟实在。在虚拟实在吕,我们能将自己沉浸于感官模拟,不仅对现实世界,也对假想世界。当我们开始在真实世界与虚拟世界之间转换时,迈克尔·海姆问,我们对实在的感觉如何改变?在〈从界面到网络空间〉中,海姆探讨了这一问题,以及信息时代其他哲学问题。他......一起来看看 《从界面到网络空间》 这本书的介绍吧!
RGB转16进制工具
RGB HEX 互转工具
UNIX 时间戳转换
UNIX 时间戳转换