谷歌发布深度学习库TensorFlow Fold,支持动态计算图

开发 开发工具 深度学习
在一些情况下,不同的输入数据需要不同的计算图,通常这些计算图不能够批存储在一起,导致处理器、存储器以及缓存利用率低。今天我们发布 TensorFlow Fold 来解决这些困难。

在大部分的机器学习过程中,用于训练 (training) 和推理 (inference) 的数据都需要进行数据的预处理,通过预处理将不同的输入数据(例如图像)规整至相同尺寸并进行批(batch)存储。这一步使高性能的深度学习库,例如 TensorFlow,可以并行的处理批存储中的所有输入,且以相同的计算图(computation graph)进行处理。批处理(Batching)利用现代 GPU 和多核 CPU 的单指令流多数据流(SIMD)性能来加速运算执行。但是,当输入数据的尺寸和结构变化时会产生诸多问题,例如在自然语言理解中的解析树(parse tree)、源代码中的抽象语法树(abstract syntax tree)、网页的文档树(DOM tree)等。在这些情况下,不同的输入数据需要不同的计算图,通常这些计算图不能够批存储在一起,导致处理器、存储器以及缓存利用率低。

[[182852]]

今天我们发布 TensorFlow Fold 来解决这些困难。TensorFlow Fold 使得处理不同数据尺寸和结构的深度学习模型更容易实现。不仅如此,TensorFlow Fold 将批处理的优势赋予这些模型,使得这些模型在 CPU 上的运行速度有超过 10 倍的提升,在 GPU 上的运行有超过 100 倍的提升(相比于其他实现方式)。这一提升来源于动态批存储(dynamic batching)技术,在我们的论文中有详细介绍(Deep Learning with Dynamic Computation Graphs)。

 

 

以上动图演示了动态批处理运行的递归神经网络。带有同样的颜色的运算聚成一批,这使得 TensorFlow 能够更快的运行它们。Embed 运算将单词转换为向量表征。完全连接(fully connected,FC)运算结合词向量,从而形成段落向量表征。网络的输出是一个完整语句的向量表征。尽管上图只演示了一个语句解析树,但在多种任意形状与大小的解析树上,这个网络同样也能运行并实现批处理运算。

TensorFlow Fold 库首先会为每个输入建立一个独立的计算图。

因为单独的输入可能有不同的大小和结构,计算图也可能是这样。动态批处理自动结合这些图,从而获取在输入内以及整个输入进行批处理机会的优势,并且插入额外的指令在批处理操作之间移动数据。(查看技术细节请参考论文)

想要了解更多,也可以查看我们的 github 网址:https://github.com/tensorflow/fold。我们希望 TensorFlow Fold 能够帮助研究人员与从业者在 TensorFlow 中部署动态计算的神经网络。

论文:DEEP LEARNING WITH DYNAMIC COMPUTATION GRAPHS

DEEP LEARNING WITH DYNAMIC COMPUTATION GRAPHS

摘要:在包括自然语言处理(解析树)与化学信息学(分子图)在内的多个领域中,在图结构上进行计算的神经网络是解决问题的天然方式。然而,因为每个输入的计算图有不同的形状与大小,所以网络通常不能直接进行批训练或推断。它们也难以部署到流行的深度学习库中,因为这些库是基于静态数据流图的。我们引入了一种称之为动态批处理(Dynamic Batching) 的技术,它不仅能批处理不同输入图(形状也不类似)之间的运算,也能批处理单个输入图内的不同节点。该技术使得我们能够创造静态图、使用流行的库、模仿任意形状与大小的动态计算图。我们进一步展现了组成区块的高层次库,从而简化了创造动态图模型的过程。使用这一库,我们论证了文献中多种模型的简洁且明智的批处理并行实现。

原文:https://research.googleblog.com/2017/02/announcing-tensorflow-fold-deep.html

【本文是51CTO专栏机构机器之心的原创译文,微信公众号“机器之心( id: almosthuman2014)”】

戳这里,看该作者更多好文

责任编辑:赵宁宁 来源: 51CTO专栏
相关推荐

2017-03-01 19:58:00

深度学习TensorFlow

2015-04-16 13:38:26

GPU计算深度学习NVIDIA

2021-07-06 06:26:43

动态计算图GPU深度学习

2017-05-03 22:05:48

深度学习候选采样深度学习库

2018-04-11 17:50:14

深度学习PyTorchTensorFlow

2018-01-26 14:55:43

TensorFlow深度学习演进

2021-05-13 15:23:31

人工智能深度学习

2016-02-18 10:32:39

谷歌TensorFlow 机器学习

2024-02-07 17:08:42

2017-12-01 15:24:04

TensorFlow深度学习教程

2024-03-26 09:11:13

TensorFlow深度学习Pipeline

2021-11-19 17:18:39

谷歌TensorFlow技术

2017-08-16 10:57:52

深度学习TensorFlowNLP

2021-11-27 05:03:09

框架深度学习

2009-04-10 09:15:29

Googlechrome移动OS

2018-01-27 21:26:46

谷歌GitHub功能

2017-05-22 13:15:45

TensorFlow深度学习

2017-08-10 15:31:57

Apache Spar TensorFlow

2022-11-13 08:11:03

TensorFlow人工智能开源

2018-04-22 00:08:24

谷歌JavaScript 应用程序
点赞
收藏

51CTO技术栈公众号