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