中科加禾崔慧敏:AI芯片+编译器才是王道!将推出大

星空全站中科加禾崔慧敏:AI芯片+编译器才是王道!将推出大

产品型号:电力电子变流控制驱动
时间:2024-03-31 09:08:00 | 来源:星空全站APP 作者:星空体育全站app在线平台

产品详情

  9月14日~15日,2023全球AI芯片峰会(GACS 2023)在深圳南山举行。在9月15日AI大算力芯片专场上,中科加禾创始人崔慧敏分享了主题为《编译技术从学术研究到产业落地》的演讲。

  崔慧敏认为,大模型让国产AI芯片面临的生态困境更加凸显,编译器成为一大破解之道。简单来说,编译器是用于将机器语言翻译为人类语言的工具,在AI芯片产业链中,相当于AI芯片与AI用户之间的“桥梁”。

  在GPU时代,编译器的功能比较简单,且很长时间里都是英伟达一家独大。随着AI时代到来,编译器的内涵和外延进一步扩大,涉及了图、张量、指令、图算融合等不同层面的编译。

  在性能方面,编译技术可以发掘更激进的融合策略,进一步全局对计算、同步进行重排优化,为模型推理侧带来2~3倍的性能提升。

  在跨平台方面,基于机器模型概念,崔慧敏团队研发的PPOpenCL编译器可支持一份代码跨平台优化,达到接台调优版本最优效果。

  目前,中科加禾正聚焦搭建对不同芯片都适用的工具集,通过组件化服务助力AI芯片完成生态迁移等目标,并计划在2023年12月推出跨平台大模型推理引擎。

  大家好!我是中科加禾的创始人崔慧敏,我们是一家年轻的公司,8月刚刚成立,今天我们会分享我们为什么从学术走向产业来。我本人在学术圈做了20多年,一直在做编译的事情,现在确实发现在生态里有非常多编译可以做的事情和机会,希望大家可以开放地跟我们讨论,我们的产品定义和产品发布都在很开放的讨论中。

  今天我的报告主要分为三个部分:一是传统时代和现代时代的编译有什么不一样的地方;其次我会分享我们这么多年,特别是近几年,在AI编译方面的探索,我们来讨论AI编译在生态的潜力非常大,跟大家分享我们的一些工作;最后稍微跟大家介绍一下我们在产业界落地的想法。

  对传统的编译器,大家都比较清楚了,它是作为从高级的编程语言到底层芯片的桥梁,把上层人类理解的语言翻译成机器理解的语言。在这个过程中,编译器的角色就是能翻译对、翻译好、翻译得特别高效,在传统的CPU上基本上是这样的期望。

  在CPU时代,编译器相对比较稳定,基础架构以GCC、LLVM为代表,有两个基础设施,指令集(ISA)比较收敛,现在RISC-V的出现又对编译器提出了新的机会。对上层应用来说,语言不停地演进,但底层的编程语言相对比较稳定。

  所以在CPU时代,编译器的存在感比较低,除了芯片厂商和两大社区以外,更多的人在日常工作和科研中不太会碰到编译器。对编译的科研人员来说,中间这个时间相对来说比较平淡。

  到了GPU的时代,我从读博士的时候CUDA刚刚出现,我们去接收CUDA,再在上面做编译优化,也过了非常长的时间。它刚出来的时候不像现在这么火,当时推广都面临非常多的问题,做了很大的努力。到现在,CUDA已经形成了事实上的标准,这个标准包括了它的API、编程语言,底下有丰富的编译器。围绕它,我们整个AI的生态和市场主导都是这样被定义出来的。

  从CPU到GPU,编译器干的活儿已经比原来多很多了,大家意识到编译这个事情很重要。所以在CUDA上层,大家做了很多编译的工作,包括怎么从C自动生成CUDA、怎么能自动地把编译成CUDA的代码编译得更好等工作。这个时候,编译的存在感就已经比CPU时代更高一些了。

  现在到AI的时代,整个编译的内涵和外延都被不停地扩大。这张图是大家经常讲到的AI框架和底层编译器以及中间算子的关系。

  用户用上层像PyTorch这样的一些接口来写网络的流图,PyTorch负责把数据流图用框架的引擎执行起来,变成一个个算子,跑在底下各个不同的芯片上。在这个过程中,上层的框架怎么更好地跟底下的算子适配、怎么能生成更快的底层算子、整个一套性能怎么发挥得很好,从产业界和学术界,大家提出了非常多的新的编译概念,比如图层面编译、张量层面编译、底层指令层面编译。尤其是芯片厂商,一直在做指令层面的编译,学术界和工业界也都在做。

  近些年大家又在提图和算子的抽象,其实一定程度上影响了芯片算力的发挥,所以现在大家又在提图算融合编译、多层次编译等新的思想。

  另一个方面,由不同的芯片所带来的生态问题,也是大家一直在强调的。我这里列了几个代表性的厂商,也是我们合作比较紧密的厂商的软件栈架构。我们在跟他们合作过程中发现整个生态的问题里,芯片厂商付出了非常大的人力,做了非常好的规划,但是从芯片厂商到用户中间还有比较大的Gap,我们公司就想来做中间的桥梁。

  下面来分享我们之前在编译的科研方面所做的一些探索。(围绕)编译的潜力,我们从三个方面都进行了很多探索。

  首先是它的老本行性能,它能帮助芯片把更好的算力发挥出来,可以让一个应用在上面跑得更快,即使在英伟达的平台上,大家的优化也一直往前提,在英伟达的基础软件上可以做得更好。

  另外一方面,现在很多芯片厂商确实这么做的,软件和硬件之间的CO-DESIGN(协同设计),可以辅助结构设计人员来寻找更好的架构探索,这是我们之前做的一个学术研究的探索。

  今天的重头还是性能提升问题,最早的时候大家在图方面、算子方面做了很多优化。因为我们是做编译的,我们有一个最朴素的出发点,就是当你看到的信息越全面,所能做的优化就越彻底,效果就越好。

  我们当时出发点就是能不能把整个流图信息和指令信息拿到一起来看,这样可以拿到更多优化的信息,看到更广的范围,做更多全局最优的决策。所以我们做了这样一个框架,能把图和张量信息,以及张量和指令的信息结合在一起,做图算融合的优化。这样就把原来图和张量层面,以及张量和指令层面的结合更紧密,我们真的做了一个图、张量、指令全层次的编译优化器。

  这样的好处是什么呢?之前大家在AI编译里面做了非常多算子融合的技术,这些融合会从基于规则、模式来做融合的决策,最终大家看到的范围就是融合做得好,性能会得到非常显著的提升。

  我们的思路是,融合这件事情在编译里面是非常经典的问题,只不过在编译里不是叫算子融合,它叫循环融合或者代码融合。而且在编译里面,我们可以通过编译分析去寻找最优的融合策略,这个最优,我们可能考虑了通信量、访存量、计算量,编译能全局地来做融合。

  我们基于这样一个非常朴素的出发点,做出来了后来看起来是非常复杂的系统,做出来效果非常好。当时我们用的是Bert里的一个Transformer模块,经过优化以后,可以把整个下半部分框起来的灰色部分融成一个kernel,这里面包含了十几个算子,可以像(上图)右边这样全局排布它的计算,包括我们在重新调整它的同步模式,这样就可以实现非常好的效果。

  这是我们给出来的例子,我们把九个算子融合到一个,可以取得右边这样的时间加速,不管是在执行时间上还是执行指令上,我们都得到了非常好的优化效果。

  所以我们的一个结论就是:利用深度的编译技术,可以发掘更多更激进的融合策略,而且这个融合是跟模型没有关系的,不是说这个模型过来能做,换一个模型不能做了,因为我是全局分析它的最优,拿过来这个模型的流图以后去看到底怎么融合才能做到最好。当然进一步融合以后,我们就能做很多大家会做的事情,全局对计算、同步进行重排优化,所以我们跟TritonRT相比可以带来2~3倍的性能提升。

  我们两篇的论文,一个是今年的MLSys’ 23,已经发布了,一个是ASPLOS’ 24,是明年年初会发,我们正在准备最终的版本。

  效果还是非常明显的。从另一方面讲,编译最擅长的是能做一套优化,在不同平台都适用,这也是做编译的人一直都在做的。

  就像大家熟悉的,在做CPU编译的时候,里面都有一个机器模型,把这个东西定义好以后,就不需要在每一个平台上重新做一遍指令调度,重新做一遍分配,一切都可以自动适配这个模型。

  我们开始这个工作非常早,大概2010年初的时候就开始,那会还是OpenCL,大家抱有很大的希望,大家原来期望同一份代码在不同的平台上都能运行,这是OpenCL最初的初衷,但我们运行的时候发现,同一份代码在不同平台跑的时候,性能表现差距非常大。真的拿一份程序换到新的平台去跑,其实还需要重新来写一份,这就导致平台的可迁移性没有原来预想的那么好。

  所以我们做了一个叫做PPOpenCL的编译器,最核心的是把机器模型抽象得更好,当时还是针对不同的CPU和GPU,还是英伟达和AMD的GPU以及国内一些超算平台,我们做了很好的抽象,把机器模型的概念加入到OpenCL的编译器以后,就能实现一份代码在不同平台上都能达到这个平台上手工调得最优的效果。

  这是我们机器模型的概念,所以我们在整个产品的规划里也把机器模型作为核心理念。机器模型的好处是可以做一个优化,在不同的平台上都可以适配得很好。

  下面是我们的另外一个例子,这是针对大家都非常在乎的一些动态形状的矩阵层,我们知道不同形状的矩阵层,即使在英伟达的平台上,它的性能差异也会非常大。针对这个,我们用编译的思路把机器模型构建好,这里我会提到机器模型是编译优化的灵魂,把这个灵魂构建好以。


星空全站 上一篇:深度学习框架和深度学习算法教程 下一篇:CPU程序性能优化
分享到:
快捷导航: 星空全站 星空全站APP 新闻中心 产品中心 案例中心 星空体育全站app在线平台 网站地图

Copyright © 2016 星空全站APP在线平台(中国)注册登录下载 ALL RIGHTS RESERVED星空体育全站app在线平台
电话:0731-85133451/22201682地址:湖南长沙雨花区长沙国际研创中心A3栋