AI框架之战继续:TensorFlow也用上了动态计算图

简介:
本文来自AI新媒体量子位(QbitAI)

Google今天发布了TensorFlow Fold,利用动态计算图来解决因多个输入大小结构不同无法自然地批处理到一起,而导致的处理器、内存和高速缓存利用率差的问题。

你可能注意到了“动态”这两个字。

上个月,Facebook发布了开源深度学习框架PyTorch,让它广受赞誉的,便是“动态”这个特性。PyTorch采用动态计算图,比使用静态计算图的TensorFlow、Caffe、CNTK等框架更易于调试和推导,使用者在修改神经网络,比如说新加一层时,不需要像在其他框架中一样全部推倒重来。

当时,对PyTorch的溢美之词充满网络,我们甚至想知道Facebook此举能否撼动Google在深度学习框架领域的统治地位。

然而,云知声资深AI技术专家、NLP负责人刘升平博士对『量子位』表示,Beta阶段的PyTorch还缺乏一些关键特性,短期难以撼动TensorFlow的地位。另外,他还表示,框架的竞争还会继续下去。

(在公众号会话界面回复“框架战争”阅读我们对PyTorch的解读)

20天不到,TensorFlow已经追了上来。

“追上来”这种说法可能并不准确,在查看TensorFlow动态计算图的论文时,『量子位』发现这篇论文向ICLR提交的时间是2016年11月5日,比PyTorch发布还早了两个多月。可见“动态”是个好东西,它所带来的易用性,每个框架都想早早拥有。

在两家大公司先后涉足这一领域之前,就已经有很多“动态”深度学习库涌现出来,例如PyTorch的老师Chainer,卡内基梅隆大学的DyNet等。


接下来,我们看看Google官方对TensorFlow Fold的介绍。以下内容译自Google Research Blog,译者量子位+GNMT

在机器学习中,用于训练和推断的数据通常需要经过预处理环节,在这个环节中,多端输入的数据(例如图像)被缩放到相同的规格并堆叠成批。然后,TensorFlow这样的高性能深度学习库才能够在批处理的全部输入数据上并行运行相同的计算图。

批处理利用现代GPU和多核CPU的SIMD(单指令多数据)功能来加快执行速度。然而,在很多问题域中,输入数据的大小和结构都不同,诸如自然语言理解中的解析树,源代码中的抽象语法树,网页的DOM树等。在这些情况下,不同的输入具有不同的计算图,无法自然地批处理到一起,导致处理器、内存和高速缓存利用率都很差。

今天,我们发布了TensorFlow Fold来应对这些挑战。TensorFlow Fold使得对不同大小和结构的数据进行操作的深度模型更易于实现。此外,TensorFlow Fold为在这些模型中进行批处理带来了好处,与其他实现相比,CPU上运行的速度提高了10倍以上,GPU上提高了100倍。“动态批处理”使这些成为可能,我们在论文《带有动态计算图的深度学习》中有详细介绍。

 此动画显示了使用了动态批处理的递归神经网络。相同颜色的操作分批在一起,这使TensorFlow能够更快地运行它们。Embed操作将单词转换为向量表示;完全连接(FC)操作组合字向量以形成短语的向量表示;网络的输出是整个句子的向量表示。尽管我们仅展示了句子的单个解析树,但是相同的网络可以在任意形状和大小的多个解析树上运行并对操作进行批处理。

TensorFlow Fold库最初将从每个输入构建单独的计算图。因为各个输入可能具有不同的大小和结构,计算图也一样。动态批处理随后自动组合这些计算图,以利用在输入内和输入之间进行批处理的机会,并插入附加指令以在批处理操作之间移动数据(参见我们的论文的技术细节)。

要了解更多,请访问我们的github网站。我们希望TensorFlow Fold对于在TensorFlow中使用动态计算图来实现神经网络的研究人员和从业者将是有用的。

论文地址:https://openreview.net/pdf?id=ryrGawqex
代码地址:https://github.com/tensorflow/fold

致谢
这项工作是在Peter Novig的监督下完成的。


本文作者:李林
原文发布时间:2017-02-08
相关文章
|
3月前
|
存储 人工智能 算法
【AI系统】计算与调度
本文探讨了计算与调度的概念,特别是在神经网络和图像处理中的应用。通过分离算法定义和计算组织,Halide 等工具能够显著提升图像处理程序的性能,同时保持代码的简洁性和可维护性。文章详细介绍了计算与调度的基本概念、调度树的构建与约束,以及如何通过调度变换优化计算性能。此外,还讨论了自动调优方法在大规模调度空间中的应用,展示了如何通过探索和预测找到最优的调度方案。
68 0
|
13天前
|
机器学习/深度学习 人工智能 搜索推荐
BioEmu:微软黑科技炸场!生成式AI重构蛋白质模拟:千倍效率碾压传统计算,新药研发周期砍半
BioEmu 是微软推出的生成式深度学习系统,可在单个 GPU 上每小时生成数千种蛋白质结构样本,支持模拟动态变化、预测热力学性质,并显著降低计算成本。
31 2
BioEmu:微软黑科技炸场!生成式AI重构蛋白质模拟:千倍效率碾压传统计算,新药研发周期砍半
|
3月前
|
存储 人工智能 算法
【AI系统】计算图的优化策略
本文深入探讨了计算图的优化策略,包括算子替换、数据类型转换、存储优化等,旨在提升模型性能和资源利用效率。特别介绍了Flash Attention算法,通过分块计算和重算策略优化Transformer模型的注意力机制,显著减少了内存访问次数,提升了计算效率。此外,文章还讨论了内存优化技术,如Inplace operation和Memory sharing,进一步减少内存消耗,提高计算性能。
175 34
【AI系统】计算图的优化策略
|
17天前
|
机器学习/深度学习 PyTorch TensorFlow
深度学习工具和框架详细指南:PyTorch、TensorFlow、Keras
在深度学习的世界中,PyTorch、TensorFlow和Keras是最受欢迎的工具和框架,它们为研究者和开发者提供了强大且易于使用的接口。在本文中,我们将深入探索这三个框架,涵盖如何用它们实现经典深度学习模型,并通过代码实例详细讲解这些工具的使用方法。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能与情感计算:AI如何理解人类情感
人工智能与情感计算:AI如何理解人类情感
492 20
|
2月前
|
人工智能 运维 Serverless
云端问道8期方案教学-基于Serverless计算快速构建AI应用开发
本文介绍了基于Serverless计算快速构建AI应用开发的技术和实践。内容涵盖四个方面:1) Serverless技术价值,包括其发展趋势和优势;2) Serverless函数计算与AI的结合,探讨AIGC应用场景及企业面临的挑战;3) Serverless函数计算AIGC应用方案,提供一键部署、模型托管等功能;4) 业务初期如何低门槛使用,介绍新用户免费额度和优惠活动。通过这些内容,帮助企业和开发者更高效地利用Serverless架构进行AI应用开发。
|
3月前
|
人工智能 缓存 并行计算
转载:【AI系统】CPU 计算本质
本文深入探讨了CPU计算性能,分析了算力敏感度及技术趋势对CPU性能的影响。文章通过具体数据和实例,讲解了CPU算力的计算方法、算力与数据加载之间的平衡,以及如何通过算力敏感度分析优化计算系统性能。同时,文章还考察了服务器、GPU和超级计算机等平台的性能发展,揭示了这些变化如何塑造我们对CPU性能的理解和期待。
转载:【AI系统】CPU 计算本质
|
3月前
|
机器学习/深度学习 存储 人工智能
转载:【AI系统】计算之比特位宽
本文详细介绍了深度学习中模型量化操作及其重要性,重点探讨了比特位宽的概念,包括整数和浮点数的表示方法。文章还分析了不同数据类型(如FP32、FP16、BF16、FP8等)在AI模型中的应用,特别是FP8数据类型在提升计算性能和降低内存占用方面的优势。最后,文章讨论了降低比特位宽对AI芯片性能的影响,强调了在不同应用场景中选择合适数据类型的重要性。
转载:【AI系统】计算之比特位宽
|
3月前
|
机器学习/深度学习 人工智能 PyTorch
【AI系统】计算图原理
本文介绍了AI框架中使用计算图来抽象神经网络计算的必要性和优势,探讨了计算图的基本构成,包括标量、向量、矩阵、张量等数据结构及其操作,并详细解释了计算图如何帮助解决AI工程化中的挑战。此外,文章还通过PyTorch实例展示了动态计算图的特点和实现方法,包括节点(张量或函数)和边(依赖关系)的定义,以及如何通过自定义Function实现正向和反向传播逻辑。
128 7
【AI系统】计算图原理
|
2月前
|
存储 人工智能 运维
面向AI的服务器计算软硬件架构实践和创新
阿里云在新一代通用计算服务器设计中,针对处理器核心数迅速增长(2024年超100核)、超多核心带来的业务和硬件挑战、网络IO与CPU性能增速不匹配、服务器物理机型复杂等问题,推出了磐久F系列通用计算服务器。该系列服务器采用单路设计减少爆炸半径,优化散热支持600瓦TDP,并实现CIPU节点比例灵活配比及部件模块化可插拔设计,提升运维效率和客户响应速度。此外,还介绍了面向AI的服务器架构挑战与软硬件结合创新,包括内存墙问题、板级工程能力挑战以及AI Infra 2.0服务器的开放架构特点。最后,探讨了大模型高效推理中的显存优化和量化压缩技术,旨在降低部署成本并提高系统效率。

热门文章

最新文章