Tensorflow
发布人:张子卓  发布时间:2019-12-12   浏览次数:830

官方网站链接:https://tensorflow.google.cn/


TensorFlow是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief


Tensorflow拥有多层级结构,可部署于各类服务器、PC终端和网页并支持GPUTPU高性能数值计算,被广泛应用于谷歌内部的产品开发和各领域的科学研究。


TensorFlow由谷歌人工智能团队谷歌大脑Google Brain)开发和维护,拥有包括TensorFlow HubTensorFlow LiteTensorFlow Research Cloud在内的多个项目以及各类应用程序接口Application Programming Interface, API)。


2015119日起,TensorFlow依据阿帕奇授权协议Apache 2.0 open source license开放源代码。


安装


TensorFlow支持多种客户端语言下的安装和运行。截至版本1.12.0,绑定完成并支持版本兼容运行的语言为CPython,其它(试验性)绑定完成的语言为JavaScriptC++JavaGoSwift,依然处于开发阶段的包括C#HaskellJuliaRubyRustScala


Python

 TensorFlow提供Python语言下的四个不同版本:CPU版本(tensorflow)、包含GPU加速的版本(tensorflow-gpu),以及它们的每日编译版本(tf-nightlytf-nightly-gpu)。TensorFlowPython版本支持Ubuntu 16.04Windows 7macOS 10.12.6 SierraRaspbian 9.0及对应的更高版本,其中macOS版不包含GPU加速 [6]  。安装PythonTensorFlow可以使用模块管理工具pip/pip3  anaconda并在终端直接运行。

1

2

pip install tensorflow

conda install -c conda-forge tensorflow

此外PythonTensorFlow也可以使用Docker安装 

1

2

3

4

5

6

7

docker pull tensorflow/tensorflow:latest

可用的tag包括latestnightlyversion

# docker镜像文件:https://hub.docker.com/r/tensorflow/tensorflow/tags/

docker run -it -p 8888:8888 tensorflow/tensorflow:latest

# dock下运行jupyter notebook

docker run -it tensorflow/tensorflow bash

启用编译了tensorflowbash环境

C

TensorFlow提供C语言下的API用于构建其它语言的API,支持x86-64下的Linux类系统和macOS 10.12.6 Sierra或其更高版本,macOS版不包含GPU加速。安装过程如下   :

下载TensorFlow预编译的C文件到本地系统路径(通常为/usr/local/lib)并解压缩。

1

sudo tar -xz libtensorflow.tar.gz -C /usr/local

使用ldconfig编译链接

1

sudo ldconfig

此外用户也可在其它路径解压文件并手动编译链接。

1

2

3

4

5

6

# Linux

export LIBRARY_PATH=$LIBRARY_PATH:~/mydir/lib

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/mydir/lib

# MacOS

export LIBRARY_PATH=$LIBRARY_PATH:~/mydir/lib

export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:~/mydir/lib

编译C接口时需确保本地的C编译器(例如gcc)能够访问TensorFlow 

配置GPU

TensorFlow支持在LinuxWindow系统下使用统一计算架构(Compute Unified Device Architecture, CUDA)高于3.5NVIDIA GPU。配置GPU时要求系统有NVIDIA GPU驱动384.x及以上版本、CUDA ToolkitCUPTICUDA Profiling Tools Interface9.0版本、cuDNN SDK7.2以上版本。可选配置包括NCCL 2.2用于多GPU支持、TensorRT 4.0用于TensorFlow模型优化 [10]  

Linux下配置GPU时,将CUDA ToolkitCUPTI的路径加入$LD_LIBRARY_PATH环境变量即可。对于CUDA3.0或其它版本的NVIDIA程序,需要从源文件编译TensorFlow。对Windows下的GPU配置,需要将CUDACUPTIcuDNN的安装路径加入%PATH%环境变量,在DOS终端有如下操作  :

1

2

3

C:\> SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin;%PATH%

C:\> SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\extras\CUPTI\libx64;%PATH%

C:\> SET PATH=C:\tools\cuda\bin;%PATH%

Linux系统下使用docker安装的PythonTensorFlow也可配置GPU加速且无需CUDA Toolkit  

1

2

3

4

5

6

7

8

确认GPU状态

lspci | grep -i nvidia

导入GPU加速的TensorFlow镜像文件

docker pull tensorflow/tensorflow:latest-gpu

验证安装

docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

启用bash环境

docker run --runtime=nvidia -it tensorflow/tensorflow:latest-gpu bash

版本兼容性

 TensorFlow的公共API版本号使用语义化版本2.0标准 ,包括主版本号.次版本号.修订号,其中主版本号的更改不是向下兼容的,已保存的TensorFlow工作可能需迁移到新的版本; 次版本号的更改包含向下兼容的性能提升;修订号的更改是向下兼容的问题修正。

TensorFlow支持版本兼容的部分包括协议缓冲区文件、所有的C接口、Python接口中的tensorflow模块以及除tf.contrib和其它私有函数外的所有子模块、Python函数和类。更新不支持版本兼容的部分为:包含“试验性(experimental)”字段的组件、使用除CPython外其它语言开发的TensorFlow API、以GraphDef形式保存的工作、浮点数值特定位的计算精度、随机数、错误和错误消息。其中GraphDef拥有与TensorFlow相独立的版本号,当TensorFlow的更新放弃对某一GraphDef版本的支持后,可能有相关工具帮助用户将GraphDef转化为受支持的版本。需要指出,尽管 GraphDef的版本机制与TensorFlow相独立,但对GraphDef的更改仍受限于语义版本控制,即只能在TensorFlow主版本号之间移除或更改功能。此外,修订版本之间实施GraphDef的向前兼容 



 
copyright@2022长安大学 | 高性能计算平台