深度学习的IR“之争”

熟悉编译器的同学应该对上图并不陌生。它就是大名鼎鼎的LLVM的logo。Google Tensorflow XLA (Accelerated Linear Algebra)就使用了LLVM IR(Intermediate Representation)。而它的“竞争对手”,刚刚发布的TVM/NNVM,则是“Tensor IR Stack for Deep Learning Systems”。IR是什么?为什么重要?我们一起来看看。

上周,我们看到这样的新闻“Facebook and Microsoft introduce new open ecosystem for interchangeable AI frameworks”。这也让Framework之争更加热闹。简单来说,ONNX也是为了解决目前多个Framework互操作的问题。但有趣的是,这个“开放”的系统看起来更像是微软和FB连合对抗Google。目前Tensorflow的占有率已经领先不少,其它的Framework肯定也不希望看到Tensorflow一家独大,毕竟Framework是做deep learning的一个“入口”。最近PyTorch的势头不错,Caffe2, PyTorch和Cognitive Toolkit通过这种方式“联合”,似乎也是个不错的选择。

“An Intermediate representation (IR) is the data structure or code used internally by a compiler or virtual machine to represent source code. An IR is designed to be conducive for further processing, such as optimization and translation. A "good" IR must be accurate – capable of representing the source code without loss of information – and independent of any particular source or target language. An IR may take one of several forms: an in-memory data structure, or a special tuple- or stack-based code readable by the program. In the latter case it is also called an intermediate language.” - Wikipedia

我们还是从目前Deep Learning的一个现实问题说起吧。

上图来自介绍NNVM的一篇文章[1]。文中在谈到NNVM的目标的时候,是这么说的:

“This is a new interesting era of deep learning, with emergence trend of new system, hardware and computational model. The usecase for deep learning is more heterogeneous, and we need tailored learning system for our cars, mobiles and cloud services. The future of deep learning system is going to be more heterogeneous, and we will find emergence need of different front-ends, backends and optimization techniques. Instead of building a monolithic solution to solve all these problems, how about adopt unix philosophy, build effective modules for learning system, and assemble them together to build minimum and effective systems?”

简单来说,现在Deep Learning有这么多不同前端(framework),有这么多不同的后端(hardware),是否能找到一个桥梁更有效实现他们之间的优化和影射呢?

实际上这个问题并不新鲜。当年,随着不同的应用场景和需求,出现了大量不同的编程语言和不同的处理器架构,软件产业也遇到过类似的问题。

换句话说,这也正是重演了LLVM出现时的场景:大量不同的编程语言和越来越多的硬件架构之间需要一个桥梁。LLVM的出现,让不同的前端后端使用统一的 LLVM IR ,如果需要支持新的编程语言或者新的设备平台,只需要开发对应的前端和后端即可。同时基于 LLVM IR 我们可以很快的开发自己的编程语言。比如,LLVM创建者Chris Lattner后来加入了Apple,又创建了Swift语言,可以看作是LLVM的前端。

由此也可以看出,LLVM统一的IR是它成功的关键之一,也充分说明了一个优秀IR的重要性。

当然,IR本质上是一种中间表示形式,是一个完整编译工具的一部分。而我们下面讨论的TVM,XLA都是围绕特定IR构建的优化和编译工具。

陈天奇在另一篇文章中提到:“...对于深度学习,我们需要类似的项目。学习 LLVM 的思想,我们将其取名 NNVM”。(2016年10月)

8月17号,陈天奇的团队又发布了TVM:An End to End IR Stack for Deploying the Deep Learning Workloads to Hardwares[2],其架构如下图所示:

We adopt a common philosophy from the compiler community and provide two intermediate representation layers to efficiently lower high-level deep learning algorithms down to a multitude of hardware back-ends.

可以看出,他们在之前的NNVM之外上增加了一个新的IR Stack,TVM,试图解决下图所示的Gap,“A lot of powerful optimizations can be supported by the graph optimization framework. ...However we find that the computational graph based IR alone is not enough to solve the challenge of supporting different hardware backends. ”这里的graph based IR则是指NNVM。

我们知道,在LLVM环境中,只有一个统一的IR。那么,为什么Deep Learning环境中graph based IR还不够呢?在随后的一篇知乎文章中[3],陈天奇提到了去年10月知乎上关于“如何评价陈天奇的模块化深度学习系统NNVM?”的讨论[4]。而这个讨论中王健飞的回答似乎是TVM产生的灵感之一。

同样在这篇文章当中,陈天奇还提到,“TVM和已有的解决方案不同,以XLA作为例子,TVM走了和目前的XLA比更加激进的技术路线,TVM可以用来使得实现XLA需要的功能更加容易 ”。

既然TVM的作者点了对手的名,我们就来看看Google的XLA吧。

XLA (Accelerated Linear Algebra) is a domain-specific compiler for linear algebra that optimizes TensorFlow computations. The results are improvements in speed, memory usage, and portability on server and mobile platforms. Initially, most users will not see large benefits from XLA, but are welcome to experiment by using XLA via just-in-time (JIT) compilation or ahead-of-time (AOT) compilation. Developers targeting new hardware accelerators are especially encouraged to try out XLA.

下图左半部分来自“2017 EuroLLVM Deveopers’ Meeting”上的一个报告[6],比较清楚介绍了XLA的目标,其基本功能也是优化和代码生成。

XLA具体的架构如图右半部分所示,可以看出,它也是两层优化的结构[5],使用LLVM用作low-level IR, optimization, and code-generation。由于使用了LLVM IR, 他可以比较容易的支持不同的后端(Backend)。下图就是使用GPU Backend的例子。

对于目前不直接支持的后端,XLA给出了三种场景的开发方法。包括:

  1. Existing CPU architecture not yet officially supported by XLA, with or without an existing LLVM backend.
  2. Non-CPU-like hardware with an existing LLVM backend.
  3. Non-CPU-like hardware without an existing LLVM backend.

总的来说,XLA和TVM试图解决的问题类似。但XLA只是针对Google的Tensorflow的。而TVM/NNVM虽然是MxNe阵营,但试图作为一个开发和公共的接口。

这里插播一个新闻,Chris Lattner最近加入了Google Brain。虽然还不知道他的主要工作是不是会放在XLA这里,但是他和Jeff Dean配合,确实是令人生畏。

由于我自己并没有亲自使用过这两个工具,所以也不能给出更准确的评价和对比。对具体细节感兴趣的读者可以好好看看Reference的内容,并且亲自尝试一下。

其实,类似的想法还包括:Intel’s NGraph(如下图),HP的Cognitive Computing Toolkit (CCT), IBM的SystemML。

而在刚刚结束的Hot Chips会议上,Microsoft发布了Project Brainwave,Cloud的AI FPGA加速平台。它的工具链是这样的,是不是又看到了两层IR?

最后,最近还看到另一个有趣的尝试:Khronos Neural Network Exchange Format (NNEF),试图定义一种标准的数据交换格式。“The NNEF standard encapsulates neural network structure, data formats, commonly used operations (such as convolution, pooling, normalization, etc.) and formal network semantics. ”

T.S.:
随着Deep Learning的应用越来越广,大家越来越关心DNN在不同硬件架构上Training和Inference的实现效率。参考传统编译器(compiler)设计的经验,XLA和TVM/NNVM都开始了很好的尝试。而“IR”的竞争,将是未来Framework之争的重要一环。

Reference:
[1]陈天奇, "Build your own TensorFlow with NNVM and Torch", http://tqchen.github.io/2016/10/01/build-your-own-tensorflow-with-nnvm-and-torch.html
[2]陈天奇, "TVM: An End to End IR Stack for Deploying the Deep Learning Workloads to Hardwares",http://tvmlang.org/2017/08/17/tvm-release-announcement.html
[3]陈天奇, "如何评价陈天奇团队新开源的TVM?", https://www.zhihu.com/question/64091792/answer/217722459
[4] 王健飞,“如何评价陈天奇的模块化深度学习系统NNVM?”,https://www.zhihu.com/question/51216952/answer/124708405
[5]"XLA Overview", https://www.tensorflow.org/performance/xla/
[6]"2017 EuroLLVM Developers’ Meeting: D. Majnemer “XLA: Accelerated Linear Algebra”",https://www.youtube.com/watch?v=2IOPpyyuLkc
[7]"A Brief Introduction to LLVM", https://www.youtube.com/watch?v=a5-WaD8VV38"
[8]"XLA: TensorFlow Compiled!",https://www.youtube.com/watch?v=kAOanJczHA0

时间: 2024-12-12 01:57:17

深度学习的IR“之争”的相关文章

AI派系之争如火如荼,问谁是英雄? 概率编程 VS 深度学习

AI派系之争如火如荼,问谁是英雄? 概率编程V.S.深度学习 作者介绍: Cade Metz是世界著名杂志WIRED(连线)的高级编者,主要负责人工智能,比特币,数据中心,计算机软硬件等前沿领域的信息搜集与写作.如果你有新鲜好玩的新闻与Cade分享,请发邮件到cade_ketz@wired.com        算法大师Pedro Domingos在其著作<The Master Algorithm>中,把各种用以实现AI的技术称为AI派系.正如华盛顿大学计算机科学家所解释的,每个派系都表现出其

财富:亚马逊采用 MXNet ,巨头间深度学习框架之争白热化

随着人工智能的发展,现代科技公司的终极目标是构建无需人类介入.能够自我思考的 AI 软件. 亚马逊首席技术官 Werner Vogels 在周二的一篇博客文章中表示,亚马逊网络服务公司(AWS)刚刚选择 MXNet 作为其最主要的深度学习框架. <财富>今年 9 月的一篇深度长文回溯了深度学习推动的人工智能在整个计算生态系统引发的革命,如文章所述,深度学习是 AI 的一个子集,包含神经网络的使用.神经网络在算法(而非人类程序员)的帮助下通过处理大量数据来学习并解决问题. Vogels 表示,A

2017年深度学习框架之争——看谁主沉浮?

在过去的两年多时间里,各大公司或研究机构推出自己的深度学习框架,比如Caffe.TensorFlow等,并且关于深度学习相关的框架也在随着时间不断地发生变化.Theano是第一个被广泛使用的深度学习框架,该框架是由深度学习领域中的大牛Yoshua Bengio牵头.MILA创建.然而,在今年的九月份,MILA宣布在2018年更新完最后一版Theano后,将不再继续开发该框架.这一消息来得并不是很出人意外.在过去的几年里,一些不同的开源Python深度学习框架被引入,这些深度学习框架通常是由一家大

从NNVM看2016年深度学习框架发展趋势

雷锋网(公众号:雷锋网)按:本文作者潘汀,合肥工业大学计算机专业大三本科生,中科院深圳先进院集成所MMLAB访问学生.原ACM-ICPC算法竞赛选手,2015年获CCPC铜牌.2015年初开始研究机器学习,研究兴趣集中于对深度学习理论.应用(CV&NLP)及系统架构设计的综合探索.关于深度学习在面部情感分析方面应用的论文被<自动化学报>录用. | 虚拟框架杀入 从发现问题到解决问题 半年前的这时候,暑假,我在SIAT MMLAB实习.看着同事一会儿跑Torch,一会儿跑MXNet,一会

深度学习洪流:为何它能瞬间改变你的生活? (下)

tech2ipo 编者按:我们和电脑之间的交流正在发生着转变,而深度学习也已经润物细无声地进入我们的生活,甚至在你意识到这一点之前,世界已经截然不同. 本文首发于 fortune,分上下篇,由老吕IO.江小片及何忞联合编译,未经雷锋网(公众号:雷锋网)允许不得转载. 什么是人工智能?  人工智能 人工智能是一个广义概念,它可以应用到任何一种可以使计算机模拟人类智慧.使用逻辑算法.决策树.机器学习(包括深度学习)的技术中. 机器学习 它是人工智能的一个分支,包括能使机器根据经验完成任务的深度统计技

预告:MXNet火了,AI从业者该如何选择深度学习开源框架丨硬创公开课

近日 MXNet 被亚马逊AWS 正式选成为官方深度学习平台,使得前者再次火遍整个 AI 圈. 除了 MXNet 外,谷歌.微软.亚马逊.百度等巨头都围绕深度学习搭建了自己的开源平台.目前研究人员正在使用的深度学习框架不尽相同,有 TensorFlow.CNTK.MXNet.Torch .Caffe.Theano.Deeplearning4j 等. 正如程序语言之争一样,深度学习开源框架同样各有优劣和适用的场景,那么 AI 从业者该如何有针对性地选择这些平台来玩转深度学习? 本期公开课特邀先后在

深度学习应用:入门篇(下)

四.经典入门demo:识别手写数字(MNIST) 常规的编程入门有"Hello world"程序,而深度学习的入门程序则是MNIST,一个识别28*28像素的图片中的手写数字的程序. MNIST的数据和官网:http://yann.lecun.com/exdb/mnist/ 深度学习的内容,其背后会涉及比较多的数学原理,作为一个初学者,受限于我个人的数学和技术水平,也许并不足以准确讲述相关的数学原理,因此,本文会更多的关注"应用层面",不对背后的数学原理进行展开,感

阿里忙收购,李彦宏在忙…“深度学习”

路线选择的不同,使百度与腾讯.阿里的移动互联网战略可比性越来越弱.但百度的这个战略也面临挑战,最大的不确定性来自于数据的来源 要搞清楚一个互联网公司当下的主要战略方向其实并不难,只要看它们的创始人在干嘛,基本就能猜个八九不离十.以这个标准看,腾讯的马化腾在抓手机QQ,搜狐的张朝阳逼着自己看雷人电视剧,新浪的曹国伟当然还是在发微博,阿里巴巴的马云--退休了-- 百度的李彦宏在做什么?他在年初成立了深度学习研究院(Institute of Deep Learning,IDL)并自任院长,亲自出马去延

​【NIPS2017】深度学习真的不需要理论指导了?图灵奖得主讲座无人问津,贝叶斯之父Judea Pearl落寞身影背后引人深思

NIPS 2017 "Test of Time"论文大奖获得者Ali Rahimi 在长滩现场的演讲中抱怨当前机器学习尤其是深度学习使用的很多方法缺少(理论)理解.而Lecun则回怼说:仅仅因为理论没有追赶上实践的水平,就批评整个机器学习社区使用「炼金术」,这种言论是危险的. CMU大学教授,Petuum公司创始人Eric Xing则在看到这组图后表示:这是NIPS2017大会上一个让人难过的场景.成为一个单纯的"炼金术师"并不可耻,可耻的是并不努力从"炼