新闻  |   论坛  |   博客  |   在线研讨会
LLVM 之父 Chris Lattner:模块化设计决定 AI 前途,不服来辩
AI科技大本营 | 2022-06-19 17:20:28    阅读:224   发布文章

作者 | OneFlow社区

来源 | OneFlow

图片

缺乏模块化的单体系统就像浑然一体的金字塔,失去了演化空间,抑制了创新速度。当前,AI领域正面临系统和工具链的互不兼容和碎片化,对这种混杂局面,编译器大牛Chris Lattner看不下去了。


2022年1月,他宣布下海创业,同Tim Davis共同成立了Modular AI, 目标是重建全球ML基础设施,包括编译器、运行时,异构计算、边缘到数据中心并重,并专注于可用性,提升开发人员的效率。目前,Modular AI已构建了来自TensorFlow、TF Lite、XLA、TPU、Android ML、Apple ML、MLIR 等世界上大部分的生产机器学习基础设施,并已将生产工作负载部署到数十亿用户和设备。


此前,Chris Lattner在《编译器的黄金时代》中指出,随着硬件和软件的协同设计变得更加重要,我们需要比以往更快地推动创新。而在最新文章里,他们抨击了当前AI软件技术栈的碎片化现状,并极尽对模块化设计的推崇。


Chris Lattner本人担任Modular AI联合创始人和CEO,他毕业于波特兰大学的计算机科学系,具有创建和领导多个知名大型项目的经验,其中包括 LLVM、Clang、MLIR和CIRCT等编译器基础设施项目,他还带头创建了Swift编程语言。他还曾在苹果开发者工具部门、特斯拉自动驾驶团队、Google Brain和SiFive公司领导相关工程研发工作。Tim Davis担任Modular AI的联合创始人及首席产品官,他此前在谷歌团队参与了TF Lite、 Android ML、NNAPI等项目的编译器开发工作。


TensorFlow、PyTorch、CUDA等平台不够模块化——没错,不服来辩!它们属于技术蔓延大背景下的产物,各自有数千个相互依赖的组成部分,每个部分各自演化、野蛮生长,发展成复杂的结构。 在使用多种硬件平台和加速器将工作负载部署到服务器、移动设备、微控制器和web浏览器时,人工智能软件开发人员必须应对这种混杂的状况。 除初始领域目标之外,上述提到的单体系统(Monolithic systems)不易扩展或泛化,这迫使硬件制造商不得不自己构建相应的技术栈。 其结果是,AI部署领域变得高度碎片化,出现了数十种工具链,它们各有取舍和局限性。更重要的是,这些设计模式的易用性、可移植性和可扩展性阻碍了创新速度。 图片 我们已经见证并且参与到深刻改变人类和现实世界的许多AI项目,包括用AI拯救大堡礁、帮助残疾人士重拾音乐梦以及教人类跳舞等。但很遗憾,构建和部署这些AI应用的技术仍然太过复杂,还是要全栈专家才能胜任,只有科技巨头里的那些机器学习技术的缔造者们,才能使用最尖端的AI应用。 请畅想这样一个世界:全球范围内的ML研究成果都可以快速有效地应用到实际生产当中,每个人都能受惠于这种科技进步;每个有志于创新产品的人不再因为软硬件的复杂性而受阻,可以简单便捷地实现创新,从而极大改善人类的生活水平。在这个世界中,AI将会更易用、易获得、可移植、可扩展,并将促使一个更大的社区去影响人类社会的健康、环保、娱乐、金融、生产制造和商业等各领域。 你可能觉得,我们注定会失败?AI的现实复杂性使其无法做到这一点? 我们并不这样认为。软件行业的发展其实是一个轮回,我们曾遇到并解决过类似的问题。
1

1990年代软件业的碎片化

 正如今天的AI行业一样,上世纪90年代的软件业也存在碎片化问题。当时,C和C++语言都有自己的社区,但却分散到数十种专有编译器软件上,这些编译器都有各自的供应商扩展(vendor extensions)和小瑕疵,奇怪的边角案例和不完整的实现。 当时,构建跨平台软件非常困难,因此出现了各种工具来帮助开发人员应对碎片化,使安装、构建和配置软件(如autoconf)变得更容易。 后来,GCC编译器的兴起拯救了我们,它不仅支持跨平台运行、性能良好且稳定,并且是免费的,因此在90年代取得了巨大的成功。GCC的成功推动了工具行业的整合浪潮,通过使其能力成为行业事实标准,去碎片化催生了新一波的创新浪潮。 由于软件不再受限于C/C++语言各自为政的问题,硬件也不再需要跟在不断变化的C/C++语言标准后面疲于奔命地调整适应,所以这波浪潮催化了软硬件的革新,在软件方面,Linux等开源软件社区得以迅速崛起;在硬件方面,指令集架构得以创新,新商业模式得以萌芽。 虽然GCC对计算机世界造福至深,但它在架构上也有一些挑战。GCC沿袭了所有现代编译器所使用的经典的“解析器+优化器+代码生成器”架构,但它被有意设计成一个单体的批处理编译器系统,而且GCC的领导者也不愿意改进设计、提高模块化程度,针对这个问题,业内也一直争论不休。

 2模块化设计的崛起

 回过头来,大家可能才会意识到,其实2000年是编译器和编程语言史上具有里程碑式意义的一年,因为在这一年,LLVM项目面世了。 LLVM之所以出现,是因为当时的编译器难以扩展,而且很难基于它们进行编译器研究工作。 22年后的今天,LLVM/Clang支持着世界上的大部分计算,包括iOS、Android、Google、Meta等公司和系统。然而,人们却对它的成功感到惊讶,因为LLVM/Clang和它的前身一样,依然采用标准的“解析器+优化器+代码生成器”方法,它没有突破性的代码生成算法,而其他系统最终都遵循了“全程序优化”等早期创新。LLVM在传统的C/C++工作负载方面没有超越现有的编译器,但它还是取得了成功。 LLVM的创新之处在于其软件架构:LLVM是一个模块化库的集合。这些库拥有已定义的接口,能够以创新的方式进行组合和扩展,它们可以被内置到大型软件项目中,也可以重新组合,用于非常小的应用,例如特定领域的即时编译器。模块化和清晰的接口会提高可测试性,有助于高质量的实现。模块化和关注点分离也让领域专家不必事无巨细地了解系统各部分如何工作就可以开发大规模项目。 Chris Lattner曾在2011年撰文回顾LLVM的发展(https://www.aosabook.org/en/llvm.html),其中写到,模块化使LLVM能够扩展,从而产生新的开发者工具(如clang-format)和创新的编程语言(如Rust、Julia、Swift)等等。上述技术以前在理论上就可以实现,但正是由于LLVM的可用性和可编辑性,它们才得以成真。模块化设计为OpenCL和CUDA等下一代即时加速器编程模型的诞生提供了条件,推动了下一波编译器技术的整合,这就是LLVM现在成为大多数CPU、GPU和AI系统的基础的原因。 LLVM最激动人心的贡献是,它可以用在许多让人意想不到的地方。LLVM设计之初并没有打算用在AI,或者Snowflake的数据库查询优化器上,但如果没有LLVM(或类似LLVM的东西),许多这些用例或许永远不会实现,比如,一个数据库团队如果想做查询优化,但没有LLVM,那他们就必须从头开始构建一个X86代码生成器,才能建立即时编译器实行查询优化。 3

2022年的AI基础设施

 今天,我们见证了人工智能行业的巨大进步,比如,世界各地的数据科学家可以通过Jupyter Notebook平台在100+PetaFLOP超级计算机上训练模型。尽管如此,至今端到端模型部署还没有实现“平民化”,还不能触达更多人。正如1990年代和2000年代初期的编译器和工具那样,今天的AI模型部署工具遇到的问题与其相比惊人地相似,依然是严重的碎片化,硬件种类繁多且都有各自的定制工具。 多年来,世界上各大科技巨头已经构建了多个针对不同硬件产品的内部工具链,而这些工具链往往不兼容,而且共享的代码很少。整个行业内已经诞生了许多良莠不齐的转换器和编译器,是时候做减法了。 许多业内人士认为,这些问题是由于人工智能的内在特性造成的,但我们知道这只是因为人工智能基础设施仍处于起步阶段。人工智能已经对世界产生了如此惊人的影响,但我们还是忍不住设想,如果我们有机会以正确的方式重建ML行业,那它的影响究竟会有多大?

 4下一代AI系统的目标

 过去十年,AI基础设施和工具发展神速,我们从中汲取了很多经验,现在已经能够充分理解曾经孜孜探索的许多东西。是时候结合过去的经验和行业最知名的技术,建立一个模块化的、可组合的系统了。 下一代ML系统需要达到高质量并满足开发人员的需求。 下一代ML系统不需要对用户代码付出成本高昂的重写、重新架构或重新定位(Rebasing);它是原生的多框架、多云和多硬件的组合;它要将最好的性能、最高的效率与最佳易用性结合起来。这是减少碎片化和解锁下一代硬件、数据和算法创新的唯一途径。 这是一项艰巨的重任。实现这一目标需要多方人员的合作,包括架构师、工程师和技术领袖,他们既是许多现有系统的开创者,也是尖端技术发展的推动者。在追逐这个目标的过程中,专注、自律以及对卓越技术的追求缺一不可,这是一种以正确方式构建事物的价值体系。为了实现这一目标,我们需要在面对一些诱人项目时有说“不”的定力,以确保我们的基本面不会变形。 我们的目标是让AI更易用、易于触及、可移植、可扩展,使全世界的开发者都能畅通无阻地用AI造福人类。在这个世界上,我们应该花更多时间用AI来解决实际问题,而不是遭受碎片化、低质量的工具和基础设施的折磨。这就是我们要为之努力的未来。 

我们正在构建AI的未来,愿景是让任何人、任何地方都可以使用AI。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客