TensorFlow

TensorFlow 是一款先进的开源库,旨在开发和部署先进的机器学习应用程序。

什么是 Tensorflow

TensorFlow 是数据科学家、软件开发者和教育工作者主要使用的开源平台,用于使用数据流图形进行机器学习。图像中的节点代表数学运算,而图像边缘则代表节点间流动的多维数据阵列(张量)。这种灵活的架构允许将机器学习算法描述为相关运算的图形。可以在便携式设备、台式电脑和高端服务器等众多不同平台的 GPU、CPU 和 TPU 上训练和执行这些代码,而无需重写代码。这意味着各种背景的编程人员均可以使用相同的工具集进行协作,从而显著提高效率。该系统最初由 Google Brain 团队开发,用于研究机器学习和深度神经网络 (DNN),其通用性同样适用于其他各种领域。

TensorFlow 的工作原理

TensorFlow 工作流程由三个不同的部分定义,即数据预处理、构建模型和训练模型,从而进行预测。该框架将数据输入称为张量的多维数组,并以两种不同的方式执行。主要方法是构建一个计算图形来定义用于训练模型的数据流。第二种常用的更直观的方法是使用 Eager Execution,该方法遵循命令编程原则并立即评估操作。

使用 TensorFlow 架构,通常在台式电脑或数据中心完成训练。这两种情况下,均通过在 GPU 上放置张量来加快处理速度。然后,经过训练的模型可以在一系列平台上运行,从台式电脑到移动设备,然后一直到云端。

TensorFlow 还包含很多支持功能。例如,TensorBoard 允许用户以直观方式监控训练过程、底层计算图形和指标,以便调试运行以及评估模型性能。TensorBoard 是 Tensorflow 和 Keras 的统一可视化框架。

Keras 是在 TensorFlow 上运行的高级 API。Keras 通过提供用于构建常见用例模型的简化 API,进一步深化 TensorFlow 的抽象概念。API 背后的驱动理念是能够在更短的时间内将想法落实为结果。

TensorFlow 的优势

TensorFlow 可用于开发自然语言处理、图像识别、手写识别以及基于计算的不同模拟(例如偏微分方程)等各种任务模型。

TensorFlow 的主要优势在于其能够跨多个加速平台执行低级运算、自动计算梯度、生产级可扩展性和可互操作的图形导出。通过为 Keras 提供高级 API 和 Eager Execution,替代 TensorFlow 上的数据流范式,始终可以轻松便捷地编写代码。

作为 TensorFlow 的原始开发者,Google 仍然大力支持该库,并加快其发展速度。例如,Google 创建了一个在线中心,用于共享用户创建的许多不同模型。

TensorFlow 的特定业务用例

  • 图像处理和视频检测。飞机制造业巨头 Airbus 正在使用 TensorFlow 从卫星图像中提取和分析信息,为客户提供宝贵的实时信息。
  • 时间序列算法。Kakao 使用 TensorFlow 来预测网约车请求的完成率。
  • 强大的扩展能力。NERSC 使用 TensorFlow 将科学深度学习应用程序扩展至 27000 多块 NVIDIA V100 Tensor Core GPU。
  • 建模。PayPal 使用 TensorFlow 进行深度迁移学习并生成模型,能够识别复杂、临时变化的欺诈模式,同时还能通过加快客户识别流程的速度来改善合法客户的体验。
  • 文本识别。SwissCom 自定义构建的 TensorFlow 模型通过对文本进行分类以及在接听电话时确定客户意图来改善业务。
  • 推文优先级。Twitter 使用 TensorFlow 构建其 Ranked Timeline,确保用户即使关注数千名用户也不会错过重要推文。

TensorFlow 对您的重要意义

数据科学家
借助 TensorFlow 开发模型具有多种不同的可用途径,意味着您始终可以使用适合该工作的合适工具,更快地表达创新想法和新颖算法。其作为用于开发机器学习模型的常用库之一,在尝试复制作品时,通常很容易从以前的研究人员那里找到 TensorFlow 代码,从而避免浪费时间来编写样板代码和冗余代码。 

软件开发者
TensorFlow 可以在各种常见的硬件平台和操作环境中运行。随着 2019 年底 TensorFlow 2.0 的发布,在更多平台上部署 TensorFlow 模型变得更加简单。使用 TensorFlow 创建的模型的互操作性表明部署绝不是一项艰巨的任务。

TensorFlow 和 NVIDIA

图形处理器或 GPU 配备由数千个小型高效核心组成的大规模并行架构,可以同时启动数千个并行线程,能够强力支持计算密集型任务。

CPU 与 GPU 的对比。

十年前,研究人员发现 GPU 非常擅长矩阵运算和代数计算,而深度学习就十分依赖于这两种运算。

TensorFlow 在新款 NVIDIA Pascal GPU 上的运行速度可提升高达 50%,并且能够顺利跨 GPU 进行扩展。 如今,您训练模型的时间可以从几天缩短到几小时。

TensorFlow 使用优化的 C++ 和 NVIDIA® CUDA® 工具包编写,使模型能够在训练和推理时在 GPU 上运行,从而大幅提速。

TensorFlow GPU 支持需要多个驱动和库。为简化安装并避免库冲突,建议利用 GPU 支持的 TensorFlow Docker 镜像。此设置仅需要 NVIDIA GPU 驱动并且安装 NVIDIA Docker。用户可以从预配置了预训练模型和 TensorFlow 库支持的 NGC (NVIDIA GPU Cloud) 中提取容器。

面向开发者的 NVIDIA 深度学习

GPU 加速深度学习框架能够为设计和训练自定义深度神经网络带来灵活性,并为 Python 和 C/C++ 等常用编程语言提供编程接口。MXNet、PyTorch、TensorFlow 等广泛使用的深度学习框架依赖于 NVIDIA GPU 加速库,能够提供高性能的多 GPU 加速训练。

NVIDIA GPU 加速库。

NVIDIA GPU 加速的端到端数据科学

NVIDIA RAPIDS 开源软件库套件,基于 CUDA-X AI 而创建,使您完全能够在 GPU 上执行端到端数据科学和分析流程。此套件依靠 NVIDIA CUDA 基元进行低级别计算优化,但通过用户友好型 Python 接口实现了 GPU 并行化和高带宽显存速度。

借助 RAPIDSGPU DataFrame,数据可以通过一个类似 Pandas 的接口加载到 GPU 上,然后用于各种连接的机器学习和图形分析算法,而无需离开 GPU。这种级别的互操作性可通过 Apache Arrow 等库实现,并且可加速端到端流程(从数据准备到机器学习,再到深度学习)。

NVIDIA RAPIDS,GPU 加速的端到端数据科学。

RAPIDS 支持在许多热门数据科学库之间共享设备内存。这样可将数据保留在 GPU 上,并省去了来回复制主机内存的高昂成本。

热门数据科学库。

后续步骤