4GB 显卡跑 70B 模型:AirLLM 低显存推理实测
【免费下载链接】airllmAirLLM 70B inference with single 4GB GPU项目地址: https://gitcode.com/GitHub_Trending/ai/airllm
AirLLM 把模型按层拆到磁盘、推理时只把当前层放进显存,让 70B 大模型在 4GB GPU 上完成推理。我们实测下来,速度牺牲明显但对离线批处理场景够用。
它到底在做什么
核心思路是"流式过层":模型被逐层切分存到磁盘,GPU 上同一时刻只驻留一层权重,算完即丢弃、再拉下一层。类比翻一本厚书,每次只摊开一页,桌面永远不会堆满。在此基础上可选 4bit/8bit 块级量化,进一步缩小磁盘加载体积。
五分钟跑通
环境要求:
| 项目 | 要求 |
|---|---|
| Python | 3.8+ |
| PyTorch | 1.13+(CUDA 11+) |
| 系统 | Linux / macOS(Apple Silicon) |
| 磁盘 | ≥ 模型原体积 × 2(拆分用) |
先装包:
pip install airllm pip install bitsandbytes # 仅 4bit/8bit 压缩时需要跑最小推理(首次运行会自动拆层并缓存到 HF cache 目录):
from airllm import AutoModel model = AutoModel.from_pretrained("Qwen/Qwen3-32B") # 换成目标模型 ID tok = model.tokenizer( ["1+1 等于?"], return_tensors="pt", return_attention_mask=False, truncation=True, max_length=128, padding=False # 部分 tokenizer 无 pad token,关掉防报错 ) out = model.generate( tok["input_ids"].cuda(), max_new_tokens=32, use_cache=True, return_dict_in_generate=True ) print(model.tokenizer.decode(out.sequences[0]))值得动的几个参数
compression='4bit'磁盘 I/O 是主要瓶颈时开启,加载体积缩小约 3 倍、推理提速约 3 倍,精度损失很小;追求原始精度时保持默认(不压缩)。
layer_shards_saving_path="/data/airllm_shards"HF cache 所在分区空间不够、或想把分片放到大容量 NVMe 盘上时改这个路径。
prefetching=False默认开启,支持时能把磁盘读取和 GPU 计算重叠;如果所用模型不在支持列表(目前仅 Llama 系列)就关掉,否则初始化报错。
踩过的坑
磁盘写满导致 MetadataIncompleteBuffer现象:safetensors 反序列化阶段报MetadataIncompleteBuffer。 原因:拆层过程会在 cache 目录生成与原模型等体积的分片文件,磁盘写满后文件不完整。 解法:du -sh ~/.cache/huggingface确认剩余空间,清理旧分片后重跑;或把layer_shards_saving_path指到剩余空间更大的盘。
gated 模型 401 错误现象:from_pretrained返回 401 Client Error。 原因:模型在 HuggingFace 上标记为 gated,需要 API token 才能下载。 解法:初始化时传hf_token="你的token",token 在 HF 个人设置 → Access Tokens 页获取。
tokenizer 报 padding token 缺失现象:ValueError: Asking to pad but the tokenizer does not have a padding token。 原因:Qwen、ChatGLM 等模型的分词器没有内置 pad token。 解法:tokenizer 调用时设padding=False,或提前tokenizer.pad_token = tokenizer.eos_token。
适合谁 / 不适合谁
适合:离线批处理、研究实验、单卡显存 ≤ 12 GB 的个人开发机。你需要跑 70B 甚至更大的模型做一次性推理或评测,对单 token 延迟不敏感(秒级可接受),低显存推理这个方案的显存优势非常直接。
不适合:如果你需要 < 50 ms 的在线 API 响应、或要求持续高并发吞吐,逐层从磁盘流式加载的 I/O 延迟会成为硬瓶颈,不如直接用 vLLM、TensorRT-LLM 这类权重常驻显存的推理引擎。
下一步
想复现本文环境可以看 air_llm/ 下的示例 notebook,里面有从 7B 到 405B 的多组跑通记录。近期社区在补新架构支持(Qwen3.8、Kimi K3 等),关注 README 的 Updates 段落 即可。按自己显存档位选个模型跑一遍,比读文档来得快。
【免费下载链接】airllmAirLLM 70B inference with single 4GB GPU项目地址: https://gitcode.com/GitHub_Trending/ai/airllm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考