在《沙丘》构建的未来世界里,「得香料者得天下」。但在生成式 AI 席卷的智能世界里,得 GPU 者得天下。
前段时间,外媒 The Information 曝出了一则重磅消息:微软和 OpenAI 正在规划一个雄心勃勃的数据中心项目 —— 建造一台名为「星际之门」的 AI 超级计算机。这台计算机将配备数百万个专用服务器芯片,是目前一些最大数据中心的 100 倍。当然,这个计划是相当烧钱的,成本可能高达 1000 亿美元,令其他公司望而却步。
在国内,生成式 AI 引发的这场算力竞赛也变得愈发激烈。但除了疯狂堆卡,企业还有没有其他更加经济、有效的方法来提升算力,尤其是在 AI 芯片国产化进程加速的当下?对此,中科院计算所编译团队负责人、中科加禾创始人崔慧敏提到了一条鲜有人涉足的路径 —— 编译技术。
编译的作用就像一位翻译,它能把高级编程语言翻译成芯片可以理解并执行的机器语言。同时编译器还要做优化,让生成的机器代码运行起来更高效。
这种优化的力量有多大?崔慧敏提到,「我们能做到的是在不降低算法精度的情况下,把算力的利用效率给提上来,提供额外的 2~10 倍的性能提升。」这个数字可能超出了很多人的预料,就像崔慧敏所说,「在 AI 这样的负载里面,编译器的作用其实是被远远低估了的。」
那么,她提到的加速是在英伟达 GPU 上实现的,还是在国产卡上也行?是针对特定大模型做的优化,还是换个模型也能用?对此,她的答案是两个字 ——通用。
「我们做的是一层基础的软件平台层。有了这一层以后,底下的芯片就可以随意切换,上面的模型也可以随意切换,它们之间不再是一个紧耦合的状态了。」崔慧敏解释说。
其实,在当前的国产芯片生态中,这种紧耦合的状态非常常见。在 AI 芯片加速国产化的进程中,大多数国产芯片做了大量算子定制化开发工作,这不但大幅增加了开发成本,随之而来的还有技术标准化进程缓慢和兼容性的问题。各家厂商形成一个个独立的生态小岛,造成整个行业趋于碎片化,这无疑限制了技术和产业的快速发展和广泛应用。
崔慧敏团队想要做的,就是链接这些生态孤岛,通过一个编译中间平台,让模型、应用可以在不同的硬件平台之间自由移植,同时优化移植后的性能,后续出现的新模型、新应用也能无缝适配,保证持续的可用性。
「我们要用一套软件工具,实现大模型应用在国产算力平台上的 0 成本适配、0 损耗执行、0 延迟部署。」崔慧敏说。
这有望补齐国内 AI 产业生态的缺位,大幅降低上层应用在国产芯片平台上的落地门槛和成本,显著提升多种异构算力的利用和适配效率。
崔慧敏毕业于清华大学计算机系,并于中科院计算所获得计算机体系结构博士学位,持续从事编译方向研究工作,曾在芯片和编译器领域会议和期刊发表论文五十多篇。她已有 20 年以上的编译器开发经验,曾作为核心成员主持或参与过多款国产芯片的编译器研发工作。为了实现上述目标,她以中科院计算所原始编译团队为核心组建起了中科加禾的精英队伍。去年 8 月以来,中科加禾已经完成两轮,共计近亿元融资,股东涉及知名芯片领域投资机构、头部国产芯片、服务器、互联网等上下游厂商,其中不乏有过紧密合作的 AI 芯片产业伙伴。
在采访中,崔慧敏向我们介绍了国内编译技术的发展历程、国内 AI 芯片产业面临的挑战,同时也对未来跨多平台 AI 算力产品的前景进行了展望。
崔慧敏:自 97 年开始,我在清华计算机系读本科和硕士,毕业后在计算所读博,之后包括工作,就一直在做编译器和芯片工具软件相关的科研工作。编译这个方向比较偏向于理论和实践的结合,既有前沿的理论探索又有落地的工程开发。在这一过程中,我们一直都伴随着国产芯片的发展进行实践,形成了一支伴随着国产芯片的研发而成长起来的编译队伍。
在这个过程中我们做了很多方向,包括面向通用芯片、专用芯片的编译优化,我们在国际顶会和期刊上发表了一些论文,进行了很多学术交流。
近些年来,随着国家对国产芯片产业的推动,我们团队承担了很多构建芯片工具链方面的职责。但在这个过程中我们发现,纯靠科研的方式,尽管会产生很多创新突破,但可能面临难以产业落地的困境。一个软件从原型走到真正能用的工具,这里面还是有非常多工程化的事情要做。
做编译器这个事情,大家一直都觉得可能没有那么好做。不过,后来出现了两个驱动力,一个是大模型的出现,它对算力的需求极大,并且计算模式有一定的收敛;另一个就是业内对国产芯片的需求激增,而国产芯片的生态和英伟达相比又存在很大的差距。我们觉得在这个过程中,需要编译层和基础软件工具来弥合这个差距,让国产芯片把现有的生态利用起来,或者融入到整体生态中。我们希望通过增强国产芯片的通用性和适配能力,服务于国产芯片算力崛起,把自主生态的整体可用性提上去,把市场需求转化落地。
崔慧敏:我们之前一直在做很多面向底层芯片的兼容工具。最早做二进制翻译工具,就是能把 X86 的二进制程序翻译到底层不同的其他的指令集架构上。从那开始我们积累了非常多的关于兼容性、适配性、跨平台执行的能力。近些年来围绕 GPU 等架构,AI、高性能计算等负载,我们做了大量编译器优化的工作。
在这个过程中我们发现,在 AI 这样的负载里面,编译器的作用其实是被远远低估了的。通过深度的编译优化,一方面可以让同一个程序直接运行在不同的平台上,解决程序移植的难题;另一方面,移植后的程序还能在不同平台上保持优化后的性能,这是编译器能够发挥长处的一个机会。
在这些方面,我们前期有非常多的论文的积累,像我们近年在 ASPLOS 上发表的一系列论文。论文结果表明,编译器可以充分地挖掘硬件算力,在 GPU 和 NPU 上都能够取得非常好的性能。而且通过编译器的方案,我们能够比较彻底地解决问题 —— 它不是只针对某个场景或者某个芯片,而是比较通用的。
我们这个团队做了 20 多年编译,所以我们如果要创业,一定是围绕着编译这个核心技术来做。而在大模型出现之前, AI 的负载其实是比较发散的,其中的差异性还是比较大的。所以像 TensorFlow、 PyTorch 这些框架其实做了非常多的工作,对负载多样性提供了支持,比如说动态性、多样性,对各种神经网络的形态都能够支持得很好。那时算子存在着多样性,这意味着如果想要去做一层国产芯片上的软件,然后让它去支撑所有的负载,难度是相当大的。
大模型的出现,其实可以认为是一种模型结构的收敛。可能它不会代表所有,但是已代表了一大类负载,这一大类负载的市场足够大了。所以针对这一类负载,我们就有机会提供一套端到端的优化和编译的方案。
机器之心:中科加禾的团队中包含很多参与过国内重要 AI 芯片项目的专家,这些经验和能力对于目前做的事有哪些帮助?
崔慧敏:要把一颗 AI 芯片利用好,有两个方面的工作必不可少,一是可编程性,能够方便地把应用映射到芯片上;二是性能,能够充分地把芯片的算力利用好。
关于这两个方面,我们团队的核心成员在 CPU、GPU 和 NPU 上都积累了丰富的编译优化经验。对于某一款特定的芯片,我们可以用编译的方法把不同计算单元编排好,提升计算、数据传输效率,做到资源的最大化利用。另一方面,我们掌握了怎样去做一套优化,让它尽可能地适配不同平台。在这个过程中,我们形成了一套编译设计、优化的理念。
同时,我们会把这些能力尽可能地模块化,其中一部分是公共模块,适用于不同平台、不同芯片;另外一些是需要定制的模块。这两部分模块我们都有了很好的前期探索和理解,基于这些理解我们可以更好地构建出一个基础平台,当有新的负载或者新的芯片需求,我们可以更容易地去接入到这个平台上来。
机器之心:我们知道,像 ChatGPT 这样的大模型算力消耗非常大,有人认为这里面可能还有成百、上千倍的优化空间……
崔慧敏:所谓上百倍、上千倍的优化,里面既有硬件人的功劳,也有算法人、软件人的功劳。在硬件层面上,可以通过研发一些更好的芯片,比如特殊架构的芯片,把成本降下来。在算法层面,可以通过量化、压缩、剪枝把模型的计算量降下来。另外一个层面就是我们所做的,通过软件的部署把成本降下来。
我们做的事情和前面两个层面是正交的,就是说芯片设计出来如果是低功耗、低成本的,那编译层可以把芯片的算力充分地榨干。如果上层算法做了一些优化,那可以把做完优化以后的模型再拿到我们这个引擎上来部署。可以理解成:上层做好了算法,底层做好了硬件,我们来做更好的映射。
不过这里面也有一些权衡,比如说有的人对精度的要求特别高,就不希望通过量化、压缩牺牲模型的精度。我们能做到的是在不降低算法精度的情况下,把算力的利用效率给提上来,提供额外的 2~10 倍的性能提升。
首先是如何做算子融合。大模型有很多算子,我们可以把这些算子进行一些比较激进的融合,比如把十几个算子压成一个,这样就可以把 AI 加速卡的利用率提到一个很高的水平。进一步,如何把融合以后形成的大算子优化映射到不同的硬件平台上也是编译优化要做的事情。
其次是如何生成高性能的算子。在大模型中会有很多不同形状的矩阵计算,如何让这些计算都能获得接近硬件峰值的性能,是每个芯片厂商都需要付出大量努力去做的事情。我们会基于编译器的思想,通过基算子加组合的方式来自动生成这些算子,高性能的算子是大模型能够高效执行的基础。
最后是如何编排访存、计算和通讯。我们总希望芯片大部分时间都在算,而访存和通讯是要等待的,这就涉及如何更好地去切分和编排任务。考虑到不同的国产卡在计算、通讯、存储、带宽等方面存在差异,我们要做的就是怎么把这些因素抽象出来,再基于这个抽象去决定任务的切分,这也是我们要做的事。
机器之心:说到计算架构,行业内有一个绕不过去的 CUDA,有人说它很大程度上已是英伟达的护城河,如何看待目前行业的现状?
崔慧敏:我觉得您说得很对,不管是做编译器还是说做整个软件生态,我们可能都绕不过 CUDA。我们觉得 CUDA 确实是英伟达的一个护城河,多年来英伟达也确实围绕 CUDA 构建了非常庞大的生态,甚至可以说整个 AI 都是建在 CUDA 上面的。
有人说「天下苦CUDA久矣」,这背后是两个问题:如何利用、融合现有的CUDA生态,如何让国产自主生态生长起来。对于国内来说,各个芯片厂商会有不同的看法。有的芯片厂商会想要建一个自己的生态,就是成为中国的 CUDA;另外也有做 CUDA 兼容的芯片厂商。这是两条不同的路线。
我觉得这两条路线在长期来说应该是会共存的。即使是在英伟达 GPU 上,大家也是有用 CUDA 的,有用 Triton 等工具的。所以可能在未来很长一段时间,大家都在争取用户。这个时间会有多长,其实不好说。在 CPU 上,C 语言用了好多年,一直到现在也在用,大家也在持续提出新的语言,不同的语言反映了不同的设计诉求。所以我们觉得在国产芯片的生态建设过程中,CUDA 可能是绕不过去的一环,但它也肯定不是唯一的路径。
我们觉得可能兼容 CUDA 对硬件厂商来说是一个短期内占领生态的捷径,像 Triton 、SYCL 等新的语言,我们也要积极地去拥抱,因为它们或许代表了未来。
所以我们觉得两条路都是可以,都是应该走的。从这个角度来说,我们的芯片生态比较碎片化,可能这两条路都是必不可少的。
崔慧敏:我们主要探索的是与语言和芯片解耦的编译平台方向。作为一个中间平台,我们对前端语言不依赖,所有不同的语言都可以翻译到平台的中间表示。