2024年9月20日

9 月 14 日 ~15 日,2023 全球 AI 芯片峰会(GACS 2023)在深圳南山举行。在首日开幕式上,原粒半导体联合创始人原钢分享了题为《AI Chiplet:加速大模型在边缘端多场景落地的新思路》的主题演讲。

由于大模型蒸馏技术得到了充分发展,超大模型可以生成一系列适合边端的小模型,取得接近于大模型的效果。而说到大模型边缘端部署,一定离不开芯片的支持。原钢谈道,面对大模型,当下的边缘端芯片面临挑战,涉及模型演进、存储容量、带宽、互连、功耗、方案成本、多变需求、研发成本、研发周期等多个方面。

对此,原粒半导体的思路是用 AI Chiplet 的方法应对,把 SoC 算力跟 NPU(神经网络处理器)的 AI 算力解绑,再灵活组合出边缘端芯片,以适配边缘端大模型的推理要求。目前,原粒半导体已研发出多模态算力核心 CalCore 技术,支持企业将大模型部署在端侧;以及自适应算力融合 CalFusion 技术,自动分配芯粒以不同的算力。

大家下午好,我叫原钢,来自原粒半导体。今天很感谢主办方邀请我能来参加活动,我们主要是想分享一下大模型在边缘端侧的一些想法。

我这次主要报告大概分成三个部分:一是边缘端大模型芯片机遇和挑战,二是如何用 Chiplet 推动边缘端大模型部署,最后是原粒半导体在 AI Chiplet 方面所做努力或者想法。

第一部分,边缘大模型 AI 芯片机遇和挑战。就在几个月之前,基本上大家谈到大模型还是大语言模型,无论是 ChatGPT,还是百度文心一言,以及阿里、腾讯、科大迅飞的(大模型),大家都是在云端做大模型的推理。在云端推理,并不适合每一个场景,有很多场景需要在边端推理。

第一,在云端推理,当你用户的数目激增的时候,基本上云端服务器的成本,无论是部署成本还是最后的运营成本,总成本都会得到很大的提升。根据 CNBC 报道,微软在 Bing 里已经集成了 ChatGPT 的引擎,如果想满足所有 Bing 客户的请求,想得到一个很好的响应,大概要部署 16 万块 A100,投资 40 亿美元,并不是每一个创业公司都有能力、有足够的成本覆盖这部分的投入。

第二,大模型对网络要求非常强。有很多场景不可能时时刻刻有联网,典型就是车,因为车在城市里开问题不大,一旦开到郊区,开到无人区或者越野,大概率网络会时有时无,甚至山里很可能没有网络了。无论是座舱还是自动驾驶,如果是高度依赖云端推理,我想在车领域是很不适合的。

第三,云端无论是因为算力的涨落还是因为网络延迟,总会造成控制网络的延迟。比如谷歌演示的通过大模型演示机械手,如果依赖云端的推理,很可能在机械手操作过程中出现卡顿,甚至出现更多的错误,这对于机械手来说是绝对不能接受的。

第四,云端安全问题。有很多场景是非常明显的,像医院会有很多病历,对于他们来说都是非常高的精密数据,他们大概不会把它传到云端去做推理。大模型很大的应用是对于已有文档的推理或者归纳,产生一些新的报告,比如让它阅读以往的文件、产生综述或者分析以往病历、推理病的诊断。这个情况下如果把之前积攒的模型全部放到云端,这对很多特殊场合肯定是不能接受的。

最近两三个月来,可以看到整个大模型在加速地奔向边缘端。因为目前大模型蒸馏技术得到了充分的发展,使用原来预训练超大模型,通过对应的办法,生成一系列适合边端的小模型,就能取得接近于大模型的效果。

右边列了比较典型的例子,类似于 Meta 已经推出 7B、13B、70B,最早是 3B。这种模型,如果进行量化,比如量化成 INT4 之后,它很适合在边缘端设备上部署的。

我们也看到最近两个月,无论是高通还是苹果,都已经尝试在他们的手机上部署大模型。左边结构是我自己 iPhone 的截图,它跑的是 7B 模型,达到了相对比较好的结果。当然可能跟云端 ChatGPT 没法比,但是我感觉如果对一些垂直领域的应用来说,可能不需要回答一些哲学问题,只是让它回答简单的问题,还是高度可用的。

第一,模型演进。整个大模型的演进复杂度远超原来 CNN 算法复杂度,而且算法不断迭代。包括 Transformer 本身,很可能不久将来对基础的结构也会替换掉。这样就要求当我们做芯片设计,比如 AI IP 的时候,就不能说针对某一个模型做优化,很可能当你芯片出来之后就已经过时了,不能支持最新的算法。

第二,存储容量。大模型的容量远远超过之前传统 CNN 的模型。最小的大模型,就算是 3B,如果不量化,大概也有 3GB 容量,已经超过很多经典 SoC 能支撑的容量。

第三,带宽。如果拿大模型做语音推理,基本上每吐出一个字 / 词就要把整个模型完整地 Round 一遍。如果达到一秒钟吐出 10 个词,如果用一个 3GB 模型,整个 SoC 带宽至少要 30GB,才能够支持这么一个推理。

第四,互联。如果跑很大的模型,很可能一个芯片不能完成。就像刚才嘉宾讲的,他们是用芯粒的方式,可能会用多个芯粒或者多个芯片完成一个大模型的推理。对于大模型怎么拆分,拆完之后你认为怎么分配、算力怎么部署,会有很复杂的考量。

第六,整个方案的成本。比如你要搭配不同的算力,成本是决定大模型在边缘端能不能真正大批量铺开一个非常关键的因素。因为很多应用,大模型本身是做一个赋能,如果成本太高,去做市场推广也是很不利的。

第七,多变需求。大模型的尺寸可能既有不到 3B,又有超过 10B 甚至 100B,很可能你需要在不同场景部署不同的尺寸大模型。这样就要求你,很难用统一的标准或者几个标准的规格 SoC 去覆盖这一系列模型,因为这样对于成本不是特别划算。最好的是给每一个算法或者每一个模型尺寸专门去配一个 SoC,这对于研发来说成本是不能接受的。

最后两项:一个是研发成本,一个是研发周期。现在一个 SoC,如果 12 纳米,基本上在 1000 万到 2000 万美元之间,连 IP 到后端可能才能拿下来,周期基本 18 个月,连前端验证 + 后端 + 整个软件开发。如果你想开发太多规格的 SoC,无论是周期还是成本,都是很难承受的代价。

下面讲讲我们如何去破解刚才提到的问题,我们的思路是用 AI Chiplet 的方法进行应对。

首先拿桌面游戏的 PC 举例,因为我是很多年电脑游戏的玩家。我们在学校去配一台游戏电脑,CPU 没什么太多可选的。现在我们就用一颗 i5 13500 或者 i7 13700,就能满足绝大部分的要求,主要成本或钱就花在显卡上。玩一些网游显卡需要两千,主流游戏可能要三千到四千,骨灰级游戏可能要一万多,就是英伟达的 4090。依此类推,基本上 CPU 跟主板变化是非常小的。主要对游戏来说,CPU 都不是瓶颈,真正瓶颈在显卡。

比如我们拿一个 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 方面的经验有很多年的时间,一直专注于 AI 芯粒本身。我们公司的目标是专注于 AI 芯粒本身,配合其他成熟或者现有的厂商,提供做大模型算力的支持。

我们主要提供下面四类产品:第一,标准 AI Chiplet 产品,翻译过来就是买 Die。第二,我们会把 AI Chiplet 做封装,提供给客户。因为有些客户是没有封装设备能力,可能它有一个芯片但是不希望进行合封,因为种种原因可能不太适合合封,我们可以把我们的 Die 封成芯片,在 PC 板上跟它进行连接。第三,我们会做一些定制化 AI Chiplet 封装,主要是两方面,一是 AI Chiplet 规格,比如客户需要多少算力、需要什么样的接口,我们可以定制;二是可以通过客户所需要的算力,去搭配不同数目的 AI Die,给客户提供类似的选择。最后,AI 应用开发软件栈,毕竟也是我们一个异构的 AI 处理器,肯定是需要有一些配套的软件开发栈完成客户的设计。

这边主要介绍我们公司两个核心技术,一个是重中之重,多模态算力核心。无论是对于传统 CNN 算法,还是对于目前大模型、未来多模态算法,都能提供很好的支持。它为了支持未来的这些算法,尽量提高兼容性,做了从 INT4、INT8、FP8 等全精度的支持,便于客户把它在显卡上所训练好的模型直接部署到我们芯片中。

当我们有 4 个芯粒组成的系统,怎么动态分配它的连接还有算力?左边是基于 Tranformer 大模型的一段,比如这个模型非常大,无论它的容量还是算力都不足以被一颗算力所支撑,我们会把它拆成两段,把它放在两个芯粒,甚至拆成更多的段。当然,这个工作都是由编译器、运行时自动完成的。

另外强调一点,目前看到的一些新的应用或者新的场景,是对于本地大模型微调的需求。以后大模型更多是垂直领域,无论是律所还是医院,甚至更加小众的,他们大概的模式是去下载预训练大模型,结合本地一些数据,然后做微调,去匹配,在本地进行更符合本地业务的推理,这也是未来大模型非常典型的应用。

传统的方法怎么做的?我拿大模型,在云端或者在大服务器上,针对本地的数据进行微调。因为芯粒支持多精度计算,我们是支持在边缘端针对本地采集的数据进行微调。我们把大模型微调的位置从服务器或者从客户中心转移到边缘端设备,这未来一定会创造很多新的应用场景。

基本上每家做芯片都会有,配合 AI Chiplet 一定会有一套软件。这跟别家不一样,对多芯粒之间拓扑的支持。无论你的算力是多少、你的配置多,一定会有一个配置,如果你要求客户自己根据硬件连接做特殊编程,一定会有非常差的体验。我们从供应链、运行时的角度,能够根据你的配置、算力、任务需求自动分配,完全是透明的,用户看到的就是算力大了很多。比如我们用了 4 个芯粒,用户看到就是算力 × 4 统一的接口,不会按照 4 个 NPU 的方法去编程。

第一,我们是会用标准的接口搭配现在已经成熟的 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 精度;我们是支持高效训推一体架构,支持通用算子及自定义算子。

我们列了一些现在主流上能买到的 SoC 规格,至少是 A53、A55 起。我们认为这些 SoC 跑大模型足够强,它们有足够数目的视频接口,也有足够规格的硬件接口,是跑编程大模型一个很完美的 CPU 配置。只要去搭配原粒现有的 AI Chiplet,很快可以实现边缘端大模型推理方案。

发表评论

邮箱地址不会被公开。 必填项已用*标注