AirLLM:单GPU运行大语言模型

lyogavin/airllm 访问 GitHub ↗
🔤 Jupyter Notebook ★ 32104 ⑂ 0 monthly #18 (+8352) 抓取 2026-08-22

一句话简介

AirLLM 是一个开源框架,支持在仅有一块 GPU 的消费级硬件上加载和推理超大规模语言模型,通过分层推理技术大幅降低显存需求。

标签

  • 大语言模型
  • 模型推理
  • 显存优化
  • 消费级GPU
  • Python

适用应用场景

  • 单卡消费级 GPU 部署大模型
  • 本地离线运行 LLM 推理
  • 资源受限环境下的模型测试
  • 降低 LLM 部署硬件成本

README 中文摘要

项目概述

AirLLM 旨在极大降低大语言模型的推理显存占用。它无需量化、蒸馏或剪枝,即可让 70B 模型在单张 4GB GPU 上运行;405B Llama 3.1 仅需约 8GB,671B 的 DeepSeek-V3 约需 12GB,而目前最大的开源模型 Kimi K3(2.8T)甚至可以在 4GB 以下的显存上工作——其核心思路是分块流式加载:推理时仅将单层(或稀疏 MoE 模型路由到的单个专家)放入显存,VRAM 占用由层大小决定而非模型总大小。

安装与快速上手

通过 pip 安装:

pip install airllm

使用统一的 AutoModel 接口加载任意 Hugging Face 仓库 ID 即可推理(首次运行会将模型按层切分保存,需预留足够磁盘空间):

from airllm import AutoModel

MAX_LENGTH = 128
model = AutoModel.from_pretrained("Qwen/Qwen3-32B")
# 也支持超大模型,例如:
# model = AutoModel.from_pretrained("deepseek-ai/DeepSeek-V3")  # 671B,~12GB

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=MAX_LENGTH, 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]))

模型压缩:3 倍推理加速

AirLLM 2.0 起支持基于 block-wise 量化的模型压缩,可获得最高约 3 倍的推理速度提升,且精度损失极小。其原理在于推理瓶颈主要在磁盘读取,因此只需压缩权重即可缩小加载体积,无需同时量化激活值,从而更易保持精度。

启用步骤:

  1. pip install -U bitsandbytes
  2. pip install -U airllm(需 2.0.0 及以上)
  3. 初始化时传入 compression 参数:
model = AutoModel.from_pretrained(
    "garage-bAInd/Platypus2-70B-instruct",
    compression='4bit'  # 可选 '8bit' 或不传(默认无压缩)
)

主要配置项

  • compression'4bit' / '8bit' / 默认 None
  • profiling_modeTrue 时输出各阶段耗时
  • layer_shards_saving_path:自定义切分后模型的保存路径
  • hf_token:访问 gated 模型(如 Llama-2)时提供 HF Token
  • prefetching:预取下一层以重叠加载与计算(默认开启,Llama2 支持)
  • delete_original:磁盘紧张时可设为 True,删除原始 HF 模型文件以节省一半空间

MacOS 支持

仅需安装 airllmmlxtorch,并在 Apple Silicon 设备上以同样的 AutoModel 接口运行即可(部分场景需安装 python native 依赖)。

支持的模型与显存对照

开箱即用覆盖主流开源 LLM 家族:Llama 2/3/3.1/3.3/4、Qwen 全系(含 MoE、FP8、原生 VL)、DeepSeek V2/V3/R1、Mistral & Mixtral、Phi、Gemma、ChatGLM、Baichuan、InternLM、Yi、Kimi K3 等。

模型 规模 显存需求
Qwen3 / Mistral / Phi 约 8B 8B ~1–2 GB
Qwen3-30B / Mixtral MoE 30–47B ~1–3 GB
Qwen3.8-27B(dense VL) 27B 3.33 GB
Qwen3-235B(MoE) 235B ~3 GB
Llama 3.x 70B(FP) 70B ~4 GB
Llama 3.1 405B 405B ~8 GB
DeepSeek-V3 671B ~12 GB

常见问题

  • MetadataIncompleteBuffer:通常是磁盘空间不足,分层切分过程很耗盘,清理 HF cache 后重试。
  • max() arg is an empty sequence:加载 Qwen / ChatGLM 时误用了 AirLLMLlama2,应改用 AutoModel
  • 401 Repo model ... is gated:通过 hf_token='...' 提供 Hugging Face Token。
  • Asking to pad but the tokenizer does not have a padding token:将该次调用改为 padding=False,或为 tokenizer 设置 padding token。

引用

@software{airllm2023,
  author  = {Gavin Li},
  title   = {AirLLM: scaling large language models on low-end commodity computers},
  url     = {https://github.com/lyogavin/airllm/},
  version = {0.0},
  year    = {2023},
}

摘要更新于 2026-08-19 00:36:21 · 原文 16489 字符 · md5 6e2b55adbffd…