当前位置: 首页 > 科技观察

Google发布了深度学习库TensorFlowFold,支持动态计算图

时间:2023-03-11 20:25:16 科技观察

在大多数机器学习过程中,用于训练和推理的数据都需要进行预处理。通过预处理,将不同的输入数据(如图像)正则化为相同的大小并分批存储。这一步使得高性能的深度学习库,如TensorFlow,能够并行处理批存储中的所有输入,并使用相同的计算图来处理它们。批处理利用现代GPU和多核CPU的单指令多数据(SIMD)性能来加速计算执行。但是,当输入数据的大小和结构发生变化时,就会出现很多问题,比如自然语言理解中的解析树(parsetree),源代码中的抽象语法树(abstractsyntaxtree),文档树(DOM树)的网页。)等待。在这些情况下,不同的输入数据需要不同的计算图,而这些计算图通常不能批量存储在一起,导致处理器、内存和缓存利用率低。今天我们发布了TensorFlowFold来解决这些困难。TensorFlowFold可以更轻松地实施处理不同数据大小和结构的深度学习模型。不仅如此,TensorFlowFold赋予了这些模型批处理的优势,使得这些模型在CPU上的运行速度提高了10多倍,在GPU上的速度提高了100多倍(与其他实现相比)。这种改进来自动态批处理技术,我们的论文(使用动态计算图进行深度学习)对此进行了详细描述。上面的动画演示了一个以动态批处理运行的递归神经网络。具有相同颜色的操作被组合在一起,这使得TensorFlow可以更快地运行它们。嵌入操作将单词转换为向量表示。全连接(FC)操作组合词向量以形成段落向量表示。网络的输出是一个完整句子的向量表示。虽然上图只演示了一个句子解析树,但网络也可以在任意形状和大小的各种解析树上运行并实现批处理。TensorFlowFold库首先为每个输入构建一个单独的计算图。由于各个输入可能具有不同的大小和结构,因此计算图也可能不同。动态批处理自动组合这些图形,利用输入内以及跨输入的批处理机会,并插入额外的指令以在批处理操作之间移动数据。(有关技术细节,请参阅论文)要了解更多信息,您还可以查看我们的githubURL:https://github.com/tensorflow/fold。我们希望TensorFlowFold能够帮助研究人员和从业者在TensorFlow中部署动态计算的神经网络。论文:使用动态计算图进行深度学习摘要:在图结构上进行计算的神经网络是解决自然语言处理(解析树)和化学信息学(分子图)等多个领域问题的自然方法。然而,由于每个输入的计算图具有不同的形状和大小,网络通常不能直接批量训练或推断。它们也很难部署到流行的深度学习库中,因为这些库基于静态数据流图。我们引入了一种称为动态批处理的技术,它不仅可以对不同输入图(具有不同形状)之间的操作进行批处理,还可以对单个输入图中的不同节点进行批处理。这种技术允许我们使用流行的库创建静态图来模拟任意形状和大小的动态计算图。我们进一步提出了一个高级组合块库,可以简化创建动态图模型的过程。使用这个库,我们展示了文献中各种模型的简洁明了的批处理并行实现。原文:https://research.googleblog.com/2017/02/announcing-tensorflow-fold-deep.html【本文为机器心专栏原创翻译,微信公众号》机器心(id:almosthuman2014)》】点此阅读该作者更多好文