芯东西(公众号:aichip001)
编辑 | GACS
9月14日~15日,2023全球AI芯片峰会(GACS 2023)在深圳南山圆满举行。在首日开幕式上,原粒半导体联合创始人原钢分享了题为《AI Chiplet:加速大模型在边缘端多场景落地的新思路》的主题演讲。
由于大模型蒸馏技术得到了充分发展,超大模型可以生成一系列适合边端的小模型,取得接近于大模型的效果。而说到大模型边缘端部署,一定离不开芯片的支持。原钢谈道,面对大模型,当下的边缘端芯片面临挑战,涉及模型演进、存储容量、带宽、互连、功耗、方案成本、多变需求、研发成本、研发周期等多个方面。
对此,原粒半导体的思路是用AI Chiplet的方法应对,把SoC算力跟NPU(神经网络处理器)的AI算力解绑,再灵活组合出边缘端芯片,以适配边缘端大模型的推理要求。目前,原粒半导体已研发出多模态算力核心CalCore技术,支持企业将大模型部署在端侧;以及自适应算力融合CalFusion技术,自动分配芯粒以捆绑不同的算力。
以下为原钢的演讲实录:
大家下午好,我叫原钢,来自原粒半导体。今天很感谢主办方邀请我能来参加活动,我们主要是想分享一下大模型在边缘端侧的一些想法。
我这次主要报告大概分成三个部分:一是边缘端大模型芯片机遇和挑战,二是如何用Chiplet推动边缘端大模型部署,最后是原粒半导体在AI Chiplet方面所做努力或者想法。
一、大模型奔向边缘端,AI芯片面临九大挑战
第一部分,边缘大模型AI芯片机遇和挑战。就在几个月之前,基本上大家谈到大模型还是大语言模型,无论是ChatGPT,还是百度文心一言,以及阿里、腾讯、科大迅飞的(大模型),大家都是在云端做大模型的推理。在云端推理,并不适合每一个场景,有很多场景需要在边端推理。
这里总结了四个典型问题:
第一,在云端推理,当你用户的数目激增的时候,基本上云端服务器的成本,无论是部署成本还是最后的运营成本,总成本都会得到很大的提升。根据CNBC报道,微软在Bing里已经集成了ChatGPT的引擎,如果想满足所有Bing客户的请求,想得到一个很好的响应,大概要部署16万块A100,投资40亿美元,并不是每一个创业公司都有能力、有足够的成本覆盖这部分的投入。
第二,大模型对网络要求非常强。有很多场景不可能时时刻刻有联网,典型就是车,因为车在城市里开问题不大,一旦开到郊区,开到无人区或者越野,大概率网络会时有时无,甚至山里很可能没有网络了。无论是座舱还是自动驾驶,如果是高度依赖云端推理,我想在车领域是很不适合的。
第三,云端无论是因为算力的涨落还是因为网络延迟,总会造成控制网络的延迟。比如谷歌演示的通过大模型演示机械手,如果依赖云端的推理,很可能在机械手操作过程中出现卡顿,甚至出现更多的错误,这对于机械手来说是绝对不能接受的。
第四,云端安全问题。有很多场景是非常明显的,像医院会有很多病历,对于他们来说都是非常高的精密数据,他们大概不会把它传到云端去做推理。大模型很大的应用是对于已有文档的推理或者归纳,产生一些新的报告,比如让它阅读以往的文件、产生综述或者分析以往病历、推理病的诊断。这个情况下如果把之前积攒的模型全部放到云端,这对很多特殊场合肯定是不能接受的。
最近两三个月来,可以看到整个大模型在加速地奔向边缘端。因为目前大模型蒸馏技术得到了充分的发展,使用原来预训练超大模型,通过对应的办法,生成一系列适合边端的小模型,就能取得接近于大模型的效果。
右边列了比较典型的例子,类似于Meta已经推出7B、13B、70B,最早是3B。这种模型,如果进行量化,比如量化成INT4之后,它很适合在边缘端设备上部署的。
我们也看到最近两个月,无论是高通还是苹果,都已经尝试在他们的手机上部署大模型。左边结构是我自己iPhone的截图,它跑的是7B模型,达到了相对比较好的结果。当然可能跟云端ChatGPT没法比,但是我感觉如果对一些垂直领域的应用来说,可能不需要回答一些哲学问题,只是让它回答简单的问题,还是高度可用的。
既然说到大模型要到边缘端,一定会有芯片。本身在边缘端大模型芯片,现在多数是SoC。如果你为边缘端推理部署一些芯片,我们大概总结了一些困境或者一些需要考虑的问题:
第一,模型演进。整个大模型的演进复杂度远超原来CNN算法复杂度,而且算法不断迭代。包括Transformer本身,很可能不久将来对基础的结构也会替换掉。这样就要求当我们做芯片设计,比如AI IP的时候,就不能说针对某一个模型做优化,很可能当你芯片出来之后就已经过时了,不能支持最新的算法。
第二,存储容量。大模型的容量远远超过之前传统CNN的模型。最小的大模型,就算是3B,如果不量化,大概也有3GB容量,已经超过很多经典SoC能支撑的容量。
第三,带宽。如果拿大模型做语音推理,基本上每吐出一个字/词就要把整个模型完整地Round一遍。如果达到一秒钟吐出10个词,如果用一个3GB模型,整个SoC带宽至少要30GB,才能够支持这么一个推理。
第四,互联。如果跑很大的模型,很可能一个芯片不能完成。就像刚才嘉宾讲的,他们是用芯粒的方式,可能会用多个芯粒或者多个芯片完成一个大模型的推理。对于大模型怎么拆分,拆完之后你认为怎么分配、算力怎么部署,会有很复杂的考量。
第五,功耗。边缘端最看重功耗。因为在云端,功耗就是成本问题,无非是对各种散热方法,可以承受。英伟达最新的H100或更高的卡,可能已经到700W功耗,这对数据中心来说不是什么大问题,但是作为边缘端,基本功耗超过10W就加风扇了。加风扇,一是有噪音,二是风扇可靠性会有问题,所以边缘端,功耗是非常重要的因素。
第六,整个方案的成本。比如你要搭配不同的算力,成本是决定大模型在边缘端能不能真正大批量铺开一个非常关键的因素。因为很多应用,大模型本身是做一个赋能,如果成本太高,去做市场推广也是很不利的。
第七,多变需求。大模型的尺寸可能既有不到3B,又有超过10B甚至100B,很可能你需要在不同场景部署不同的尺寸大模型。这样就要求你,很难用统一的标准或者几个标准的规格SoC去覆盖这一系列模型,因为这样对于成本不是特别划算。最好的是给每一个算法或者每一个模型尺寸专门去配一个SoC,这对于研发来说成本是不能接受的。
最后两项:一个是研发成本,一个是研发周期。现在一个SoC,如果12纳米,基本上在1000万到2000万美元之间,连IP到后端可能才能拿下来,周期基本18个月,连前端验证+后端+整个软件开发。如果你想开发太多规格的SoC,无论是周期还是成本,都是很难承受的代价。
二、AI Chiplet :边缘端大模型部署新选择
下面讲讲我们如何去破解刚才提到的问题,我们的思路是用AI Chiplet的方法进行应对。
首先拿桌面游戏的PC举例,因为我是很多年电脑游戏的玩家。我们在学校去配一台游戏电脑,CPU没什么太多可选的。现在我们就用一颗i5 13500或者i7 13700,就能满足绝大部分的要求,主要成本或钱就花在显卡上。玩一些网游显卡需要两千,主流游戏可能要三千到四千,骨灰级游戏可能要一万多,就是英伟达的4090。依此类推,基本上CPU跟主板变化是非常小的。主要对游戏来说,CPU都不是瓶颈,真正瓶颈在显卡。
我们拓展到边缘端是一样的,现在很多边缘端应用,SoC或者是Arm,它的能力都足够覆盖大模型处理需求,真正差别在于NPU本身。我们可以参照PC端情况,我们把SoC和NPU也进行解绑。像这边,也是对应左边三个显卡,也是列出三种NPU Die的组合。
比如我们拿一个SoC配合轻量级NPU,它就可以处理一些比较轻量级的AI任务。拿SoC配一颗中量级的NPU Die,就可以处理稍微复杂的工作。把同样一个SoC去配两颗NPU Die的组合,就可以处理非常重的任务。这是把算力跟NPU解绑的过程,可以很灵活各种方案适配边缘端大模型推理的要求。
我们是用NPU、用芯粒来解决问题,怎么做呢?说起来简单,其实有很多问题要考虑,尤其是成本。由成本,又引入了互连、存储、扩展三个方面。
首先看互连,因为现在NPU基本是基于MR总线或者基于其他的总线,它是很宽的一个并行接口。如果简单把它移到片外,等于你要应对几千条很高速的连接才能跟CPU进行连接。对于封装甚至最高级的封装是不能接受的,所以必须把接口进行转换。但是转换就有很多不同的选项,包括USB也有很多不同的选项。不同的选项,决定它有不同的成本,包括方案,2D封装还是2.5D封装?一个基板,到底是5美金还是20美金?这个会差得非常大。
当我们芯粒跟SoC互连,目前的情况主要是,市面上的SoC或者已经做好的SoC的设计都不会有专用的die-to-die结构,还是用通用的PCIe或者USB接口。如果把NPU从CPU中剥离,如果用专用结构,整个设计要重来。如果已经有现成的一颗SoC,不想重来怎么办呢?就可以用USB或者PCIe接口,跟主芯片进行互连,这样可以很快地得到一个全新的设计。
然后存储,这主要是说AI Chiplet到底是自带DRAM还是主SoC的DRAM?因为现在多数主流SoC本身DRAM的位宽不是很宽,最大的也是将将应对大概7B大模型的支持。我们如果去选择用共享来做DRAM,它的好处是成本,整个方案可能只用同一个DRAM,但是它会抢主SoC带宽。尤其同时显示,显示要不断刷屏。如果用大模型推理,再去抢主SoC带宽,会对原来功能形成冲击。这块要平衡一下,到底RAM是放在主芯片,通过总线共享,还是每个AI芯粒要自带一个DRAM?
然后是扩展,扩展主要指的是到底是从头为了把AI芯粒拆分出来,重新设计一颗?还是尽量借由现有的SoC设计,只去迭代推出一个方案?如果是AI Chiplet,面临多芯粒互联的问题,因为芯粒最大的好处是堆叠不同数目的Die、不同种类的Die,来实现迅速的新方案,所以互联也是它难以避免的话题。
三、原粒AI Chiplet,助力SoC厂商拓展大模型边缘端应用
下面简单给大家汇报一下我们原粒半导体在AI方面的进展,还有我们一些想法。
首先给大家介绍一下,我们公司成立也不太久,我们所有核心成员都是来自于国内、国外顶级的芯片公司。整个团队在AI方面的经验有很多年的时间,一直专注于AI芯粒本身。我们公司的目标是专注于AI芯粒本身,配合其他成熟或者现有的厂商,提供做大模型算力的支持。
我们主要提供下面四类产品:第一,标准AI Chiplet产品,翻译过来就是买Die。第二,我们会把AI Chiplet做封装,提供给客户。因为有些客户是没有封装设备能力,可能它有一个芯片但是不希望进行合封,因为种种原因可能不太适合合封,我们可以把我们的Die封成芯片,在PC板上跟它进行连接。第三,我们会做一些定制化AI Chiplet封装,主要是两方面,一是AI Chiplet规格,比如客户需要多少算力、需要什么样的接口,我们可以定制;二是可以通过客户所需要的算力,去搭配不同数目的AI Die,给客户提供类似的选择。最后,AI应用开发软件栈,毕竟也是我们一个异构的AI处理器,肯定是需要有一些配套的软件开发栈完成客户的设计。
这边主要介绍我们公司两个核心技术,一个是重中之重,多模态算力核心。无论是对于传统CNN算法,还是对于目前大模型、未来多模态算法,都能提供很好的支持。它为了支持未来的这些算法,尽量提高兼容性,做了从INT4、INT8、FP8等全精度的支持,便于客户把它在显卡上所训练好的模型直接部署到我们芯片中。
第二个是跟AI Chiplet结合很紧的自适应算力融合技术,这也是跟芯粒概念息息相关、紧密捆绑的,必须得做一个不同拓扑结构的支持。我可能会根据不同算法要求或者不同应用场景,去捆绑不同的算力。同时,不同芯粒之间可能也会用不同的拓扑方式。如果你让客户根据拓扑结构编程、定制,我想体验会非常差。我们这边所有的软件和硬件是支持拓扑自适应的连接,无论芯粒配了多少颗,用什么样的拓扑,会自动把它进行分配,包括协调芯粒之间的连接。
当我们有4个芯粒组成的系统,怎么动态分配它的连接还有算力?左边是基于Tranformer大模型的一段,比如这个模型非常大,无论它的容量还是算力都不足以被一颗算力所支撑,我们会把它拆成两段,把它放在两个芯粒,甚至拆成更多的段。当然,这个工作都是由编译器、运行时自动完成的。
如果是右边的案例,这是稍微比较经典的CV视觉任务。当我们一个芯粒能处理超过一个模型的时候,会把我们输出数据最合理地分配到不同的芯粒之间,实现一个更高的效果。我们支持通过分景模型、分景任务,自动分配。无论是对于模型切分,还是对于任务进行切分,都是能完成的。
另外强调一点,目前看到的一些新的应用或者新的场景,是对于本地大模型微调的需求。以后大模型更多是垂直领域,无论是律所还是医院,甚至更加小众的,他们大概的模式是去下载预训练大模型,结合本地一些数据,然后做微调,去匹配,在本地进行更符合本地业务的推理,这也是未来大模型非常典型的应用。
传统的方法怎么做的?我拿大模型,在云端或者在大服务器上,针对本地的数据进行微调。因为芯粒支持多精度计算,我们是支持在边缘端针对本地采集的数据进行微调。我们把大模型微调的位置从服务器或者从客户中心转移到边缘端设备,这未来一定会创造很多新的应用场景。
基本上每家做芯片都会有,配合AI Chiplet一定会有一套软件。这跟别家不一样,对多芯粒之间拓扑的支持。无论你的算力是多少、你的配置多少,一定会有一个配置,如果你要求客户自己根据硬件连接做特殊编程,一定会有非常差的体验。我们从供应链、运行时的角度,能够根据你的配置、算力、任务需求自动分配,完全是透明的,用户看到的就是算力大了很多。比如我们用了4个芯粒,用户看到就是算力×4统一的接口,不会按照4个NPU的方法去编程。
为了加快产品落地,也是为了尽量重用市场现有SoC厂商的产品,我们为一些成熟SoC产品做优化。主要是这几块:
第一,我们是会用标准的接口搭配现在已经成熟的SoC,无论是市场上买到的还是未来的发布,大多数可能具备PCIe或者USB接口。
第二,芯粒互连,我们采用的是多模态die-to-die接口。多模态指的是既支持在同一个封装上进行多模态集成,也支持多个芯片在PCB上进行互连。这样的好处是,用户可以通过最大的灵活性满足要求。因为我们重做一个封装至少要6个月时间,从设计到打样、量产,毕竟还要去调测程序,还要做很多事情。但是重做一个PCB,最快一个月时间可以完成一个生产。为了能够满足尽量多样化配置和规格需求,也尽量缩短研发时间,我们采用了既支持多Die在统一封装形式,也支持PCB级扩展的模式。
我们放了很多异构核心,主要考量我们想尽量降低对主芯片算力的需求,采用最低端的CPU也可以通过配合AI芯粒完成大模型的推理。
我们也会支持一些可选非易失性存储器接口,主要是考虑当配合一些很低端CPU的时候,可能不具备高速的Flash接口。我们会在芯粒内部会支持这么一个加载,其实也是变相减轻了对主CPU的需求。我们还是采用2D封装,尽量满足成本需求,没有采用2.5D封装。
给大家汇报一下我们目前的产品规划。
这是我们第一代产品规划,单芯粒数+TOPS INT8等效算力,支持多芯粒扩展数十至数百TOPS INT8等效算力;支持FP32/FP16/BF16/FP8/INT8/INT4等AI精度;我们是支持高效训推一体架构,支持通用算子及自定义算子。
在互连方面,我们支持die-to-die方式,也支持通过PCIe和USB等方式互连。支持不同位宽不同数目的位置,满足不同场景的需求。这是我们推出的标准封装片产品,包括封了1个Die、2个Die,还有4个Die的。
我们列了一些现在主流上能买到的SoC规格,至少是A53、A55起。我们认为这些SoC跑大模型足够强,它们有足够数目的视频接口,也有足够规格的硬件接口,是跑编程大模型一个很完美的CPU配置。只要去搭配原粒现有的AI Chiplet,很快可以实现边缘端大模型推理方案。
最后给大家讲一下我们的愿景,我们的愿景是聚焦高性价比、多模态通用AI Chiplet研发。我们目标是配合现有SoC厂商,一起合作供应推出大模型边缘端方案。我们的远景是做一个最全面AI算力基础设施供应商。我的报告到这里,谢谢大家聆听。
以上是原钢演讲内容的完整整理。