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 範例 — 免費線上試用

如果你覺得這篇文章有幫助,歡迎分享給更多開發者!