之前通过 Ollama、SGLang 在本地部署过大模型的朋友都知道,受限于显卡显存,基本上只能部署小参数且量化后的模型。
这些模型在本地跑基本是残血状态,拿来玩玩还可以,但效果往往差强人意。
最近在 GitHub 上发现一个 3 万 Star 的项目,名字很直白:AirLLM。它的标语就一句话——70B inference with single 4GB GPU。
70B 全精度权重一百多 G,4GB 显存连个零头都不够,凭什么能跑?下面我们一起来看看。

核心原理:逐层加载
推理一个 Transformer,常规做法是把模型所有层都放进显存,算完一层进入下一层。
AirLLM 的思路完全不同——它一次只在 GPU 上留一层,算完这层,把下一层从磁盘或内存读进来,再把刚才那层扔出去。这么滚动着跑,整个模型永远只有「薄薄一片」在显卡上。
所以显存占用不是「模型总大小」,而是「单层大小 + 一点缓存」。70B 的单层也就几百 M,4GB 显卡绰绰有余。

还有个配套优化叫预取(prefetching):上一层在算的时候,它提前把下一层从磁盘读出来,让「加载」和「计算」重叠,别让显卡干等。

此外还支持可选的 4bit 块量化压缩(只压权重部分,不是整个模型量化),官方称能再快 3 倍,精度损失几乎可忽略。
关键点:AirLLM 主打「不用量化、不用蒸馏、不用剪枝」就能跑大模型。这话的意思不是它反对量化,而是哪怕一个 bit 都不压,原模原样,它也能靠逐层搬运把模型跑起来。保的是精度,牺牲的是速度。
实际能跑多大
官方给了一张「推理时显存占用」的参考表:
| 模型规模 | 推理显存占用 |
|---|---|
| 8B 级别 | 1-2GB |
| 235B 级别 | 约 3GB |
| 70B 级别 | 约 4GB |
| 405B(Llama 3.1) | 约 8GB |
| 671B(DeepSeek-V3) | 约 12GB |
| 2.8T(Kimi K3,最大开源 MoE) | 低于 4GB |

看到 Kimi K3 那行很值得注意:2.8 万亿参数的模型,单卡 4GB 以下就能跑。当然,这是「能跑起来出 token」,不是「跑得快」。
MoE 模型之所以更省,是因为它是稀疏的,逐专家流式加载,不需要把整个专家群都搬进显存。
怎么使用
AirLLM 是个 Python 库,一行命令安装:
pip install airllm
调用方式和 transformers 几乎一样,换个 AutoModel 就行:
from airllm import AutoModel
model = AutoModel.from_pretrained("Qwen/Qwen3-32B")
input_text = ['What is the capital of United States?']
input_tokens = model.tokenizer(
input_text, return_tensors="pt",
return_attention_mask=False, truncation=True,
max_length=128, padding=False
)
output = model.generate(
input_tokens['input_ids'].cuda(),
max_new_tokens=20, use_cache=True,
return_dict_in_generate=True
)
print(model.tokenizer.decode(output.sequences[0]))
想再快点,传个 compression='4bit' 就行。
Mac 上也能跑(Apple Silicon + MLX),甚至纯 CPU 也能推理。支持几乎所有主流开源 LLM:Llama、Qwen、DeepSeek、Mistral、Phi、Gemma、ChatGLM……
总结
AirLLM 干的事情其实很「搞机」:它没有让模型变小,而是让硬件的边界变模糊了。
你不用买 A100、不用依赖云端 API、不用忍受量化掉精度,只要有一张消费级显卡或者一台 Mac,就能原模原样地把 70B 甚至更大的模型跑起来。代价是慢、需要自己写代码、得忍受磁盘 IO 瓶颈。
如果你手头有张小显卡,又馋大模型的能耐,值得一试。
GitHub 仓库:https://github.com/lyogavin/airllm