;
TensorFlow、PyTorch和CUDA等平台不是模块化的(modular)。它们是扩展技术(sprawling technologie),拥有数千个不断发展的相互依存的碎片,随着时间的推移,这些碎片已经有机地发展成复杂的结构。AI软件开发人员必须应对这种蔓延,同时使用多个硬件平台和加速器将工作负载部署到服务器、移动设备、微控制器和Web浏览器。
这些系统在其初始域目标之外不容易扩展或推广,这迫使硬件制造商构建自己的技术堆栈。其结果是人工智能部署行业非常分散,拥有数十个工具链,具有不同的权衡和限制。更重要的是,这些设计模式还通过减少可用、更少的便携和更难扩展来减缓创新的步伐。构建和部署AI应用的技术复杂仍然太高——部署人工智能仍然是全栈专家的领域。
闪回20世纪90年代,软件世界出现了与我们今天看到的人工智能类似的碎片化问题。当时,C和C++已经建立了社区,但分散在数十个专有编译器中。每个都有供应商扩展、粗糙的边缘、奇怪的角落案例和不完整的实现。构建跨平台软件非常困难,以至于出现了一些工具来帮助开发人员应对碎片化,从而更容易安装、构建和配置软件(例如autoconf)。
GCC的崛起拯救了我们,凭借其跨平台支持、良好的能和稳定以及自由,在90年代取得了巨大成功。其成功推动了工具行业的整合浪潮,由此产生的碎片整理使其能力成为事实上的标准,从而促成了一波新的创新浪潮。它推动了软件(直接促进Linux等开放源码软件社区的快速崛起)和硬件(使指令集架构和新业务模式的创新)的革命,使前者摆脱了零碎的C/C++实现,后者不必追逐快速发展的C/C++语言标准华体会最新首页。
整体架构的系统很难进化
但GCC随后遇到了一些架构挑战。GCC遵循所有现代编译器使用的经典解析器、优化器、代码生成器架构,但它被故意设计为一个整体批处理编译器系统,GCC的领导层抵制了改进模块化和设计的尝试,这是社区摩擦的持续来源。
2000年是编译器和编程语言的开创时刻:这是LLVM项目的开始。创建LLVM是因为当时的编译器很难扩展并用作编译器研究的平台。
22年后,LLVM/Clang为世界上大部分计算提供了动力——它现在在iOS、Android、Google、Meta和许多其他公司和系统中被广泛采用。然而,人们可能会想知道这是怎么发生的:LLVM/Clang使用标准的“解析器、优化器和代码生成器”方法(类似于其前身),它没有突破的代码生成算法,其创新方面是其软件架构:LLVM被设计为模块化库的集合。这些库定义了接口,允许它们以创新的方式进行构建和扩展。它们可以内置到大型软件项目中,也可以为非常小的应用程序(例如特定于域的Just-In-Time编译器)重新混合。模块化和清晰的接口鼓励可测试,这有助于更高质量的实现。模块化和关注点的分离允许领域专家在不知道整个系统如何工作的情况下从事大型项目。
模块化被引用为使LLVM社区能够扩展,产生新的开发工具,如clang格式,并解锁创新的编程语言(Rust、Julia、Swift等)。这些以前只在技术上可能的东西,由于LLVM的可用和可黑客,在现实中诞生了。模块化设计支持下一代Just-In-Time加速器编程模型,如OpenCL和CUDA。这推动了下一波编译器技术的整合,这就是为什么LLVM现在是当今大多数CPU、GPU和AI系统的基础。
LLVM最令人兴奋的贡献是,它解锁了从一开始没有计划的新用例。AI不是其原始设计的一部分,也不是为Snowflake设计用于他们的数据库查询优化器。如果没有LLVM(或类似的东西)可用,其中许多用例永远不会发生:如果数据库团队必须从头开始创建X86代码生成器,则不太可能构建用于查询优化的JIT编译器。
今天,我们可以看到人工智能行业取得了长足的进步。例如,我们世界各地的数据科学家都在Jupyter笔记本上训练100多台PetaFLOP超级计算机的模型。尽管如此,这些模型的端到端部署仍然远未“民主化”。今天用于部署人工智能模型的工具与20世纪90年代和21世纪初的编译器和工具非常相似。我们看到这些系统存在严重的碎片化,硬件种类繁多,每个都有定制工具。
多年来,世界上最大的科技公司已经针对不同硬件产品构建了多个内部工具链,这些工具链通常不兼容,共享的代码很少。
业内许多人认为,这些问题是由于人工智能的内在质,但我们知道这是因为人工智能基础设施仍处于起步阶段。人工智能已经对世界产生了如此令人难以置信的影响,但我们必须想知道:如果我们有机会以正确的方式重建ML,它的影响会大得多?
在过去的十年里,我们从人工智能基础设施和工具的发展中学到了很多东西。该行业取得了长足进步,许多曾经研究过的东西现在都得到了很好的理解。现在是时候将吸取的经验教训纳入一个单一的模块化和可组合系统,该系统集成了整个行业最著名的技术。hthcom华体会
下一代ML系统需要具有生产质量,并满足开发人员的需求。它不得要求昂贵的重写、重新架构或重新基础用户代码。它必须是原生的多框架、多云和多硬件。它需要将最佳能和效率与最佳可用相结合。这是减少碎片化和解锁下一代硬件、数据和算法创新的唯一方法。
这是一项巨大而重要的任务。实现这一目标需要由架构师、工程师和领导者组成的团队进行非凡的合作,他们构建了许多现有系统,并推动了最先进的发展。它需要专注、纪律和对技术卓越的承诺——一个激励以正确方式建造东西的价值体系。它需要力量对许多有趣的项目说“还没有”,这使我们能够确保我们正确获得基本面。
我们正在建设人工智能的未来,我们的愿景是让任何人、任何地方都能使用人工智能。
我们的目标是创造一个人工智能更有用、更易访问、更便携、更可扩展的世界,并使世界各地的开发人员能够以不为人知的方式对世界产生积极影响。在这个世界上,更多的时间花在使用人工智能来解决问题上,而不是与一套支离破碎的低质量工具和基础设施搏斗。这就是我们寻求创造的世界。欢迎来到模块化人工智能。