为高效的视觉人工智能系统创建定制编程语言

2024年05月06日 由 neo 发表 954 0

一张照片能够透露出创作者的世界观——他们对某个主题或场景的兴趣和情感。但是,那些使这些图像得以实现的技术背后的创造者们又是怎样的呢?


A27167A6-29FA-4B1E-8019-AD3B39942F7D_1_105_c

麻省理工学院电气工程与计算机科学系的副教授乔纳森·拉根-凯利就是其中一位。他设计了从电影视觉效果工具到广泛应用于照片编辑和处理的Halide编程语言等各种工具。作为MIT-IBM沃森AI实验室和计算机科学与人工智能实验室的研究员,拉根-凯利专注于高性能、特定领域的编程语言和机器学习,这些技术使得2D和3D图形、视觉效果和计算摄影成为可能。

拉根-凯利表示:“我们研究的主要动力是开发新的编程语言,让编程变得更加简单,同时确保程序能在日益复杂的硬件上高效运行。如果我们想要不断增强实际应用中的计算能力——无论是图形视觉计算还是AI——我们就需要改变编程方式。”

寻找平衡点

在过去二十年中,芯片设计师和编程工程师见证了摩尔定律的放缓,以及从CPU上的通用计算向更多样化和专业化的计算单元,如GPU和加速器的转变。这种转变带来了权衡:在CPU上运行通用代码的能力相对较慢,而更快、更高效的硬件则需要代码进行大量适配和映射,并配备定制的程序和编译器。新型硬件配合改进的编程能更好地支持各种应用,例如高带宽蜂窝无线电接口、解码高度压缩的视频以进行流媒体播放,以及在功率受限的手机摄像头上进行图形和视频处理等。

拉根-凯利说:“我们的工作主要是为了释放我们所能构建的最佳硬件的潜力,为这类应用提供尽可能多的计算性能和效率,而传统编程语言无法做到这一点。”

为了实现这一目标,拉根-凯利的工作分为两个方向。首先,他放弃了通用性,专注于捕捉特定和重要的计算问题的结构,并利用这一点来提高计算效率。这可以在他共同开发的图像处理语言Halide中看到,Halide已经改变了Photoshop等程序中的图像编辑行业。此外,由于它专门设计用于快速处理密集、规则的数字数组(张量),它也适用于神经网络计算。第二个重点是自动化,特别是编译器如何将程序映射到硬件。他在MIT-IBM沃森AI实验室的一个项目中利用了拉根-凯利小组开发的Exo语言。

多年来,研究人员一直在努力用编译器自动化编码,但编译器可能是一个黑匣子;然而,仍然需要性能工程师进行明确的控制和调整。拉根-凯利和他的团队正在开发一种方法,平衡各种技术之间的权衡,以实现有效和资源高效的编程。许多高性能程序的核心,如视频游戏引擎或手机摄像头处理,都是由人类专家使用低级、详细的语言如C、C++和汇编进行大量手工优化的最先进系统。在这里,工程师会对程序如何在硬件上运行做出具体选择。

拉根-凯利指出,程序员可以选择“非常费时、非常低效、非常不安全的低级代码”,这可能会引入错误,或者“更安全、更高效、更高级的编程接口”,但这些接口缺乏在编译器中进行微调的能力,通常提供较低的性能。因此,他的团队正在试图找到一个平衡点。拉根-凯利说:“我们正在试图找出如何为人类性能工程师想要控制的关键问题提供控制,所以我们正在尝试构建一类我们称之为用户可调度语言的新语言,这些语言提供更安全、更高级的控制手柄来控制编译器的操作或控制程序的优化方式。”

解锁硬件:高级和服务不足的方式

拉根-凯利和他的研究小组通过两条工作线来解决这个问题:应用机器学习和现代AI技术自动生成优化的调度,这是编译器的一个接口,以实现更好的编译器性能。另一个使用他正在实验室工作的“外部编译”方法。他将这种方法描述为一种“将编译器内部翻转”的方式,有一个编译器的框架,用于人类指导和定制的控制。此外,他的团队可以在顶部添加他们的定制调度器,这可以帮助针对特殊硬件,如IBM研究院的机器学习加速器。这项工作的应用范围很广:计算机视觉、对象识别、语音合成、图像合成、语音识别、文本生成(大型语言模型)等。

他与实验室的一个大型项目通过系统镜头进一步推进这项工作。在他的指导下,实验室实习生William Brandon与实验室研究科学家Rameswar Panda合作,拉根-凯利的团队正在重新思考大型语言模型(LLM),寻找方法稍微改变计算和模型的编程架构,使基于变压器的模型能够在AI硬件上更高效地运行,而不牺牲准确性。他说,他们的工作在重要方面偏离了标准的思维方式,可能会为降低成本、提高能力和/或缩小LLM以减少内存需求和在较小的计算机上运行带来巨大的回报。

正是这种更前卫的思维,在计算效率和硬件方面,拉根-凯利擅长并看到价值,特别是从长远来看。“我认为有些研究领域需要追求,但它们已经很成熟,或者很明显,或者足够符合常识,以至于很多人已经或将会追求它们,”他说。“我们试图找到那些既有很大杠杆作用实际影响世界,同时又是其他社区相对于其潜力服务不足的事物。”

他目前教授的6.106课程(软件性能工程)正是这一理念的体现。大约15年前,随着设备从单处理器向多处理器的转变,许多学术项目开始着重教授并行性的概念。然而,正如Ragan-Kelley所阐释的那样,麻省理工学院意识到,学生们不仅要掌握并行性的知识,还必须深刻理解优化内存以及利用专用硬件来实现最佳性能的重要性。

“通过改变我们的编程方式,我们能够释放新机器的计算潜力,使开发者能够继续迅速开发新的应用程序和理念,从而充分利用更加复杂和具有挑战性的硬件。”

文章来源:https://news.mit.edu/2024/creating-bespoke-programming-languages-efficient-visual-ai-systems-0503
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
写评论取消
回复取消