一句话结论:AirLLM 是一个开源的大模型推理框架,它靠“一次只把一层模型放进显存”这个朴素却关键的洞察,让 70B 模型跑在单张 4GB 显卡上、405B 跑在 8GB、DeepSeek-V3(671B)跑在约 12GB——而且不需要量化、蒸馏或剪枝。代价是推理速度受磁盘 I/O 限制,所以它的定位是”让没有 A100 集群的人也能跑起顶级开源模型”,而不是高并发线上服务。

一、一个反常识的事实:显存需求只取决于”单层”
很多人对”跑大模型要多大显存”的直觉是线性的:模型越大、参数越多,显存就得等比例地堆上去。70B 模型按 FP16 算光权重就要 140GB,于是大家默认”没有多张 80GB 的 A100,就别想碰它”。这个直觉在常规推理里没错——因为标准做法是把整个模型一次性全部加载进显存,然后从头到尾算一遍。
但 Transformer 的推理有一个被长期忽视的特性:它是逐层顺序执行的。第 N 层算完之后,第 1 到 N-1 层的权重在这一步就已经用不上了——它们只是在等着被后面的 token 重新走一遍。换句话说,你并不需要”同时”把 80 层全都摊在显存里,你真正需要的,是任意时刻只把当前正在算的那一层放进显存。
AirLLM 的全部魔法,就建立在这一个洞察之上:它一次只在 GPU 上保留一层模型,用完就换下一层。于是显存需求不再取决于模型”总共多大”,而只取决于”单层有多大”。这就是为什么一个 671B 的模型,能塞进一张发烧友级别的消费显卡。
二、它到底怎么干活:把模型”流式”喂进显卡
既然显存里只放一层,那其余的层放哪儿?答案是磁盘。AirLLM 第一次加载模型时,会把原始的 HuggingFace 权重按层拆开、存成分片文件放在本地磁盘上。推理时,它像一条传送带:把第 1 层从磁盘读进显存、算完,再把第 2 层换进来、算完……如此往复,直到走完所有层。

一个自然的担忧是:读磁盘不是比读显存慢得多吗?每层都要从硬盘搬一次,不会慢到不能用?AirLLM 用一个叫 prefetching(预取) 的技巧来缓解——在 GPU 计算第 N 层的同时,后台已经把第 N+1 层从磁盘往显存里搬了,让”加载”和”计算”重叠起来,官方称这一项能带来约 10% 的速度提升。
三、瓶颈在磁盘,所以量化只需”压权重”就能快 3 倍
前面说了,AirLLM 的真正瓶颈是磁盘 I/O——每走一层就要从硬盘读一次权重。那么把”要读的东西”变小,速度自然就上去了。于是 AirLLM 2.0 引入了基于块式量化(block-wise quantization)的模型压缩,能把推理速度再提升最多 3 倍,而精度损失”几乎可以忽略”。
这里藏着一个很聪明的取舍。传统量化之所以难、之所以容易掉精度,是因为它往往要同时量化权重和激活值——而激活值里充满各种离群点(outliers),稍不留神就把关键信息压没了。但 AirLLM 的场景不一样:它的瓶颈是”从磁盘搬运权重的量”,跟激活值无关。所以它只需要量化权重那一部分,把每层权重从 FP16 压成 4-bit 或 8-bit,磁盘要读的数据直接小一大截,而精度也因此更容易守住。

启用它只要两步:装好 bitsandbytes,然后在初始化模型时加一个 compression 参数:
pip install -U bitsandbytes
model = AutoModel.from_pretrained(
"garage-bAInd/Platypus2-70B-instruct",
compression='4bit' # 或 '8bit',指定块式量化位宽
)
四、MoE 时代的杀手锏:按”专家”流式加载
如果说”逐层加载”让 AirLLM 能跑 dense 大模型,那么对稀疏 MoE(混合专家)模型,它还有一个更狠的招。MoE 的结构特点是:每一层里有一大堆”专家”子网络,但每个 token 实际只会路由到其中极少数几个专家——也就是说,绝大部分专家在某一步根本用不上。
顺着这个特性,AirLLM 把”一次只放一层”进一步细化成”一次只放当前 token 真正要用的那一个专家”。结果就是:模型的总参数量几乎不再构成显存压力。README 里最夸张的例子是 Kimi K3(2.8T 参数,迄今最大的开源模型)能在单卡上跑进 3.72GB 显存;而 Qwen3-235B 只需约 3GB——因为每个 token 只激活其中很小一部分专家,其余的专家一直安静地躺在磁盘上。

五、一行代码跑遍主流开源模型
用法上,AirLLM 把门槛压到了极致:pip install airllm,然后对着一个统一的 AutoModel 传 HuggingFace 模型 ID 就行,它会自动识别模型类型,接口和调用普通 transformer 几乎一样。
from airllm import AutoModel
# 就这一行,换个 ID 就能跑更大的模型
model = AutoModel.from_pretrained("Qwen/Qwen3-32B")
# model = AutoModel.from_pretrained("deepseek-ai/DeepSeek-V3") # 671B,约 12GB
# model = AutoModel.from_pretrained("meta-llama/Llama-3.1-405B") # 405B,约 8GB
input_tokens = model.tokenizer(["What is the capital of the US?"],
return_tensors="pt", truncation=True, max_length=128)
out = model.generate(input_tokens['input_ids'].cuda(),
max_new_tokens=20, use_cache=True, return_dict_in_generate=True)
print(model.tokenizer.decode(out.sequences[0]))
它支持的模型家族几乎覆盖了当前所有主流开源模型:Llama(2/3/3.1/3.3/4)、Qwen(1/2/2.5/3/3.5/3.8,含 MoE、Flash-Next、FP8 与原生 VL)、DeepSeek(V2/V3/R1)、Mistral & Mixtral、Phi、Gemma、ChatGLM、Baichuan、InternLM、Yi、Kimi K3——而且很多新模型发布当天就能用。下面是 README 给出的”小显卡跑大模型”对照表:
| 模型 | 规模 | 所需显存 |
|---|---|---|
| Qwen3 / Mistral / Phi | ≈8B | ~1–2 GB |
| Qwen3.8-27B(dense VL) | 27B | 3.33 GB |
| Llama 3.x 70B(全精度) | 70B | ~4 GB |
| Qwen3.8-Flash-Next(MoE+PLE) | ~180B | 5.95 GB |
| Llama 3.1 | 405B | ~8 GB |
| DeepSeek-V3 | 671B | ~12 GB |
| Kimi K3(迄今最大开源模型) | 2.8T | <4 GB |
初始化时还有几个实用配置项,值得记一下:
- compression:
'4bit'/'8bit',或默认None不压缩。 - prefetching:预取,重叠”加载”与”计算”,默认开启。
- delete_original:磁盘紧张时设为 True,切分层后删掉原始模型,省一半磁盘。
- hf_token / profiling_mode:分别用于下载 gated 模型、以及输出各环节耗时。
六、不止 NVIDIA:Mac、CPU 都能跑
AirLLM 的”低显存”哲学也延伸到了别的硬件。在 Apple silicon 的 Mac 上,配合 MLX,一台 MacBook 就能跑 70B 级别模型;2.10 版本之后还支持纯 CPU 推理、以及非分片模型。对一个只想”在自己笔记本上验证一个想法”的研究者或独立开发者来说,这意味着不必再为了一块高端显卡去租云、排队、算账单。
七、泼点冷水:它适合什么、不适合什么
把话说回技术现实:AirLLM 用“速度”换”显存”,这笔交换并不总是划算。理解它的边界,比记住它能跑多大模型更重要。
- 它是 I/O 密集型,天生慢。每走一层都要从磁盘读权重,即便有预取,吞吐也远不如把模型整个塞进显存的传统推理。它不适合高并发、低延迟的线上服务,更适合个人实验、离线批处理、边缘设备演示这类”能跑通比跑得快更重要”的场景。一块高速 NVMe SSD 会显著改善体验。
- 首次加载很吃磁盘。把模型按层拆分这一步非常占空间,README 的 FAQ 里最常见的报错
MetadataIncompleteBuffer基本就是磁盘满了。要么留足空间,要么用delete_original=True。 - 它是推理框架,不是训练框架。仓库里另有 training / rlhf / LoRA 相关内容,但 AirLLM 本体的定位是把”跑起来”的门槛降到最低,别指望用它做大规模训练。
八、写在最后:把顶级开源模型的”入场券”发到每个人手里
AirLLM 最动人的地方,不是某个跑分,而是它的立场。这个项目的技术源头,是社区里一位叫 SimJeg 的开发者在 Kaggle 竞赛里”用有限资源跑 70B”的取巧做法;作者 Gavin 把它抽象、工程化、开源出来,然后一路迭代到能跑 405B、671B、甚至 2.8T。它自始至终在做同一件事:把”必须有昂贵硬件才能碰顶级模型”这道隐形门槛,往下砸。

如果你是一名学生、独立开发者、研究者,或者只是想在自家那台老显卡上亲手摸一摸 DeepSeek、Qwen、Llama 的满血版到底什么水平,AirLLM 几乎是当下门槛最低的答案:pip install airllm,一行 from_pretrained,几分钟就能出结果。它不追求在生产环境里和 vLLM、TensorRT-LLM 拼吞吐,那是另一条赛道;它拼的是”让没有集群的人也能起跑”。在开源大模型狂飙的今天,这种把入场券分发到每个人手里的工具,价值恰恰不在性能数字里,而在那 33.6k 个 Star 背后、一个个终于能亲手跑起大模型的人。
项目地址:github.com/lyogavin/airllm · PyPI:pypi.org/project/airllm · 协议:Apache-2.0

AI TOOL PUSH






