一张照片可以一窥创作者的世界——他们对某个主题或空间的兴趣和感受。但是,那些帮助使这些图像成为可能的技术背后的创造者呢?
麻省理工学院电气工程与计算机科学系副教授乔纳森·拉根-凯利(Jonathan Ragan-Kelley)就是这样一个人,他设计了从电影中视觉效果的工具到工业中广泛用于照片编辑和处理的卤化物编程语言的一切。作为麻省理工学院-IBM Watson AI 实验室和计算机科学与人工智能实验室的研究员,Ragan-Kelley 专门研究高性能、特定领域的编程语言和机器学习,以实现 2D 和 3D 图形、视觉效果和计算摄影。
Ragan-Kelley说:“我们许多研究的最大推动力是开发新的编程语言,这些语言可以更轻松地编写在当今计算机中日益复杂的硬件上真正有效地运行的程序。“如果我们想继续提高计算能力,我们可以实际用于实际应用 ——从图形和视觉计算到人工智能 ——我们需要改变我们的编程方式。
寻找中间立场
在过去的二十年里,芯片设计师和编程工程师见证了摩尔定律的放缓,以及从CPU上的通用计算到更多样化和更专业的计算和处理单元(如GPU和加速器)的明显转变。随着这种转变而来的是权衡:能够在 CPU 上运行一些缓慢的通用代码,以获得更快、更高效的硬件,这需要代码大量适应它,并通过定制的程序和编译器映射到它。具有改进编程功能的较新硬件可以更好地支持高带宽蜂窝无线电接口、解码用于流媒体的高度压缩视频以及功率受限的手机摄像头上的图形和视频处理等应用。
“我们的工作主要是释放我们可以构建的最佳硬件的强大功能,以传统编程语言所没有的方式为这些类型的应用程序提供尽可能多的计算性能和效率。
为了实现这一目标,Ragan-Kelley将他的工作分为两个方向。首先,他牺牲了通用性来捕捉特定和重要的计算问题的结构,并利用它来提高计算效率。这可以从他共同开发的图像处理语言 Halide 中看出,并帮助在 Photoshop 等程序中改变了图像编辑行业。此外,由于它是专门为快速处理密集的规则数字数组(张量)而设计的,因此它也适用于神经网络计算。第二个重点是自动化,特别是编译器如何将程序映射到硬件。麻省理工学院-IBM Watson AI Lab 的一个项目利用了 Exo,这是 Ragan-Kelley 团队开发的一种语言。
多年来,研究人员一直在努力使用编译器实现编码自动化,这可能是一个黑匣子;然而,性能工程师仍然需要明确的控制和调整。Ragan-Kelley和他的团队正在开发跨越每种技术的方法,平衡权衡,以实现有效和资源节约型的编程。许多高性能程序(如视频游戏引擎或手机摄像头处理)的核心是最先进的系统,这些系统主要由人类专家使用低级、详细的语言(如 C、C++ 和汇编)进行手动优化。在这里,工程师对程序如何在硬件上运行做出具体选择。
Ragan-Kelley指出,程序员可以选择“非常艰苦、非常低效和非常不安全的低级代码”,这可能会引入错误,或者“更安全、更高效、更高级别的编程接口”,这些接口缺乏在编译器中对程序运行方式进行微调的能力,并且通常提供较低的性能。因此,他的团队正试图找到一个中间立场。“我们正试图弄清楚如何为人类性能工程师希望能够控制的关键问题提供控制,”Ragan-Kelley说,“因此,我们试图构建一类新的语言,我们称之为用户可调度语言,这些语言提供更安全和更高级别的句柄来控制编译器的功能或控制程序的优化方式。
解锁硬件:高级和服务不足的方式
Ragan-Kelley和他的研究小组正在通过两条工作线来解决这个问题:应用机器学习和现代人工智能技术来自动生成优化的时间表,即编译器的接口,以实现更好的编译器性能。另一个使用他正在与实验室合作的“外编译”。他将这种方法描述为一种“由内而外地翻转编译器”的方法,其编译器的骨架具有用于人工指导和自定义的控件。此外,他的团队可以在顶部添加他们定制的调度程序,这有助于针对专门的硬件,如IBM研究院的机器学习加速器。这项工作的应用范围很广:计算机视觉、对象识别、语音合成、图像合成、语音识别、文本生成(大型语言模型)等。
他与实验室合作的一个宏观项目又向前迈进了一步,通过系统视角来研究这项工作。在他的导师和实验室实习生威廉·布兰登(William Brandon)的领导下,与实验室研究科学家拉梅斯瓦尔·潘达(Rameswar Panda)合作,Ragan-Kelley的团队正在重新思考大型语言模型(LLM),寻找稍微改变计算和模型编程架构的方法,以便基于Transformer的模型可以在不牺牲准确性的情况下在AI硬件上更有效地运行。Ragan-Kelley说,他们的工作在很大程度上偏离了标准的思维方式,在削减成本、提高能力和/或缩小LLM以需要更少的内存并在较小的计算机上运行方面可能带来巨大的回报。
在
计算效率和硬件方面,这种更前卫的思维是Ragan-Kelley所擅长的,并看到了价值,尤其是从长远来看。他说:“我认为有些领域(研究)需要追求,但这些领域已经很成熟,或者是显而易见的,或者是传统的智慧,以至于很多人已经或将要追求它们。“我们试图找到那些既能对世界产生实际影响的巨大影响力,又能同时成为不一定会发生的事情的想法,或者我认为相对于社区其他成员的潜力而言,这些想法没有得到充分的服务。”
他现在教授的课程6.106(软件性能工程)就是一个例子。大约 15 年前,设备中出现了从单处理器到多处理器的转变,导致许多学术项目开始教授并行性。但是,正如 Ragan-Kelley 所解释的那样,麻省理工学院意识到学生不仅要了解并行性,还要优化内存和使用专用硬件来实现最佳性能。
“通过改变我们的编程方式,我们可以释放新机器的计算潜力,并使人们能够继续快速开发新的应用程序和新的想法,从而能够利用日益复杂和具有挑战性的硬件。