如何 AirLLM 让 4GB 显存的消费级显卡跑 70B 大模型
【免费下载链接】airllmAirLLM 70B inference with single 4GB GPU项目地址: https://gitcode.com/GitHub_Trending/ai/airllm
AirLLM 是低显存大模型推理工具:靠层间权重拆分与按需动态加载,一张 4GB 显存的显卡能跑 70B 级模型,8GB 显存可跑 405B 的 Llama 3.1。下文从安装到避坑,五分钟讲完。
🚀 先跑起来
AirLLM 的定位很直接:它处理的是"普通显卡装不下大模型"这个显存瓶颈。你只需把 Hugging Face 模型 ID 交给 AutoModel,接口与 transformers 基本一致,也支持本地路径。最小可运行示例:
from airllm import AutoModel model = AutoModel.from_pretrained("garage-bAInd/Platypus2-70B-instruct") input_tokens = model.tokenizer(['What is the capital of United States?'], return_tensors="pt", return_attention_mask=False, truncation=True, max_length=128, padding=False) 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]))这 9 行代码验证了完整链路:70B 权重从磁盘按层拆出、按层加载,GPU 里始终只驻留当前层的计算。tokenizer 里的 padding=False 是刻意保留的,避坑一节会解释原因。
⚡ 为什么省显存
原理可以压成三条,每条都对应一个可配置的环节:
- 层间拆分:首次加载时,把原始模型逐层切分后存到磁盘,权重不再整包驻留 GPU。
- 按需加载:前向计算到哪一层,才把哪一层读进来,用完即走。显存占用取决于单层大小,而不是总参数——这就是 4GB 能装 70B、8GB 能装 405B 的原因。
- 量化与预取:compression 把待加载的权重压到 4bit/8bit,磁盘读取量变小;prefetching 让下一层的加载与当前层计算重叠,掩盖磁盘延迟。
🧩 五分钟装好
环境要求:Python 3.8+、PyTorch 1.13+;用 GPU 需要 CUDA 11+。同时给磁盘留足空间——拆分层权重的过程非常耗盘,跑 70B 模型建议预留几十 GB 空闲。
pip install airllm pip install transformers peft accelerate bitsandbytes einops sentencepiece装好后直接运行"先跑起来"一节中的代码。首次运行会先下载原始模型、再在 Hugging Face 缓存目录生成分层权重,第一轮等待偏长属于正常现象;看到解码出的文字输出,就代表整条链路全部打通。
📋 参数怎么选
初始化时常用的参数如下,都直接传给 from_pretrained,不传则走默认值:
| 参数 | 作用 | 什么时候用 |
|---|---|---|
| compression | 开启 4bit 或 8bit 量化压缩 | 想进一步加速推理、减少读取量时 |
| prefetching | 预取下一层,重叠加载与计算 | 默认开启,一般无需改动 |
| profiling_mode | 输出各阶段耗时 | 调参、定位瓶颈时打开 |
| layer_shards_saving_path | 指定分层权重的保存路径 | 默认缓存目录空间不足时 |
| hf_token | 传入 Hugging Face 访问令牌 | 下载 gated 受控模型时 |
🌐 模型与平台
模型侧不需要你手动指定架构:AutoModel 会自动识别并加载对应实现,以下模型族都支持:
- Llama 系列
- Qwen 系列
- ChatGLM
- Baichuan
- InternLM
- Mistral
Llama 3.1 405B 这类新模型也在持续纳入支持。跨平台方面,Linux 与 macOS 共用同一套代码;macOS 需要 Apple Silicon 芯片,额外 pip 安装 MLX 即可。仓库里有一份 405B 实测 notebook 可以参考:air_llm/examples/run_llama3.1_405B.ipynb。
🐛 避坑笔记
新手最容易撞上这四个现象,按"现象 → 原因 → 处理"给出:
- 磁盘空间不足:报 MetadataIncompleteBuffer。拆分过程很吃磁盘,清理 Hugging Face 缓存,或用 layer_shards_saving_path 换到更大的盘。
- gated 模型 401:受控模型需要 HF token,初始化时传入 hf_token 即可。
- tokenizer 报没有 padding token:把 padding 设为 False,单条推理本来就不需要 padding。
- 加载报 ValueError:别手动指定具体模型类,改用 AutoModel 自动检测。
收尾
AirLLM 把 70B 级推理的硬件门槛从数据中心拉回到一张消费级显卡。下一步就一条命令:pip install airllm,然后用你的 4GB 显卡挑一个 70B 模型跑起来,更多细节见 README。
【免费下载链接】airllmAirLLM 70B inference with single 4GB GPU项目地址: https://gitcode.com/GitHub_Trending/ai/airllm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考