登录1秒注册

苍凤

搜索
站长论坛»主页首页时尚>坦福团队新作,让Ll 盛赞斯
查看:9
回复:1
打印上一主题下一主题

[苍凤]坦福团队新作,让Ll 盛赞斯

[复制链接]
跳转到指定楼层
楼主

斯坦福 Hazy Research 团队刚刚发布了一项重量级优化作用:他们将开源模型 Llama-3.2-1B 的盛赞斯坦前向推理整合成了一个“Megakernel”,并将低推迟推理才干面向了极限 。福团

在某些实时性极高的队新运用中 ,例如对话式 AI 和人类参加的作让交互式工作流中,大言语模型的盛赞斯坦呼应速度不只重要 ,乃至能够决议用户体会的福团胜败 。

团队以为约束 LLM 推理速度的队新瓶颈其实是在内存加载的问题上,他们经过研讨发现 ,作让现有的盛赞斯坦开源推理引擎(如 vLLM、SGLang) ,福团在极低推迟的队新单序列生成使命下 ,即使在尖端 GPU(如 H100)上 ,作让也只能运用不到 50% 的盛赞斯坦内存带宽 。

这首要是福团由于每层 Transformer 模块被拆解成几十到上百个 CUDA kernel ,每个 kernel 履行十分小的队新操作(比方 RMS norm 、注意力 、MLP、Rotary Position Embedding 等) ,它们之间存在许多上下文切换与等候 。

更严峻的是 ,这些 kernel 发动与收尾的本钱加起来,并不会被 CUDA Graph 或 PDL(Programmatic Dependent Launch)等机制充沛躲藏,反而在短时使命中被扩大。

换句话说 ,GPU 花了许多时刻“等着干活”,而不是“在干活”  。Hazy 团队的研讨也正是围绕着这个问题打开。

Megakernel :从零规划的交融思路。

先说试验成果,Megakernel在 H100 上的推理推迟紧缩至缺乏 1 毫秒,显存带宽运用率高达 78%,相较于 vLLM 提高了 2.5 倍 、相较 SGLang 提高 1.5 倍;而在更先进的 B200 渠道上 ,推迟进一步下降至 600~680 微秒,迫临理论极限 。

从一次完好推理的时刻散布来看  ,250 微秒用于存储激活、等候一致性与数据加载,200 微秒用于 RMSNorm 与 matvec(其间 matvec 占比达 95%)  ,权重加载仅需 30 微秒 ,流水机制体现安稳 。warp 间同步与 barrier 带来 40 微秒的推迟,其他如 setup 、参数传递与页状况符号等杂项开支算计约 80 微秒 。

全体来看 ,在精心调度下 ,Hazy 团队的 Megakernel 简直已将当时硬件功能压榨至极限 。

而能够得到以上作用 ,其实都归功于 Hazy 团队提出的一个急进但有用的规划思路  :将整个前向传达进程整合为一个单一 CUDA kernel ,也便是所谓的 Megakernel。

试验中 ,他们根据已有 ThunderMLA 架构 ,开发了一个 GPU 上运转的轻量“指令解说器”体系 。该体系为每个 Streaming Multiprocessor(SM)预先分配一段“履行计划”,其间包括多条按顺序排列的指令,每条指令代表 Transformer 模型中的一个结构单元 。

这些指令包括 :

交融 RMSNorm 、QKV projection 、RoPE 的复合指令;

attention 矩阵乘与减缩核算(支撑长序列 GQA);

O-projection 与 residual 相加;

MLP 的 RMSNorm 、gate 激活(SiLU)与上投影;

down projection 和终究 residual;

最终一层 RMSNorm + language modeling head。

每个指令都根据一致的 CUDA 模板构建,完结对 load、store 、compute 的标准化封装 。指令间依靠由解说器在运转前静态排布,每个 SM 能够重复复用同一个 schedule 以处理多个 token。

此外  ,为确保高效的数据途径 ,解说器会将这些履行计划按模型结构静态编列,避免调度时动态分支 ,提高吞吐与并发履行才干。

一同为了完结流水化核算并避免 shared memory 抵触,团队还对 GPU 的同享内存进行了分页办理,例如 :

将前 213KB 的 shared memory 分为 13 个 16KiB 页面;

剩下部分用于存储指令参数、页分配信息等;

每条指令在加载前显现恳求页  ,完毕后归还给解说器调度器;

当页被开释时  ,解说器会当即将其分配给下一条等候中的指令 。

这种机制确保了下一个核算阶段能够尽早开端预加载权重,然后最大化带宽运用率并消除“气泡”。

不过 Megakernel 结构无法依靠传统的 kernel 间隐式同步,因而 Hazy 团队还运用了一个计数器体系 :他们在 global memory 中保护一组整数,每条指令完结后会对对应计数器 +1,若某条指令依靠从前进程的成果,它会等候计数器到达特定值才履行 。

例如 :在 MLP 下投影阶段,团队将中心态拆成 4 个 chunk,每个 chunk 在写入后当即触发后续核算,然后完结并行流。此外 ,团队经过准确设置依靠图 ,避免了大局 barrier,大幅减少了指令之间等候的糟蹋 ,使得整个内核履行尽或许地挨近理论并发 。

Andrej Karpathy 盛赞	!斯坦福团队新作	,让Llama-1B 实现毫秒级推理

除此之外 ,研讨团队还对 CUDA 异步屏障(asynchronous barrier)的功能进行了丈量,发现即使在 barrier 已“pass”的状况下 ,每次仍需 60ns,同步操作本钱不行忽视  。而在实践履行中 ,尤其在 matrix-vector(矩阵乘向量)这类要害操作中,他们发现:在 Hopper 架构(如 H100)上,运用惯例 CUDA 中心(非 Tensor Core)能够更有用 ,不过在 Blackwell 架构上 ,Tensor Core 功能占优。

这也阐明在硬件不同代代中 ,Megakernel 的最佳完结途径也应适配微架构差异 ,而非一套计划通用一切渠道。

为什么传统推理方法功率如此低下 ?

在具体打开 Megakernel 的构建之前 ,Hazy 团队其实先回头梳理了一个要害问题:为什么现在干流的 LLM 推理体系,在小 batch 、极低推迟这种场景下,体现这么“不给力”。

他们发现,像 vLLM 和 SGLang 这样的体系,在处理生成一个 token 这种极限状况时 ,GPU 的显存带宽运用率其实十分低。中心原因是——模型前向进程被拆成了太多太小的 CUDA kernel。也便是说  ,模型里的每一个小操作(比方 RMSNorm、一个 MLP 层)都是一个独自的 kernel 。这种“微核形式” ,看起来很模块化、易于保护 ,但其实躲藏了一个很大的功能坑 。

Andrej Karpathy 盛赞!斯坦福团队新作
,让Llama-1B 实现毫秒级推理

每个 kernel 的发动和毁掉 ,其实都有固定本钱——你能够把它了解成“换个小使命都要从头开会组织”。在极低推迟场景下,这种“开会”的时刻反而成了主开支来历 。并且 GPU 在运转这些小 kernel 的时分 ,还常常会卡在“尾巴”上——比方一个 kernel 要 512 个线程块跑完,但 GPU 只要 148 个履行单元(SM),那后边的线程块就只能排队等前面的渐渐完毕 ,形成许多资源空转 。

即使用上 CUDA Graphs 、PDL(Programmatic Dependent Launch)等加速器 ,也仍是得花 1.3~2.1 微秒去发动一个 kernel。而这段时刻  ,GPU 其实啥都没干,便是在等候环境切换 。更糟的是 ,由于这些 kernel 是串行排队履行的 ,后边的 kernel 也无法提早加载它要用的数据,导致 GPU 一向时断时续地拜访 global memory ,带宽用不上去 。

这就形成了所谓的 “memory pipeline bubbles”——核算和核算之间总有空档期 ,GPU 分明闲不下来,却仍是停在那等。举个比方:H100 的带宽是 3.35TB/s,推理 Llama-1B 每次只需要 2.48GB,理论上 1 秒钟能跑 1350 次 forward pass。但由于每层模型得跑 7 个 kernel ,一共有 16 层,哪怕每个 kernel 只带来 5 微秒的 stall,总推迟也现已把功能拉到 770 次以内 ,实践或许还更低。

所以,Hazy 团队很明确地说:这个问题不是哪个 kernel 慢的问题,而是体系性低效。一个个去优化 kernel 其实没有用,中心是要干掉这些 kernel 鸿沟 ,别再让 GPU 一会做这个、一会做那个地切换。这便是他们提出 Megakernel 的底子动因 。

现代 LLM ,动辄几十上百层 transformer,每层又包括 RMSNorm、注意力、MLP 等等操作 。干流结构为了明晰易调试 ,把这些都拆成一个个小 kernel ,每个做一件小事 ,像流水线上的工人。但问题是,这流水线换手太频频,每次“换人”都耽误事  ,还导致 GPU 的显存拜访老是时断时续 ,带宽功率拉垮。

更要命的是,CUDA 的一些机制尽管看起来是为优化服务的,但在这种极限场景下其实也成了“拦路虎” 。比方 PDL 的 cudaGridDependencySynchronize 会强制等一切使命完结才干持续 ,这就意味着 ,即使有些使命早就预备好了,也得一同等着 。

所以归根到底,(大众号 :)以为现在的推理体系架构  ,在“单序列 、毫秒级呼应”这类场景下 ,是低效的,并且是从体系层面低效。只要重构整个履行方法 ,让 GPU 少切换 、多并行 ,才有或许真实把它的算力榨干,这正是 Megakernel 的价值地点。

原创文章,未经授权制止转载。概况见转载须知。

Andrej Karpathy 盛赞	
!斯坦福团队新作
,让Llama-1B 实现毫秒级推理


使用道具举报

您需要登录后才可以回帖 登录 | 1秒注册

站长论坛积分规则

辽ICP备1726881053号-2|Archiver|手机版|小黑屋|站长论坛

GMT+8, 2025-07-04 , Processed in 0.295106 second(s), 188 queries .

Powered by 苍凤

© 本站内容均为会员发表,并不代表本站长论坛立场!

返回顶部