不降低大模型算法精度,还能把芯片的算力利用效率提升 2~10 倍,这就是编译器的魅力。
在《沙丘》构建的未来世界里,「得香料者得天下」。但在生成式 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 久矣」,
探索国产 AI 芯片生态建设
机械之心:说到计算架构,行业内有一个绕不过去的 CUDA,有人说它很大程度上已是英伟达的护城河,如何看待目前行业的现状?
崔慧敏:我感到您说得很对,不管是做编译器还是说做整个软件生态,我们可能都绕不过 CUDA。我们感到 CUDA 确实是英伟达的一个护城河,多年来英伟达也确实围绕 CUDA 构建了非常庞大的生态,甚至可以说整个 AI 都是建在 CUDA 上面的。
有人说「天下苦CUDA久矣」,这背后是两个问题:如何利用、融合现有的CUDA生态,如何让国产自主生态生长起来。对于国内来说,各个芯片厂商会有分别的看法。有的芯片厂商会想要建一个自己的生态,就是成为中国的 CUDA;另外也有做 CUDA 兼容的芯片厂商。这是两条分别的路线。
我感到这两条路线在长期来说应该是会共存的。即使是在英伟达 GPU 上,各人也是有用 CUDA 的,有用 Triton 等工具的。所以可能在未来很长一段时间,各人都在争取用户。这个时间会有多长,其实不好说。在 CPU 上,C 言语用了好多年,一直到现在也在用,各人也在持续提出新的言语,分别的言语反映了分别的设计诉求。所以我们感到在国产芯片的生态建设过程中,CUDA 可能是绕不过去的一环,但它也肯定不是唯一的路径。
我们感到可能兼容 CUDA 对硬件厂商来说是一个短期内占领生态的捷径,像 Triton 、SYCL 等新的言语,我们也要积极地去拥抱,因为它们或许代表了未来。
国产的芯片自建生态这条路我感到在一定领域内也是可行的。
所以我们感到两条路都是可以,都是应该走的。从这个角度来说,我们的芯片生态比较碎片化,可能这两条路都是必不可少的。
机械之心:在这其中,中科加禾主要走的路线是哪一条?
崔慧敏:我们主要探索的是与言语和芯片解耦的编译平台方向。作为一个中间平台,我们对前端言语不依赖,所有分别的言语都可以翻译到平台的中间表示上,然后通过中间表示再往分别平台上去走。
在支持的优先级上,一方面我们有一部分的算子会去做 CUDA 源源翻译,就是通过软件来做一些算子转译的事。另一方面我们也会去接入像 Triton、SYCL 这样的新言语。我们会采用一套统一的中间表示,让任何言语都可以翻译到这个中间表示上。这样的话,如果将来再出一个新的言语,或者要推一个新的标准,都可以比较容易地接入到这个平台上来。
上接各类大模型,下接各家芯片,
突破通用性挑战,提供商业化最优解
机械之心:你们在做的,是面向大量硬件、大量模型的对接工作?
崔慧敏:对,大概是这样一个角色。比如传统行业的公司需要部署一个大模型,目前基本上是以手工的方法来做适配,各人依然面临通用性的挑战。而我们的解决方案是在中间做一层基础的软件平台层,有了这一层以后,底下的芯片就可以随意切换,上面的模型也可以随意切换,它们之间不再是一个紧耦合的状态了。
在模型收敛、算力巨量、应用激增的情况下,现在很少有开发团队写最下层的模型,更多的工作是在微调开源模型,这也导致适配层面的稀薄、脆弱成为共性问题。目前各人都在解决「如何让已有的应用在国产芯片上运行起来」。按发展态势来看,「以后要开发新的应用怎么办」的问题会加剧显现出来。
我们在做的通用性的软件工具就是为了解决这些问题存在的。我们要用一套软件工具,实现大模型应用在国产算力平台上的 0 成本适配、0 损耗执行、0 延迟部署。
机械之心:给分别的国产芯片去提供相对统一的一个平台,是件很有挑战的事。
崔慧敏:确实是这样,这也是碎片化的生态带给应用方的一个挑战。因为分别的芯片,首先下层的架构就不一样。国内的芯片大概分成两种,一种是类 GPU 架构,一种是 NPU 架构。我们肯定不希望应用层需要针对每一家分别的芯片去重新构建自己的程序,也不能要求每一家硬件厂商都提供足够丰富的算子让应用层使用。所以这里面就有一个挑战,怎样通过一套工具把分别的架构归拢在一起?
这里我们会有分别层次上的考虑。像大模型,我们就是从框架或引擎的层面上进行统一。比如算子层有统一的接口,我们就可能统一纳入考虑。另外就是可以通过算子转换工具,或是算子生成、编译等优化方法,这些方面我们都布局了相关的产品线。
不过,这里面也有一个矛盾,就是你一旦通用了,机能就会受影响。如何可能做到既通用又尽可能降低机能损失,这是我们要突破的核心问题,是技术侧的挑战。
因为芯片本身的研发节奏不一样,我们还会受到分别芯片厂商本身研发节奏和软件工具链研发节奏的影响。
在商用侧,成本、机能、效率是绕不开的问题,我们希望通过一套稳定、可靠的适配优化平台,实现软硬件协同、平衡成本、机能、效率的最优解。
大模型时代,也是编译器的黄金时代,
建好一座「桥梁」
机械之心:2019 年,两位图灵奖获得者 ——John Hennessy 和 David Patterson 刊文说,计算机架构正在迎来一个新的黄金时代。而作为驱动计算机架构革新的重要组成部分,编译器也在迎来它的黄金时代。能否根据您过去几年的经历、体会谈谈对这句话的理解?
崔慧敏:对,我感到确实是这样。这个黄金时代不光是科研工作的黄金时代,也是建设国产芯片生态的黄金时代。
从学术角度来看,近几年顶会上冒出来非常多 AI 编译相关的文章,包括下层编译,而且一直在飞速增长。以前这类文章很难发在顶会上,比如 ASPLOS 这样的顶会。
中科加禾两篇模型推理相关论文发表于计算机体系结构顶会 ASPLOS’2024,相关技术已经融入公司产品。来源:https://mp.weixin.qq.com/s/vx8mfmDmhJz3InhdZSQuSQ)
从产业角度来看,在国外,提出「编译器黄金时代」的大牛 Chris Lattner 本身也创办了自己的公司 ——Modular AI。在国内,受 Modular AI 的启发,投资人判断国内也有这样一个机会。其实,各人最初的出发点非常朴素,就是说从芯片的多样性上来说,中国一定是一个芯片最多样化的市场,这个市场一定会对编译提出一个统一的需求。在公司成立之后,许多投资人和产业伙伴来联系我们,希望达成合作。我们看到,无论是投资圈还是产业圈,各人都有一个共识,那就是编译器领域存在明显的市场机会。
在发展进程上,编译器是稍微滞后于体系架构的。所以当体系架构的黄金时代到来之后,紧接着就会迎来编译器的黄金时代。我们也是跟做硬件、软件、算法的伙伴都做了交流探讨之后,才终于确信这对我们来说是一个很好的机会。
机械之心:根据您的观察,在大模型时代,AI 加速的需求正在发生怎样的变化?
崔慧敏:我感到分为两个方面。一方面,AI 大模型会给未来的硬件带来一些新的机会,因为它们确实和以前的模型不一样了,它们会对优化方式提出无数不一样的要求。所以我们看到做 LPU 的 Grok 就针对大模型提出了新的硬件架构。其实国内的无数厂商也在探索类似的事情,就是怎么针对 Transformer 做更好的硬件加速。我感到这方面迭代会很快。
另外一方面就是大模型需要的绝对算力确实是太大了,所以它对机能的要求是极致的,要从整个链条的环节上去压缩成本。AI 1.0 时代的模型,芯片机能发挥到百分之四五十也可以。但是现在,你要把每一点价值都充分挖掘出来,一定要极致地去压榨芯片的机能,所以它对优化 —— 无论是硬件的优化还是软件的优化 —— 都提出了不一样的挑战。
在这个背景下,我们感到,大模型推理侧的市场会非常大。在大模型推理侧,各人面向的场景可能会非常不一样,对模型大小的需求也不一样,所以这会是第一个非常多样的市场,就是多种大模型推理芯片共存,所以对碎片化生态的整合需求也比较大。
机械之心:我们看到,在这次的大模型浪潮中,AI 芯片的国产替代进程正在加快,那么与之强关联的编译器能做到多大?
崔慧敏:编译器分两个概念,一个是芯片本身的编译器,我们把它叫做下层编译器,这个肯定是每个芯片公司来做的。我们做的是更上层的编译工具软件,这个软件基本上是用来完成开放生态和国产芯片下层的对接这件事。我们之间是相互配合的关系。AI 芯片的国产化替代是一个不可避免的过程,而且本身大模型对卡的需求也会有一个增长,所以我们感到未来国产芯片的市场还是会快速增长的。
2023 年,中国 AI 芯片市场规模已经超千亿元,英伟达仍然独占最大份额,如果国产芯片替代率可以在 3 到 5 年内达到 50% 或更高,再加上 AI 算力本身需求的增长,国产 AI 芯片的市场规模可能也会很快达到千亿人民币的水平。伴随着大模型和算力市场的双重推动,我们做基础设施软件的机会还是很大的。
在成立之初,我们定下的目标就是争取让我们的软件装到每一块国产卡上去。当然,这不是说我们要管每一个国产芯片厂商去收钱。我们的付费用户可能是多方的,比如集成商、云的建设方、智算中心的建设方…… 我感到只要我们能把国产卡变得更好用,那市场是认可来给这个软件付费的,毕竟现在 AI 能创造的价值太大了。
机械之心:现在大模型落地的速度很快:手机 SoC 正在加入大模型优化机制,电脑也出现了 AI PC 的概念。在消费电子端,国内公司在计算架构层是否会有机会?
崔慧敏:机会还是挺多的。像现在的智慧屏、学习机、儿童互动游戏设施已经把大模型的对话能力、言语能力利用起来了。因为这些领域落地成本没那么高,市场需求也比较明朗,比较容易针对家庭环境、家庭成员来做定制,所以我感到大模型会在家居场景中很快落地。另外值得关注的就是 AI PC,以及端侧 NPU 的加入对大模型落地的推动,这可能带来新的办公模式。
机械之心:中科加禾会往这方面布局吗?
崔慧敏:也会发展。我们的大模型推理引擎分云侧和端侧,所以端侧我们也在做,也在接触一些厂商了。
机械之心:您之前演讲提到,随着 AI 时代的到来,编译器的内涵和外延正在不断扩大,能否解释一下这个现状?
崔慧敏:我们感到 PyTorch 的路径是可能代表这个方向的。其实最早我们说编译器的时候可能做类比的就是 CUDA,CUDA 往下叫编译器。这是严格意义上传统的芯片编译器,就是类似 CUDA 把程序翻译到英伟达的 GPU 上去。对应到我们国产芯片也都有各自的下层芯片编译器。
到了 AI 时代,各人在框架层面也做了无数编译器的事情。各人会把这一层叫 AI 编译,包括 TVM、XLA 等。这个时候,编译的概念就往上走了一些。但是进到上层,各人原来做的事情并没有那么多,可能更多是图的融合、张量的优化之类的。
但是我们现在看 PyTorch 2.0 其实是把整个编译的概念大大延伸了,它把图上的编译、动态性的处理等都纳入到它的架构里了。当然,它的这个设计也是为了未来让更多的芯片可能比较容易地接入进来。它中间有无数层,每一层都有无数编译技术的支撑,让它可能更灵活、更通用。
我感到编译的目的就是让整个系统变得更灵活、更通用。因为整个 AI 系统一开始构建起来的时候,走的是一个快速路线,即让更多人更容易地用起来。但是在对硬件的支撑和适配方面,原来没有考虑那么多,考虑更多的还是算子的接入,也就是硬接入的方式。PyTorch 2.0 更多的是把对算子的依赖变成自动生成算子:工程师在上面写一个算子,它可以一点一点自动生成。作为一个芯片后端,只要把这个接入做好,就能很好地接入到整个生态里面去了。各人都在朝着这个目标去努力。
所以我们看到编译的外延其实逐渐被延伸到了整个的 AI 框架里。各人在每一个层面上都会包含无数编译的能力和理念。包括像 MLIR 这样的编译的基础平台,也是希望可能通过从最高层接入编译的一些知识,中间层是编译的分析,最下层是编译的映射,这种架构设计,让应用可能更容易、更快地映射到分别的平台上去。
我感到对于编译而言,问题还是在于怎么能在软件和硬件之间建立一个更好的桥梁。在 AI 时代,这个桥梁可能不是一下子就建好的,需要一层一层来建。这就是我们正在做的事情。
「聚芯片之合力,筑国产之生态」,让国产芯片更好用是我们的初心,也是我们的梦想。