本地跑大模型的人,绕不开量化这个词。模型装不下显存,就压成 8bit、4bit,效果差一点也得接受,不然根本跑不起来。我自己的显卡 8G,不量化的话,14B 以上的模型想都不用想。
前阵子翻到 AirLLM 这个项目,它做的事情刚好相反:不量化,不蒸馏,不剪枝,跑原始权重,然后告诉你 4GB 显存就能跑 70B 的模型,140GB 的东西塞进 4GB 显存里,听着就不太对劲。我把 README 和社区的实测帖都翻了一遍,确认它不是吹牛,觉得值得写一篇。

这项目 2023 年底就有了,一直在更新,最近支持的模型越来越多,热度又起来了。
简介
AirLLM 是一个 Python 库,Apache 2.0 协议开源,GitHub 上 2.8万 Star。它的用途就一个:让显存不大的显卡也能跑大模型。
官方给的数字是这样的:
这些数字说的都是原始权重,没有经过量化,也就是说跑出来的效果,就是模型本来的效果。
先把话说在前面,它跑得很慢,慢到什么程度我在使用场景那节讲,能接受这一点再往下看。
它能做什么
4GB 显存跑 70B 模型
大模型推理的时候,不是整个模型同时干活,是一层一层往下算的。AirLLM 的做法就是显存里只放当前这一层,算完挪走,再读下一层进来。模型权重整个放在硬盘上,用到哪层读哪层。

所以显存占用只取决于单层多大,跟模型总大小没关系。70B 的模型一层大概 1.6GB,4GB 显存够用。

MoE 架构的模型还更省,DeepSeek-V3、Kimi K3 这种,每次推理只激活一部分专家,AirLLM 只把当前用到的那个专家读进来,所以 2.8T 的模型,显存占用也不高。
主流开源模型基本都支持
用法就是传一个模型 ID,一行代码的事。支持的模型列表很长:Llama 2/3/3.1/4、Qwen 全系列、DeepSeek V2/V3/R1、Mistral、Mixtral、Phi、Gemma、ChatGLM、百川、InternLM、Yi。官方说新出的热门模型基本发布当天就能用。
想快一点,可以开压缩
默认是不压缩的,想快一点的话,它给了 4bit 和 8bit 两种压缩选项,官方说最多快 3 倍。README 里有张对比图,同样一段推理,不压缩 449 秒,8bit 是 237 秒,4bit 是 157 秒。代价是精度有一点损失,官方的说法是可以忽略。

开压缩之前要先装 bitsandbytes,快速开始那节有命令。
Mac 和纯 CPU 也能跑
没有 N 卡也能用。Mac 只支持 M 系列芯片,装好 mlx 和 torch,代码跟在 Linux 上写的一样。它还支持纯 CPU 推理,速度更慢,但能把流程跑通,适合手头什么卡都没有的情况。
预取机制,默认开着

GPU 算当前这一层的时候,下一层已经在后台从硬盘往内存里读了,两件事同时进行,官方数据是能快 10% 左右。这个功能默认就是开的,我们不用做任何配置。
快速开始
装库就一行:
pip install airllm
想用压缩加速的话,再装一个:
pip install -U bitsandbytes
代码跟平时用 transformers 差不多:
from airllm import AutoModel
model = AutoModel.from_pretrained("Qwen/Qwen3-32B")
input_text = ['中国的首都是哪里?']
input_tokens = model.tokenizer(input_text,
return_tensors="pt",
return_attention_mask=False,
truncation=True,
max_length=128,
padding=False)
generation_output = model.generate(
input_tokens['input_ids'].cuda(),
max_new_tokens=20,
use_cache=True,
return_dict_in_generate=True)
print(model.tokenizer.decode(generation_output.sequences[0]))
想跑更大的模型,改一行模型名就行。Qwen3-235B 大概占 3GB 显存,DeepSeek-V3 大概占 12GB。
有几个坑提前说一下:
1、第一次跑的时候,它会先把模型整个下载下来,再一层一层拆开存到磁盘,所以磁盘空间一定要够。70B 的模型光下载就要 130GB 上下,拆分还会再占一份。磁盘不够的话,报错信息很迷惑,官方 FAQ 专门写了这一条。

2、模型文件最好放 SSD 上,它大部分时间都花在从硬盘读权重,机械硬盘会慢到离谱。硬盘实在紧张的话,可以传
delete_original=True,拆完之后把原始模型文件删掉,能省一半空间。
3、Llama 这类需要申请权限的模型,要传 Hugging Face 的 token 才能下载。Qwen、DeepSeek 这些没有这道门槛,直接下。
使用场景

先说适合的
1、离线批量任务: 比如本地有一批文档要总结、一批数据要打标,扔给它慢慢跑,跑一晚上出结果,这种场景速度不重要,能跑完就行。
2、本地实验和学习: 想看看 70B 的模型到底什么水平,又不想租云上的卡,用它在自己机器上就能试。跑的是原始权重,我们看到的效果就是模型真实的效果,没有被量化坑过一遍。
3、数据不能出本地的场合: 有些行业的数据没法传到外面的服务上,本地部署是硬要求,显存又不够,这种时候它是少数几个能走通的方案。
再说不适合的
任何要实时交互的场景都不行。 在线聊天、客服、代码补全,这些等不起,它的速度瓶颈在硬盘读数据上,快的时候一两秒出一个字,慢的时候几十秒出一个字都有可能。
社区里有人在 RTX 6000 Ada 上实测,跑出过将近 300 秒一个字的成绩,它就不是干这个的。
想本地跑聊天助手的话,用 llama.cpp 或者 Ollama 加载量化模型,体验好得多。
我的看法
我对这个项目的定位是:它解决的是能不能跑的问题,不是跑得快不快的问题。
Hacker News 上有人拿速度说事,说一分钟出不了几个字。速度确实是它的短板,这个没什么好争的,但反过来想,手里只有消费级显卡的人,以前根本没机会在自己机器上碰 70B、671B 这个量级的模型,现在至少能跑了。批量任务挂一晚上,早上起来看结果,我觉得是可以接受的。
我做 Java 出身,早几年用大模型就是调接口,接口后面怎么跑的跟我没关系。这两年自己折腾本地模型,才发现显存是最现实的一道坎,多大的模型、多少钱的卡,先过这一关再说。AirLLM 把这关的门槛拉得很低,这是我介绍它的理由之一。
最后强调,如果你的需求是本地跑个助手聊天,不要用这个,等一个字几十秒谁也受不了。它适合的就是批量任务和本地实验这两类事。
开源地址:
https://github.com/lyogavin/airllm