TensorFlow 官方解读:如何在多系统和网络拓扑中构建高性能模型

大数据

这个文档和附带的脚本详细介绍了如何构建针对各种系统和网络拓扑的高性能可拓展模型。这个技术在本文档中用了一些低级的 Tensorflow Python 基元。在未来,这些技术将被并入高级 API。

输入管道

性能指南阐述了如何诊断输入管道可能存在的问题及其最佳解决方法。在使用大量输入和每秒更高的采样处理中我们发现 tf.FIFOQueue 和 tf.train.queue_runner 无法使用当前多个 GPU 生成饱和,例如在使用 AlexNet 训练 ImageNet 时。这是因为使用了 Python 线程作为底层实现,而 Python 线程的开销太大了。

我们在脚本中采用的另一种方法是通过 Tensorflow 中的本机并行构建输入管道。我们的方法主要由如下 3 个阶段组成:

I/O 读取:从磁盘中选择和读取图像文件。

图像处理:将图像记录解码为像素、预处理并生成最小批量。

CPU 到 GPU 的数据传输:将图像从 CPU 传输至 GPU。

通过利用 data_flow_ops.StagingArea,每个阶段的主要部分与其他阶段并行执行。StagingArea 是一个像队列(queue)一样且类似于 tf.FIFOQueue 的运算符。不同之处在于 StagingArea 提供了更简单的功能且可在 CPU 和 GPU 中与其他阶段并行执行。将输入管道拆分为 3 个独立并行操作的阶段,并且这是可扩展的,充分利用大型的多核环境。本节的余下部分将详细介绍每个阶段以及 data_flow_ops.StagingArea 的使用细节。

并行 I/O 读取

data_flow_ops.RecordInput 用于磁盘的并行读取。给定一个代表 TFRecords 的输入文件列表,RecordInput 可使用后台线程连续读取记录。这些记录被放置在大型的内部池中,当这个池加载量达到其容量的一半时,会有相应的张量输出。这个操作有其内部线程,线程由占用最少的 CPU 资源的 I/O 时间主导,这就允许它可与模型的其余部分并行运行。

并行图像处理

从 RecordInput 读取图像后,它们作为张量被传递至图像处理管道。为了更方便解释图像处理管道,假设输入管道的目标是 8 个批量大小为 256(每个 GPU 32 个)GPU。256 个图像记录的读取和处理是独立并行的。从图中 256 个 RecordInput 读操作开始,每个读取操作后都有一个与之相匹配的图像预处理操作,这些操作是彼此独立和并行执行的。这些图像预处理操作包括诸如图像解码、失真和调整大小。

当图像通过预处理器后,它们被联接成 8 个大小为 32 的张量。为了达到这一目的,使用了 tf.parallel_stack,而不是 tf.concat ,目的作为单一操作被实现,且在将它们联结在一起之前需要所有输入准备就绪。tf.parallel_stack 将未初始化的张量作为输出,并且在有张量输入时,每个输入的张量被写入输出张量的指定部分。

当所有的张量完成输入时,输出张量在图中传递。这有效隐藏了由于产生所有输入张量的长尾(long tail)而导致的内存延迟。

并行从 CPU 到 GPU 的数据传输

继续假设目标是批量大小为 256(每个 GPU 32 个)8 个 GPU,一旦输入图像被处理完并被 CPU 联接后,我们将得到 8 个批量大小为 32 的张量。Tensorflow 可以使一个设备的张量直接用在任何其他设备上。为使张量在任何设备中可用,Tensorflow 插入了隐式副本。在张量被实际使用之前,会在设备之间调度副本运行。一旦副本无法按时完成运行,需要这些张量的计算将会停止并且导致性能下降。

在此实现中,data_flow_ops.StagingArea 用于明确排定并行副本。最终的结果是当 GPU 上的计算开始时,所有张量已可用。

软件管道

由于所有的阶段都可以在不同的处理器下运行,在它们之间使用 data_flow_ops.StagingArea 可使其并行运行。StagingArea 是一个与 tf.FIFOQueue  相似且像队列(queue)一样的运算符,tf.FIFOQueue  提供更简单的功能可在 CPU 和 GPU 中被执行。

在模型开始运行所有的阶段之前,输入管道阶段将被预热,以将其间的分段缓存区置于一组数据之间。在每个运行阶段中,开始时从分段缓冲区中读取一组数据,并在最后将该组数据推送。

例如有 A、B、C 三个阶段,这之间就有两个分段区域 S1 和 S2。在预热时,我们运行:

Warm up: Step 1: A0 Step 2: A1  B0 Actual execution: Step 3: A2  B1  C0 Step 4: A3  B2  C1 Step 5: A4  B3  C2

预热结束之后,S1 和 S2 各有一组数据。对于实际执行的每个步骤,会计算一组来自分段区域的数据,同时分段区域会添加一组新数据。

此方案的好处是:

所有的阶段都是非阻塞的,因为预热后分段区域总会有一组数据存在。

每个阶段都可以并行处理,因为它们可以立即启动。

分段缓存区具有固定的内存开销,并至多有一组额外的数据。

运行一个步骤的所有阶段只需要调用 singlesession.run(),这使得分析和调试更加容易。

构建高性能模型的最佳实践

以下收集的是一些额外的最佳实践,可以改善模型性能,增加模型灵活性。

使用 NHWC 和 NCHW 建模

CNN 使用的绝大多数 Tensorflow 操作都支持 NHWC 和 NCHW 数据格式。在 GPU 中,NCHW 更快;但是在 CPU 中,NHWC 只是偶尔更快。

用户喜欢...

大数据和云计算的冲突

最近,IT行业专家在参加相关会议时发现了一个隐藏的主题,那就是虽然很多人将关注的重点转移到基于云计算的架构...


智能家居为何需要大数据, 大数据在智能家居领域的贡献是什么?

大数据分为大数据存储和大数据分析,属于两种截然不同的计算机技术领域,大数据存储用于大数据分析。大数据存储重点在于研发可以扩展至PB甚至EB级别的数据存储平台;大数据分析关注在...


【干货】TensorFlow的55个经典案例

本文是TensorFlow实现流行机器学习算法的教程汇集,目标是让读者可以轻松通过清晰简明的案例深入了解 TensorFlow。这些案例适合那些想要实现一些 TensorFlow 案例的初学者。本教程包含还包含笔...


一步一步学用Tensorflow构建卷积神经网络

摘要: 本文主要和大家分享如何使用Tensorflow从头开始构建和训练卷积神经网络。这样就可以将这个知识作为一个构建块来创造有趣的深度学习应用程序了。 0. 简介 在过去,我写的主要都是...


TensorFlow实现神经网络入门篇

如果你一直关注数据科学/机器学习,你就不能错过深度学习和神经网络的热潮。互联网公司正在寻找这方面的人,而且从竞赛到开源项目,都有巨额奖金。 如果你对深度学习所提供的前景感...


陆金所计葵生:深度解析大数据和AI对未来金融影响

陆金所联席董事长兼CEO计葵生在北京大学数字金融研究中心「数字金融的中国时代」第二届年会上发表主题演讲,深...


23种深度学习库排行榜:TensorFlow、Keras、caffe占据前三

作者:John.Lau,来源: 大数据与云计算核心技术 我们对23种用于数据科学的开源深度学习库作了排名。这番排名基于权重一样大小的三个指标:Github上的活动、Stack Overflow上的活动以及谷歌搜...


大数据时代:十大最热门的大数据技术

随着大数据分析市场快速渗透到各行各业,哪些大数据技术是刚需?哪些技术有极大的潜在价值?根据弗雷斯特研究公司发布的指数,这里给出最热的十个大数据技术。 1、预测分析 预测分析是...


乐橙视频云锁闪耀发布,让家与你不再有距离

大华乐橙在深圳会展中心召开了2017 “锁定天下”乐橙智能锁新品发布会,重磅发布了乐橙首款视频云锁。本次发布会...


Nutanix通过Cloudera Enterprise认证,携手打造精简大数据企业云

企业云计算领导者Nutanix今日在2017 .NEXT用户大会(北京站)上宣布,其企业云平台软件已通过Cloudera技术认证计划(...


深度学习框架tensorflow/paddle/mxnet的实战性能对比测试

在此选用了业界主流的三种深度学习框架Paddle,TensorFlow和Mxnet,对它们分别作了实战评估。用于测试的模型包括基于logistic回归模型和LSTM模型。 作为当下最热门的话题之一,Google,Baidu、Fa...


超过300亿美元的工业级无人机市场将呈爆发式增长, 上海无人机展会引领行业发展

当消费级无人机市场已成为一片红海之际,各大无人机厂商都在工业级无人机领域发力以争夺高端行业应用的市场,...


浪潮与百度联合发布ABC一体机 推进智慧计算的行业落地

在9月举办的2017 百度云智峰会 ABC SUMMIT 上,百度与浪潮共同发布了 ABC 一体机,双方将共同推动人工智能、大数据、云...


IDC发布《IDC MarketScape:中国大数据管理平台厂商评估,2017》

中国大数据市场整体热度逐步降低,数据应用开始落地,而应用的前提是建设统一的大数据管理平台。IDC调研了几十...


中科院国科创新与深圳福田区一揽子战略合作落子于CEEC

北京国科金服科技金融信息服务有限公司(以下称“国科金服”)与中国国际消费电子展示交易中心(以下称“CEEC”...


CA Technologies宣布为IBM z14提供支持交付可信任的系统

CA Technologies (NASDAQ:CA)今日宣布,CA关键的大型主机解决方案为IBM z14提供支持。CA的解决方案利用全新的z14平台,大大降...