深度学习框架竞争激烈 TensorFlow也支持动态计算图
今晨 Google 官方发布消息,称 TensorFlow 支持动态计算图。
原文如下:
在大部分的机器学习中,用来训练和分析的数据需要经过一个预处理过程,输入的大量内容(例如图像)需要先缩放到相同的维度并分批堆栈。这使得像TensorFlow 这样的高性能深度学习程序库对所有分批堆栈的输入内容运行相同的运算图谱。批处理能力需要现代 GPU 的单指令多数据(SIMD)运算能力和多核 CPU 进行加速。然而,当输入数据的大小和结构不同时,则会出现很多问题领域,例如自然语言理解中的解析树、源代码中的抽象语法树、网页中的文档对象模型(DOM)树等等。在这些案例中,不同的输入有着不同的运算图谱,并不能直接进行批处理,结果则是处理器、内存和缓存利用率不佳。
现在,我们公开了 TensorFlow 文件包以解决这些问题。TensorFlow 文件包使得执行处理不同大小和结构数据的深度学习模型更为简单。此外,TensorFlow 文件包也为相应模型的批处理提供了优化,相比原有的执行模式,CPU 运算速度提高超过10倍,GPU 超过100倍。这是运用我们的文档“运用动态运算图谱的深度学习”中介绍的动态批处理实现的(Deep Learning with Dynamic Computation Graphs,https://openreview.net/pdf?id=ryrGawqex)。
这是使用动态批处理的递归神经网络运行的示意图。相同颜色的操作共同进行批处理,从而加速 TensorFlow 的运行。嵌入操作将词汇变成矢量形式。完全连接(FC)操作将词汇矢量变成短语矢量。这个网络输出的内容是整个句子的矢量形式。尽管示意图中只展示一个句子的解析树,相同的网络可以运行及批处理任意结构和大小的其它解析树。
TensorFlow 文件包将会首先为每个输入创建单独的运算图谱。因为不同的输入可能会有不同的大小和结构,运算图谱可能也是如此。接下来动态批处理将会自动将这些图谱进行组合从而发挥批处理在输入内和输入间的优势,并插入单独的指令在批处理操作之间移动数据(参见技术细节文档,https://openreview.net/pdf?id=ryrGawqex)。
想要了解更多,请访问我们的 Github 站点(https://github.com/tensorflow/fold)。我们希望 TensorFlow 文件包会帮助研究者和从业人员运用 TensorFlow 中的动态运算图谱实现神经网络。
本文由软件工程师 Moshe Looks, Marcello Herreshoff 和 DeLesley Hutchins 发布。
本文由 AI100 编译,转载需得到本公众号同意。
编译:AI100
原文链接:https://research.googleblog.com/2017/02/announcing-tensorflow-fold-deep.html