AirLLM 是什么?

AirLLM 是一个开源 Python 库,核心解决一个看似不可能的任务:用 4GB 显存的 GPU 运行 70B 参数的大语言模型

通常一个 70B 模型在 FP16 精度下需要约 140GB 显存,至少需要 2 块 A100(80GB)才能加载。AirLLM 通过逐层推理(Layer-wise Inference)技术,每次只在 GPU 上加载一层模型,计算完成后卸载,再加载下一层。这样显存占用从 140GB 骤降到 4GB 以下

截至 2026 年 7 月,AirLLM 已在 GitHub 获得 23,000+ Stars,PyPI 下载量持续增长,是当前最热门的大模型本地推理工具之一。

核心优势

特性 传统方案 AirLLM
70B 模型显存需求 ~140GB (2× A100 80GB) ~4GB
671B (DeepSeek-V3) ~1.3TB (多卡集群) ~12GB
量化/蒸馏 需要,损失精度 不需要(可选)
硬件门槛 数据中心级 GPU 消费级显卡即可
安装复杂度 复杂(CUDA、多卡配置) pip install airllm 一行搞定

技术原理:逐层推理

传统推理:  [Layer 1] → [Layer 2] → ... → [Layer 80]   ← 全部加载到 GPU
           需要 ~140GB 显存

AirLLM:    [Layer 1] ← 加载到 GPU → 计算 → 保存到 CPU → 释放
            [Layer 2] ← 加载到 GPU → 计算 → 保存到 CPU → 释放
            ...
            [Layer 80] ← 加载到 GPU → 计算 → 输出结果
            只需 ~4GB 显存(单层大小)

关键思路:大模型的推理是串行的,第 N 层的输出是第 N+1 层的输入。AirLLM 利用这一点,每次只在 GPU 上放一层,计算完就把中间结果存回 CPU 内存,然后释放显存加载下一层。

💡 代价是什么? 速度。因为每层都要在 GPU 和 CPU 之间来回传输数据,推理速度会比全卡加载慢。但对个人开发者来说,能跑起来比跑得快更重要


安装与环境准备

基础安装

# 创建虚拟环境(推荐)
python -m venv airllm-env
source airllm-env/bin/activate

# 安装 airllm
pip install airllm

# 如果需要使用量化加速,安装 bitsandbytes
pip install -U bitsandbytes

系统要求

  • GPU 推理:NVIDIA GPU,4GB+ 显存,CUDA 支持
  • CPU 推理:任意 x86_64 CPU(2024 年 8 月起支持)
  • macOS:Apple Silicon (M1/M2/M3),需安装 mlx 框架
  • 磁盘空间:首次运行时会下载模型(70B 约 130GB),需要足够的存储空间
  • 内存:建议 16GB+ 系统内存(用于缓存中间结果)

验证安装

from airllm import AutoModel
print("AirLLM 安装成功!")

快速上手:5 分钟跑起来

第一个 Hello World

from airllm import AutoModel

MAX_LENGTH = 128

# 一行代码加载模型(自动下载 + 分层处理)
model = AutoModel.from_pretrained("Qwen/Qwen3-32B")

# 准备输入
input_text = ["What is the capital of France?"]
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=50,
    use_cache=True,
    return_dict_in_generate=True
)

# 解码输出
output = model.tokenizer.decode(generation_output.sequences[0])
print(output)

输出示例:

What is the capital of France? The capital of France is Paris.

就这么简单。不需要手动配置多卡、不需要写显存优化代码、不需要量化,AirLLM 的 AutoModel 自动处理一切。

支持的主流模型

AirLLM 通过 AutoModel 自动检测模型类型,支持几乎所有主流开源大模型:

模型系列 示例 最低显存
Qwen3 Qwen3-32B / Qwen3-235B ~3GB
DeepSeek DeepSeek-V3 (671B) ~12GB
Llama Llama 3.1 405B / Llama 3 70B ~8GB / ~4GB
Mistral Mixtral 8x7B ~4GB
ChatGLM ChatGLM3-6B ~4GB
Phi Phi-4 ~4GB
Gemma Gemma 2B/7B ~4GB
Baichuan Baichuan2-7B ~4GB

进阶功能

1. 4-bit / 8-bit 量化加速

AirLLM 内置基于块级量化(block-wise quantization)的模型压缩,可带来最高 3 倍推理速度提升,精度损失极小。

from airllm import AutoModel

# 4-bit 量化(速度最快,显存最小)
model = AutoModel.from_pretrained(
    "Qwen/Qwen3-32B",
    compression='4bit'  # 或 '8bit'
)

为什么 AirLLM 的量化精度损失很小?因为传统量化需要同时量化权重和激活值(activations)来加速计算,而 AirLLM 的瓶颈在 磁盘 I/O(从磁盘加载模型层),所以只需要量化权重部分,这更容易保证精度。

2. 预取优化(Prefetching)

预取功能可以在 GPU 计算当前层的同时,提前从磁盘加载下一层到内存,实现计算与 I/O 重叠,带来约 10% 的速度提升

from airllm import AutoModel

# 预取默认开启(AirLLMLlama2 支持)
model = AutoModel.from_pretrained(
    "meta-llama/Llama-2-70b-hf",
    hf_token="your_huggingface_token",  # 需要 HuggingFace token 访问 gated model
)

3. 配置选项大全

model = AutoModel.from_pretrained(
    "model_name_or_path",

    # 量化:'4bit' / '8bit' / None
    compression='4bit',

    # 性能分析:输出各阶段耗时
    profiling_mode=True,

    # 分层模型保存路径(可选)
    layer_shards_saving_path='/data/airllm_cache/',

    # HuggingFace token(访问受限模型时必需)
    hf_token="hf_xxxx",

    # 预取(默认开启)
    prefetching=True,

    # 转换后删除原始模型文件(节省磁盘空间)
    delete_original=True,
)

4. 多轮对话示例

from airllm import AutoModel

model = AutoModel.from_pretrained("Qwen/Qwen3-32B")

def chat_with_model(prompt, history=None):
    """简单的单轮对话"""
    if history:
        full_prompt = history + "\nUser: " + prompt + "\nAssistant: "
    else:
        full_prompt = f"User: {prompt}\nAssistant: "

    input_tokens = model.tokenizer(
        [full_prompt],
        return_tensors="pt",
        return_attention_mask=False,
        truncation=True,
        max_length=512,
        padding=False
    )

    generation_output = model.generate(
        input_tokens['input_ids'].cuda(),
        max_new_tokens=256,
        use_cache=True,
        return_dict_in_generate=True,
        temperature=0.7,
        top_p=0.9,
    )

    response = model.tokenizer.decode(generation_output.sequences[0])
    # 提取 Assistant 部分
    if "Assistant:" in response:
        response = response.split("Assistant:")[-1].strip()

    return response

# 测试
print(chat_with_model("用三句话解释量子计算"))
print(chat_with_model("Python 中最优雅的排序方式是什么?"))

实战场景

场景一:本地私有知识库问答

结合 embedding 模型,在本地搭建完整的 RAG(检索增强生成)系统:

from airllm import AutoModel
# 配合 LangChain 使用
from langchain.llms import HuggingFacePipeline
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.chains import RetrievalQA

# 加载 AirLLM 模型作为 LLM 后端
model = AutoModel.from_pretrained("Qwen/Qwen3-32B", compression='4bit')

# 搭配本地向量数据库(如 FAISS)
# 实现完全离线的文档问答、代码检索等

场景二:嵌入式设备部署

树莓派 5 + USB AI 加速棒,或 Jetson Nano 等边缘设备:

# 在边缘设备上
pip install airllm
# CPU 推理模式,无需 GPU
from airllm import AutoModel

# 在 CPU 上运行小模型
model = AutoModel.from_pretrained("microsoft/Phi-3-mini-4k-instruct")

# 可用于 IoT 设备的本地 AI 推理
# 智能家居语音控制、工业检测等

场景三:MacBook 本地推理

Apple Silicon 用户可直接运行大模型:

# macOS 上需要安装 mlx
# pip install mlx

from airllm import AutoModel

# 在 M1/M2/M3 MacBook 上运行
model = AutoModel.from_pretrained("Qwen/Qwen3-32B")

# 利用统一内存架构,体验接近原生的推理速度

AirLLM vs 其他本地推理方案

方案 原理 最低显存 速度 精度 易用性
AirLLM 逐层加载 4GB 较慢 ✅ 无损 ⭐⭐⭐⭐⭐
llama.cpp GGUF 量化 4GB 量化有损 ⭐⭐⭐⭐
vLLM PagedAttention 80GB+ 极快 ✅ 无损 ⭐⭐⭐
Ollama GGUF 封装 4GB 量化有损 ⭐⭐⭐⭐⭐
ExLlamaV2 4-bit GPTQ 24GB+ 极快 量化有损 ⭐⭐⭐

选型建议: - 显存 < 8GB:AirLLM(无损)或 llama.cpp/Ollama(量化有损) - 显存 8-24GB:AirLLM + 4bit 量化,或 ExLlamaV2 - 多卡 / 数据中心:vLLM(生产级服务) - 追求简单易用:Ollama(一键启动)或 AirLLM(pip 一行)


性能测试参考

以下为社区实测数据(因硬件和模型版本不同,仅供参考):

模型 硬件 tokens/sec 说明
Llama-3-8B RTX 3060 12GB ~8-12 4-bit 量化
Llama-3-70B RTX 3060 12GB ~1-2 4-bit 量化
Qwen3-32B GTX 1650 4GB ~1-2 无量化
DeepSeek-V3 671B RTX 4090 24GB ~0.3 ~12GB 显存

⚠️ 注意:AirLLM 的推理速度确实比全卡加载慢(通常 1-3 tokens/sec),但它的价值在于让普通硬件也能跑大模型,适合开发调试、本地实验、离线推理等场景。


常见问题

Q: AirLLM 能用来训练模型吗?

不能。 AirLLM 仅用于推理(inference),不支持训练或微调。如果需要微调,可以使用 LoRA/QLoRA 等方案。

Q: 为什么我运行时速度很慢?

这是 AirLLM 逐层加载机制的正常现象。提升方法: 1. 使用 4-bit 量化(compression='4bit') 2. 启用预取(prefetching=True,默认已开启) 3. 使用 SSD 存储模型文件(减少磁盘 I/O 延迟)

Q: 第一次加载为什么很久?

首次运行时,AirLLM 会下载模型并将模型逐层拆分保存到缓存目录。70B 模型下载约 130GB,拆分也需要时间。第二次运行会直接使用缓存,速度会快很多。

Q: 磁盘空间不够怎么办?

# 设置 delete_original=True,拆分后删除原始 HuggingFace 模型
model = AutoModel.from_pretrained(
    "Qwen/Qwen3-32B",
    delete_original=True  # 节省约 50% 磁盘空间
)

总结

AirLLM 的核心价值可以用一句话概括:让每个开发者都能在自己的电脑上跑大模型

维度 评价
🎯 核心亮点 4GB 显存跑 70B,无需量化
📦 安装难度 pip install,零配置
🧪 模型支持 主流开源模型全覆盖
⚡ 推理速度 较慢(1-3 tok/s),但能跑起来
🔧 适用场景 开发调试、本地实验、边缘部署
📄 开源协议 Apache 2.0 / BELLE License

下一步: - GitHub 仓库 — Star 23K+,持续活跃维护 - HuggingFace 博客 — 技术深度解读 - Colab 示例 — 免费在线试用

如果你觉得这篇文章有帮助,欢迎分享给更多开发者!