当前位置:首页 > 科研成果库

被低估的异构算力调度:怎么让不同芯片一起干活不吵架?

2026-09-24 00:33:48小研科研成果库6
上周帮南京一个做AI创业的朋友盯集群,进门就看见他对着后台数据挠头。八台GPU排着队等大模型训练任务,旁边三十台CPU服务器闲得快长毛,还有一半A卡一半N卡混着,任务扔进去要么卡脖子要么跑错,每个月烧几百万的机房租金,一半算力都打了水漂。 这不是个例。现在买算力不难,难的是把手里不同架构的算力用好。

为什么现在突然要提异构算力调度?

往前倒个五六年,大部分公司的算力架构很简单。CPU跑业务逻辑,GPU单独跑训练,大家各干各的,互不打扰。那时候也没人喊着要异构调度。 现在不一样了。大模型火了,多模态应用起来了,连边缘端都堆了好几种不同架构的加速芯片。你手里的算力,可能有英特尔的CPU、英伟达的GPU、华为的昇腾卡、地平线的NPU,全是不同架构,指令不一样、内存不一样、能力边界也不一样。 有人说那我全买同一款芯片不就行了?说实话,哪有那么多钱。再说,不同活本来就该不同芯片干,CPU擅长逻辑调度和通用计算,GPU擅长并行浮点数运算,专用ASIC芯片擅长特定场景推理,硬让GPU干CPU的活,那就是性能浪费,钱烧得心疼。 数据中心混布异构算力集群实拍数据中心混布异构算力集群实拍 就是这么个事:你有一堆不同能力的芯片,要一起干完一件大活,还不能让有人闲死有人累死,不能让数据堵在路上,还得总开销最低。干这个事的,就是异构算力调度。

异构算力调度到底在调什么?

很多人以为,异构调度不就是看看哪个芯片有空,把任务扔过去就行?太想当然了。 异构,核心是「异」,大家不一样,不是同一个池子的水,倒在一起就行。你把任务拆错了,分配错了,数据搬来搬去的开销,能把你省下来的算力全吃干净。 我给你打个比方。就像办一场大型婚礼,你有川菜师傅、粤菜师傅、西点师傅,还有传菜员、服务员,每个人擅长的不一样。异构调度就是那个总管家,他得先知道你这一桌点了什么菜,哪道菜该给谁做,哪部分先做哪部分后做,传菜走哪条路不会堵,什么时候端上桌刚好符合客人的节奏,还要让所有人都不闲着,不能让川菜师傅做完自己的菜就坐着玩手机,粤菜师傅累得满头汗。 说回技术,核心其实就三件事。 第一件,拆任务。把一个大任务,拆成能适配不同算力的小块。比如大模型,你可以把对算力要求高的Attention层分给GPU,把占存储的Embedding层分给CPU,刚好利用CPU内存大便宜的特点,解决GPU显存不够的问题。但拆的时候得算准,拆得太碎,数据来回传,数据搬移开销比计算还大,得不偿失。 第二件,做匹配。给每个小块任务找最合适的芯片。不是说找最厉害的芯片就行,是找最合适的。你让高端GPU跑低延迟的小推理任务,那就是大马拉小车,浪费钱。你让CPU跑大规模并行矩阵运算,那就是小马拉大车,跑不动。 第三件,管通路。任务分完了,数据要能顺畅跑,不能卡。不同芯片之间数据传输,走PCIe还是走网络,延迟差好几倍,调度的时候得给你安排最好的路径,能不跨机器就不跨,能走近路就不走远路。 异构算力任务分配流程示意图异构算力任务分配流程示意图 就这么三件事,说起来简单,做起来全是细节。我见过太多集群,算力加起来够训70B模型,就是因为调度不好,拆不开运不动,最后只能训13B,太可惜。

那些踩过坑的常见误区

那些踩过坑的常见误区那些踩过坑的常见误区 说实话,我接触这个领域五六年,见过太多客户踩坑,很多坑其实都是想当然造成的。 第一个误区,只要堆了异构算力,用了调度框架,性能就一定涨。不对。我之前见过一个客户,买了三种不同的加速卡,花大价钱搭了调度平台,最后算力利用率还不到20%,还不如之前全用同型号GPU跑的效率高。问题出在哪?任务没适配,为了异构而异构,为了凑名词凑方案,最后反而乱了。 第二个误区,开源调度框架拿过来就能用,不用自己改。框架是死的,你的业务是活的。你做离线训练和做在线推理,任务模型完全不一样,你做多模态生成和做自动驾驶仿真,拆分逻辑也不一样。拿通用框架直接跑,大多效果不好,得根据自己的业务磨,磨到适配了才能出效果。 第三个误区,只调度算力,不调度功耗。哦这个真的很多人忽略。不同芯片的功耗差很大,同一台机器,满载和空载的功耗差能有五六倍。好的异构调度,会把任务尽量集中到少部分机器上,让空出来的机器直接关机降频,一年下来能省几十万上百万的电费,这不比你挤牙膏似的抠那点算力提升香? 不过话说回来,异构算力调度也不是万能的,它有自己的边界。如果你就是个小团队,只有两三张同型号GPU,跑自己的小模型,那真没必要搞复杂的异构调度,折腾几个月,省的钱还不够人力成本,反而添乱。还有那种对延迟要求极高的硬实时任务,比如车载自动驾驶的实时计算,现在异构调度的额外开销还是降不下来,不如固定分配算力靠谱,稳定比什么都重要。 现在圈子里都在喊算力荒,其实哪有那么多算力荒,很多时候都是手里的算力没用对,一半都浪费了。异构算力调度说起来是个技术词,本质就是帮你把手里每一分算力都用到刀刃上,让不同架构的芯片搭伙干活,不吵架,不偷懒,把钱花在该花的地方。 毕竟,现在的算力,真的太贵了。能省就是赚,对吧。