深度解读AI 与大模型generatedpublished

显存空着80%却喊撑死:伯克利博士生用60年前操作系统老手艺,改写全球50万张GPU的AI推理

机制

一张一万多美元的英伟达顶级显卡,跑大模型的时候,显存居然有七八成是空的。

而且系统还会理直气壮地告诉你:显存满了,接不了新请求。

有没有搞错?

2022 年,加州大学伯克利分校的博士生权佑锡(Woosuk Kwon)盯着屏幕,差点以为自己看错了。

当时 Meta 刚开源了 1750 亿参数的 OPT-175B 大模型。

全网都在抱怨大模型太吃显卡、算力太贵,一张卡一秒钟连一个并发请求都快接不住。

权佑锡觉得代码写得太糙了,想花两个星期顺手优化一下。

谁能想到,这个两星期的课外小项目,后来吸引了 3000 多名开发者。

四年之后,它成了全球最大的开源推理引擎 vLLM,同时跑在全世界大约 50 万张显卡上。

两个星期的业余改造,怎么就滚雪球滚成了 50 万张显卡?

因为他一上手,就踩到了整个大模型工业界最痛的一根神经:显存碎片。

大模型生成文字,跟人说话一样,是一个字一个字往外蹦的。

每蹦出一个新字,它都得回头把前面说过所有的字重新看一遍。

为了不把前面算过的内容重复算一遍,系统必须把之前所有字的计算中间值存在显存里,这叫 KV 缓存。

只要对话不结束,这个缓存就会越来越大。

这就带来了一个让人头疼的麻烦:你怎么知道用户下一句话要聊多长?

用户可能就问一句“今天星期几”,三个字就退出了;

也可能突然甩过来一篇上万字的长文,要求逐段翻译。

在 2022 年,主流的模型推理软件走的是最原始的逻辑:给每个用户预先在显存里划出一整块连续的物理空间。

既然事先猜不到你要聊多长,系统只能按最极端的情况去防备。

默认你每次提问都会聊到最大上限,比如直接在显存里硬生生切出 2048 个字的连续大坑。

结果显而易见。

用户聊了三个字就心满意足地走了。

剩下的 2045 个字占着的坑位,就那么大摇大摆地空在显存里,别人用不了,系统也不敢收回。

这就叫内部碎片。

还有更麻烦的外部碎片。

每个用户的请求长短不一,显存被切得坑坑洼洼,全是乱七八糟的碎块。

明明加起来还剩大半张显卡的空闲空间,但因为找不到一块足够长的连续空间,新请求死活挤不进来。

实测数据摆在眼前:当时高档显卡跑大模型,显存的有效利用率只有 20% 到 40%。

高达 60% 到 80% 的昂贵显存,全在白白占着位置。

算力根本没跑满,全被这些空置的坑位给活活憋死了。

这道题要怎么解?

权佑锡盯着那些被切得稀碎的显存块,突然想通了一件事:

眼前这个让人抓狂的难题,计算机科学界在六十年前不是早就解决过了吗?

早在 1960 年代,早期计算机的物理内存也很小,运行几个程序就被切得千疮百孔。

当时的操作系统大师们是怎么破局的?

虚拟内存分页。

操作系统根本不强求把一个程序塞进一整块连续的物理内存里。

它把物理内存切成一个个固定大小的页面,比如 4KB 一页。

程序需要内存的时候,系统就按页分配。

这些页面在物理硬件里爱呆在哪就呆在哪,东一块西一块完全没关系,只要操作系统手里有一张页表,负责把虚拟地址映射过去就行。

既然操作系统管内存可以分页,显卡里的文字缓存为什么不能分页?

这就是后来改写整个开源 AI 推理生态的算法:PagedAttention。

思路干净利落。

系统把每个请求的 KV 缓存切成固定大小的块,比如一个块专门存 16 个字。

模型每吐出 16 个字,系统才去显存里临时要一个新的小块。

这些小块在显存里完全不需要挨在一起,零零散散塞在任何角落都可以。

显存利用率一下子发生了质变。

原本高达 80% 的浪费,直接被压到了 4% 以下。

显存不浪费了,一张显卡能同时塞进去的并发请求量暴增。

在不牺牲任何生成速度的前提下,显卡的实际吞吐量直接翻了两到四倍。

更绝的是,分页还顺手解决了一个连带问题:公共提示词共享。

很多用户提问时带着一模一样的系统提示词,在旧系统里每个人都得复制一份显存。

分页之后,大家可以直接共享底层的同一组物理页面,连拷贝都省了。

算法写出来了,权佑锡和伯克利的团队把它封装成了开源推理框架 vLLM。

正好赶上 2023 年上半年全球开源大模型大爆发。

伯克利搞了一个测试全球大模型盲测排名的平台 Chatbot Arena,全球网民疯狂涌进去打擂台。

当时实验室穷得叮当响,根本租不起几百上千张昂贵的显卡,后台全靠刚刚出炉的 vLLM 撑着,硬生生用几十张卡扛住了数百万次的访问洪峰。

这一下,整个开源 AI 圈子全看懂了。

不管是大厂还是刚起步的小团队,只要想在私有服务器上高性能跑开源大模型,底层几乎默认标配 vLLM。

四年过去,项目聚集了 3000 多名贡献者。

一个原本只想在两周内写完的小脚本,变成了支撑全球约 50 万张显卡昼夜运转的基础设施。

团队后来从伯克利出来创业成立 Inferact,做跨硬件的大模型推理层,直接拿下了由 a16z 领投的 1.5 亿美元融资,公司估值冲到了 8 亿美元。

站在浪潮里看,很多让人头疼的前沿 AI 难题,最后的突破口,往往藏在几十年前经典计算机科学最朴素的基本功里。

同领域解读 / AI & LLMS

查看全部「AI 与大模型」解读 →

导出 / EXPORT

订阅 · SUBSCRIBE

每周一封独立、不受审查的科技与 AI 深度评论,周一发出。带出处,可核查。

不追踪邮件打开与邮件链接点击,一键退订。 或用 RSS · 详情