炼数成金 门户 商业智能 TensorFlow 查看内容

谷歌发布TensorFlow Fold,支持动态计算图,GPU 增速 100 倍

2017-2-9 10:07| 发布者: 炼数成金_小数| 查看: 12712| 评论: 0|来自: 深度学习世界

摘要: 大多数机器学习中,用于训练和推理的数据需要经过预处理步骤,其中大量的输入(例如图像)被缩放到相同的尺寸,然后分批存储。这样,高性能深度学习库如 TensorFlow 等就可以并行地运行批存储中所有输入的相同计算图 ...

网络 工具 模型 存储 神经网络 Tensorflow

大多数机器学习中,用于训练和推理的数据需要经过预处理步骤,其中大量的输入(例如图像)被缩放到相同的尺寸,然后分批存储。这样,高性能深度学习库如 TensorFlow 等就可以并行地运行批存储中所有输入的相同计算图(computation graph)。批处理利用现代 GPU 和多核 CPU 的单指令多数据流(SIMD)性能来加快执行速度。然而,由于输入数据的大小和结构不同,例如自然语言理解中的分析树(parse trees),源代码中的抽象语法树(abstract syntax tree),网页的 DOM 树(DOM trees)等,这个过程存在许多问题。在这种情况下,计算图不同的输入不能直接地一起进行批处理,这导致处理器,存储器和缓存使用率不佳。

谷歌今天发布的 TensorFlow Fold 旨在解决这些挑战。TensorFlow Fold 使得处理不同数据大小和结构的深度学习模型更容易实现。此外,TensorFlow Fold 带来的好处是对这些模型进行批处理,与其他可替代的实现相比,在 CPU 上的速度提高了10倍以上,在 GPU 上的速度提高 100 倍。这是通过动态批处理(dynamic batching)实现的,具体请参阅我们的论文:Deep Learning with Dynamic Computation Graphs.
上面的动图显示了使用动态批处理运行的递归神经网络。相同颜色的操作被分为批,使得 TensorFlow 能够更快地运行它们。Embed 操作将词(words)转变为向量表示(vector representations)。完全连接(FC)操作将词向量(word vectors)组合形成短语向量表示。网络的输出是一个完整句子的向量表示。尽管上图只显示了句子的一个分析树(parse tree),但相同一个网络可以在任意形状或大小的多个分析树上运行及进行批处理操作。

TensorFlow Fold 库首先为每个输入构建成单独的计算图(computation graph)。因为每个输入可能具有不同的大小和结构,所以计算图也可能如此。动态批处理随后自动地组合这些流图,以利用机会在输入内和输入间进行批处理,并插入附加指令以在批处理操作之间移动数据。(具体技术细节请参阅论文)

我们希望 TensorFlow Fold 对在 TensorFlow 中使用动态计算图实现神经网络的研究人员和从业者有所帮助。了解更多:https://github.com/tensorflow/fold

论文:Deep Learning with Dynamic Computation Graphs
论文摘要:
在自然语言处理(分析树),化学信息学(分子图)等多个领域中,在图结构上进行计算的神经网络适合解决许多问题。然而,由于对每个输入,计算题具有不同的形状和大小,这样的网络不能直接支持批训练或推理。它们也难以在流行的深度学习库中实现,因为这些苦一般是基于静态数据流图的。我们提出一种称为动态批处理(Dynamic Batching)的技术,该技术不仅能在不同形状的输入图之间进行批处理,而且在同一输入图的不同节点之间也能批处理。该技术使得我们能够创建静态图,使用流行的库来模拟任意形状和大小的动态计算图。我们进一步提出了一个组成区块的高级库,以简化动态图模型的创建过程。使用这个库,我们证明了前人文献中的多种模型的简洁、并行的批处理实现。

欢迎加入本站公开兴趣群
商业智能与数据分析群
兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识
QQ群:81035754

鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

热门文章

     

    GMT+8, 2018-7-22 09:21 , Processed in 0.144925 second(s), 24 queries .