一个普通电脑,为什么也能跑几百GB的AI模型?
——认识 Colibrì:把“装不下的模型”变成“按需使用的模型”
现在的大模型越来越大。
从几十亿参数,到几百亿、几千亿参数,再到上万亿参数,模型规模不断增长。
很多人看到这种数字,第一反应都是:
“这么大的模型,普通电脑肯定跑不了吧?”
这个判断其实只对了一半。
因为一个非常重要的问题经常被忽略:
运行一个模型,并不一定意味着要同时使用模型的全部参数。
这正是 Colibrì 项目 很有意思的地方。
它尝试解决的,并不是“如何制造一个更大的显卡”,而是另一个问题:
如果一个模型大到装不进显存,能不能只把当前真正需要的部分拿出来计算?
一、先理解一个概念:模型为什么会这么大?
我们平时说一个 AI 模型有“7000亿参数”,是什么意思?
可以简单理解为:
模型内部保存了数千亿个数字,这些数字共同构成了模型的知识和计算能力。
这些数字需要占用存储空间。
例如:
模型参数
↓
很多很多数字
↓
占用大量存储空间
如果参数达到几千亿甚至数万亿,模型文件自然会非常巨大。
因此传统思路很容易变成:
模型
↓
全部加载
↓
显存 / 内存
↓
开始计算
问题就来了。
显卡显存没有这么大怎么办?
二、MoE改变了一个重要前提
这里就要介绍一种特殊的模型结构:
混合专家模型,也就是 MoE。
它的核心思想非常像一个大型公司。
假设一家公司有:
数学专家
语言专家
代码专家
历史专家
物理专家
法律专家
……
来了一个问题,并不是所有专家都需要参加。
比如:
“帮我解决一道微积分题。”
可能只需要数学相关的几个专家。
如果问题变成:
“帮我写一段程序。”
又可能调用另外几个专家。
所以 MoE 模型并不是:
每次计算都让所有参数一起工作。
而是:
模型拥有大量专家,但每一个具体输入只激活其中一部分专家。
这产生了一个非常重要的区别:
模型总规模
≠
每次计算实际使用的规模
三、这就产生了一个机会
假设有一个模型:
总参数:7440亿
听起来非常恐怖。
但假设每一次计算只需要其中一小部分专家。
那么问题就发生了变化。
原来的问题是:
“我怎么把7440亿参数全部放进显存?”
现在可以换成:
“我怎么把当前需要的那几个专家及时拿过来?”
这两个问题完全不同。
四、Colibrì的核心思路:模型不一定要全部待在显存里
Colibrì做的事情,可以非常简单地理解成:
超大模型
│
┌─────────┼─────────┐
↓ ↓ ↓
SSD RAM GPU
│ │ │
└──── 按需调度 ─────┘
│
↓
当前计算
也就是说:
模型可以躺在SSD上。
需要哪个 Expert,就把哪个 Expert 调进更高速的存储层,然后进行计算。
计算完成以后,不再需要的部分可以释放或者保留在缓存中。
于是:
整个模型
↓
并不需要全部进入显存
↓
只加载当前需要的部分
↓
进行计算
这就是它最值得理解的地方。
五、这其实和我们平时使用电脑非常像
假设你有一个 1TB 的硬盘。
电脑内存只有 16GB。
你是不是只能使用16GB的数据?
当然不是。
因为:
硬盘:保存大量数据
内存:保存当前正在使用的数据
CPU:处理当前正在计算的数据
操作系统早就在做类似的事情。
你打开一个很大的文件,并不意味着所有数据都必须一直放在CPU附近。
真正重要的是:
当前需要什么,就把什么搬过来。
Colibrì只是把这种思想应用到了超大规模 MoE 模型上。
六、所以它真正改变的不是“模型大小”,而是“模型驻留方式”
这是一个很重要的区别。
Colibrì并没有让:
7440亿参数
突然变成:
100亿参数
模型还是那么大。
它改变的是:
这些参数必须同时存在于哪里。
传统方式可能是:
模型
↓
全部进入内存
↓
计算
而另一种方式变成:
模型
↓
存储设备
↓
选择需要的Expert
↓
加载
↓
计算
↓
缓存
↓
继续加载下一批
所以:
它不是把“大模型变小”,而是把“大模型拆成了可以按需使用的资源。
七、但是,这并不意味着普通电脑突然可以高速运行万亿参数模型
这里必须特别强调。
“能够运行”和“运行得很快”,是两回事。
如果模型需要不断从SSD读取数据,那么瓶颈就可能发生在:
SSD
↓
RAM
↓
GPU
而不是GPU计算本身。
例如:
GPU很快
↓
等待数据
↓
GPU空闲
这时候你换一个更强的GPU,效果可能并没有想象中那么大。
因为真正的问题已经变成:
数据能不能足够快地送到计算设备?
八、AI推理正在从“算力问题”变成“数据流问题”
以前我们讨论AI,很容易只看:
GPU有多少TFLOPS?
但对于超大模型来说,这已经不够了。
还要考虑:
模型在哪里?
↓
数据怎么读取?
↓
哪些参数需要读取?
↓
什么时候读取?
↓
读取多少?
↓
能不能缓存?
↓
GPU是否需要等待?
于是,一个完整的推理过程实际上变成:
输入
↓
模型判断需要哪些Expert
↓
寻找Expert
↓
SSD / RAM读取
↓
缓存
↓
GPU计算
↓
结果
↓
下一轮
这时候,AI推理就越来越像一个大型数据系统。
九、这和“缓存”有什么关系?
其实我们每天都在使用缓存。
例如浏览网页。
第一次打开:
服务器
↓
下载
↓
本地缓存
第二次打开的时候,如果内容没有变化,就可以直接从本地读取。
CPU和GPU也有各种缓存。
原因很简单:
重复搬运数据很贵。
对于超大 MoE 模型来说,这个问题尤其明显。
如果某个 Expert 刚刚使用过,马上又要使用,那么:
SSD → RAM → GPU
重新搬一次就很浪费。
更聪明的方式是:
第一次使用
SSD → RAM
第二次使用
RAM → GPU
第三次使用
直接使用缓存
因此:
缓存命中率本身就可能成为性能的重要因素。
十、这其实是一个“空间换时间”的问题
我们可以把它抽象成一个非常简单的模型。
假设:
SSD容量:很大
RAM容量:中等
VRAM容量:较小
那么:
SSD
“大仓库”
↓
RAM
“中转仓”
↓
VRAM
“工作台”
↓
GPU
“计算工人”
SSD适合保存大量东西。
RAM适合快速访问。
VRAM更靠近GPU。
GPU负责计算。
于是整个系统实际上形成了一个层级:
容量越来越小
↑
│
SSD
│
RAM
│
VRAM
│
GPU
↓
速度越来越快
超大模型的问题,就是如何在这些层级之间移动数据。
十一、所以真正的“模型运行空间”不再只是显存
过去我们经常会问:
“这个模型需要多少GB显存?”
对于一些模型来说,这个问题仍然非常重要。
但对于采用按需加载方式的大型 MoE 模型,还可以问:
“这个模型需要多少SSD?”
“需要多少RAM?”
“GPU需要保存多少Expert?”
“Expert多久切换一次?”
“SSD读取速度够不够?”
“缓存能保存多少常用Expert?”
于是:
模型运行从一个“显存容量问题”,变成了整个计算机存储层级的问题。
十二、这也是为什么MoE特别适合这种思路
如果一个模型的每一个参数都必须同时参与计算,那么:
100%
↓
全部需要
这时候按需加载的意义就很有限。
但是MoE不同:
100%的模型参数
↓
当前输入
↓
只选择一部分专家
↓
实际计算一部分
于是就存在一个天然的“稀疏性”。
这种稀疏性给了系统工程师一个机会:
不用让所有参数一直处于最高速的存储层。
十三、这其实是一种很古老的计算机思想
有意思的是:
这并不是AI第一次使用这种思想。
计算机几十年来一直在做:
磁盘
↓
内存
↓
缓存
↓
CPU
GPU也一直在做:
显存
↓
缓存
↓
计算单元
操作系统也一直在做:
大量数据
↓
分页
↓
当前需要的数据
↓
内存
所以Colibrì真正有意思的地方并不是发明了一个完全陌生的概念。
而是:
把传统计算机系统中的“分层存储、按需加载、缓存”思想,进一步应用到了超大规模AI模型。
十四、这可能改变我们对“运行大模型”的理解
很多人认为:
AI模型越来越大 → 必须购买越来越贵的GPU。
这是一条路线。
但另一条路线是:
模型越来越大 → 研究如何更加高效地调度模型。
两者并不矛盾。
未来的AI系统可能越来越像:
模型参数
↓
长期存储
↓
智能缓存
↓
高速内存
↓
GPU
↓
计算
真正重要的可能不只是:
GPU有多快。
还包括:
系统能不能准确预测下一步需要什么。
十五、这又引出了一个更大的问题:AI的瓶颈在哪里?
如果我们把AI推理拆开:
输入
↓
理解
↓
选择Expert
↓
读取参数
↓
搬运数据
↓
GPU计算
↓
输出
那么性能瓶颈可能出现在任何一个环节。
例如:
GPU太慢
→ 计算瓶颈
RAM太慢
→ 内存瓶颈
SSD太慢
→ 存储瓶颈
Expert切换太频繁
→ 调度瓶颈
缓存太小
→ 缓存瓶颈
数据搬运太多
→ 带宽瓶颈
所以:
大模型时代,优化AI已经越来越不是“单纯堆GPU”的问题。
而是一个完整的系统工程问题。
十六、普通电脑到底能不能跑这种模型?
可以把答案分成三个层次。
第一层:能不能启动?
某些情况下可以。
因为模型不一定要求全部参数同时进入显存。
第二层:能不能生成结果?
对于适合的模型和硬件配置,也可能做到。
第三层:速度怎么样?
这才是真正困难的问题。
如果数据搬运成为瓶颈,那么:
模型可以运行
≠
模型运行很快
甚至可能出现:
能够运行
但是生成速度很慢
所以不能简单理解成:
“有了Colibrì,普通电脑就能和大型AI服务器一样运行超大模型。”
它解决的是可运行性和资源组织方式的一部分问题,而不是凭空消除计算和数据传输成本。
十七、我觉得Colibrì最值得普通人理解的,并不是它的代码
如果只把它看成一个GitHub项目,很容易变成:
“这是一个可以运行超大模型的软件。”
但它真正值得关注的是背后的思想:
一个东西非常大,并不意味着所有部分都必须同时高速可用。
这句话不仅适用于AI。
它适用于:
数据库
操作系统
游戏
视频处理
浏览器
云计算
GPU
AI推理
甚至适用于我们解决很多现实问题的方式。
十八、从“全部准备好”转向“按需准备”
传统思维往往是:
把所有东西准备好
↓
再开始工作
但当系统规模越来越大,这种方法会越来越昂贵。
另一种思路是:
预测需求
↓
提前准备一部分
↓
真正需要时快速加载
↓
使用
↓
释放
↓
继续下一部分
这其实是一种非常重要的系统设计思想:
资源不是越多越好,而是要让正确的资源在正确的时间出现在正确的位置。
十九、AI未来可能越来越像一个“资源调度系统”
如果未来模型达到:
10万亿参数
100万亿参数
甚至更大
我们可能不能继续简单地想:
“买一个更大的显卡,把模型全部装进去。”
因为最终总有一天:
模型规模
>
单台机器的高速存储容量
那么怎么办?
就必须发展:
模型分片
Expert调度
缓存
按需加载
分布式存储
内存管理
GPU调度
网络传输
也就是说:
未来的大模型系统,很可能越来越像“一个巨大的动态数据系统”。
二十、Colibrì告诉我们的真正问题
所以,Colibrì最值得关注的并不是:
“普通电脑可以运行多大的模型?”
而是另外一个问题:
我们是不是一直错误地假设了“运行一个模型,就必须把整个模型同时放在高速内存里”?
对于MoE来说,答案显然没有这么简单。
一个超大模型可以拥有海量参数。
但是某一个瞬间,真正参与计算的可能只是其中一部分。
于是:
模型很大
↓
不代表所有参数同时工作
↓
不代表所有参数同时需要高速存储
↓
可以进行按需加载
↓
可以利用多级存储
↓
于是“模型规模”和“机器显存”之间
不再是简单的一一对应关系
这可能才是Colibrì最值得普通人理解的地方。
最后
AI发展的一个重要方向,可能不是简单地:
让模型越来越大,显卡越来越强。
而是:
让越来越大的模型能够更加聪明地使用有限的硬件资源。
当模型已经大到一台机器装不下的时候,真正的问题就从:
“我需要多大的GPU?”
逐渐变成:
“我能不能让整个计算机系统,只在需要的时候,把需要的数据送到需要的位置?”
这就是Colibrì背后非常有意思的思想。
它让我们重新认识了一件事情:
计算机的能力,不只取决于它拥有多少资源,还取决于它如何组织和调度这些资源。
而这可能也是下一阶段AI基础设施竞争中,一个越来越重要的方向。