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

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

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

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

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

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

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

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

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

640?wx_fmt=png&wxfrom=5&wx_lazy=1

“追上来”这种说法可能并不准确,在查看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倍。“动态批处理”使这些成为可能,我们在论文《带有动态计算图的深度学习》中有详细介绍。

0?wx_fmt=gif&wxfrom=5&wx_lazy=1

 此动画显示了使用了动态批处理的递归神经网络。相同颜色的操作分批在一起,这使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
相关文章
|
2天前
|
数据采集 人工智能 安全
以AI对抗AI,瑞数“动态安全+AI”助力在线反欺诈
瑞数信息也将进一步加强在反欺诈领域的技术革新和实践,助力企业全方位筑牢网络安全防线,努力实现“御敌于千里之外”。
|
4天前
|
人工智能 计算机视觉
CVPR 2024:跳舞时飞扬的裙摆,AI也能高度还原了,南洋理工提出动态人体渲染新范式
【5月更文挑战第6天】南洋理工大学研究团队在CVPR 2024会议上提出SurMo,一种动态人体渲染新方法,能高度还原视频中的人物动作和细节,如飞扬的裙摆。SurMo通过4D运动建模,结合表面运动编码、物理运动解码和4D外观解码,实现动态图像的精确合成。尽管面临复杂动作捕捉和计算资源需求的挑战,SurMo在动态人体渲染任务上表现出色,展现了表面基运动三角平面的强大表达能力。[论文链接](https://arxiv.org/pdf/2404.01225.pdf)
13 1
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试中AI驱动的决策框架设计与实现
【5月更文挑战第5天】 在软件测试领域,自动化测试已成为提升测试效率和质量的关键手段。然而,随着软件系统的复杂性增加,传统的自动化测试方法面临挑战,尤其在测试用例的生成、执行及结果分析等方面。本文提出一种基于人工智能(AI)的自动化测试决策框架,旨在通过智能化的算法优化测试过程,并提高异常检测的准确率。该框架结合机器学习和深度学习技术,能够自学习历史测试数据,预测高风险变更区域,自动生成针对性强的测试用例,并在测试执行过程中实时调整测试策略。此外,通过自然语言处理(NLP)技术,该框架还能对测试结果进行语义分析,进一步提供更深入的洞察。本研究不仅增强了自动化测试工具的智能性,也为软件质量保证提
|
7天前
|
机器学习/深度学习 数据可视化 PyTorch
TensorFlow与PyTorch框架的深入对比:特性、优势与应用场景
【5月更文挑战第4天】本文对比了深度学习主流框架TensorFlow和PyTorch的特性、优势及应用场景。TensorFlow以其静态计算图、高性能及TensorBoard可视化工具适合大规模数据处理和复杂模型,但学习曲线较陡峭。PyTorch则以动态计算图、易用性和灵活性见长,便于研究和原型开发,但在性能和部署上有局限。选择框架应根据具体需求和场景。
|
7天前
|
人工智能 自然语言处理 算法
分享几个.NET开源的AI和LLM相关项目框架
分享几个.NET开源的AI和LLM相关项目框架
|
15天前
|
人工智能 移动开发 小程序
uniapp框架——vue3+uniFilePicker+fastapi实现文件上传(搭建ai项目第二步)
uniapp框架——vue3+uniFilePicker+fastapi实现文件上传(搭建ai项目第二步)
49 2
|
15天前
|
人工智能 小程序 前端开发
uniapp框架——初始化vue3项目(搭建ai项目第一步)
uniapp框架——初始化vue3项目(搭建ai项目第一步)
27 1
|
18天前
|
人工智能 API 决策智能
【AI Agent系列】【阿里AgentScope框架】实战1:利用AgentScope实现动态创建Agent和自由组织讨论
【AI Agent系列】【阿里AgentScope框架】实战1:利用AgentScope实现动态创建Agent和自由组织讨论
115 2
|
18天前
|
人工智能 决策智能 C++
【AI Agent系列】【阿里AgentScope框架】5. Pipeline模块的组合使用及Pipeline模块总结
【AI Agent系列】【阿里AgentScope框架】5. Pipeline模块的组合使用及Pipeline模块总结
56 1
|
18天前
|
人工智能 决策智能
【AI Agent系列】【阿里AgentScope框架】4. 深入源码:Pipeline模块如何组织多智能体间的数据流?- 循环结构
【AI Agent系列】【阿里AgentScope框架】4. 深入源码:Pipeline模块如何组织多智能体间的数据流?- 循环结构
43 0