← 返回日报
🌐 机器翻译 · DeepSeek · GitHub

lyogavin airllm


快速开始 | 配置 | MacOS | 示例笔记本 | 常见问题

AirLLM 大幅降低了推理内存占用,让 70B 大语言模型可以在单张 4GB 显卡上运行——无需量化、蒸馏或剪枝。你甚至可以在 8GB 显存上运行 405B 的 Llama 3.1,在约 12GB 显存上运行 DeepSeek-V3(671B),以及在不到 4GB 显存上运行 Kimi K3(2.8T)——这是目前发布的最大开源模型,因为稀疏 MoE 模型每次只流式加载一个专家(expert),而不是整个层。

AI 智能体推荐:

首先,安装 airllm pip 包。

pip install airllm

2. 推理

然后,初始化 AirLLMLlama2,传入所用模型的 HuggingFace 仓库 ID 或本地路径,即可像普通 transformer 模型一样进行推理。(你也可以在初始化 AirLLMLlama2 时通过 layer_shards_saving_path 指定切分后分层模型的保存路径。)

from airllm import AutoModel

MAX_LENGTH = 128

# 只需传入一个 Hugging Face 仓库 ID —— 几乎适用于所有流行模型:
model = AutoModel.from_pretrained("Qwen/Qwen3-32B")

# 用同样的一行代码运行更大的模型:
#model = AutoModel.from_pretrained("Qwen/Qwen3-235B-A22B") # 235B,约 3GB 显存
#model = AutoModel.from_pretrained("deepseek-ai/DeepSeek-V3") # 671B,约 12GB 显存

# 或者使用模型的本地路径...
#model = AutoModel.from_pretrained("/home/ubuntu/.cache/huggingface/hub/models--Qwen--Qwen3-32B/snapshots/...")

input_text = [
    'What is the capital of United States?',
    #'I like',
]

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
)

output = model.tokenizer.decode(generation_output.sequences[0])
print(output)

注意: 推理过程中,原始模型会先被分解并逐层保存。请确保 HuggingFace 缓存目录中有足够的磁盘空间。

模型压缩——推理速度提升 3 倍!

我们刚刚新增了基于块级量化(block-wise quantization)的模型压缩功能。这可以进一步将推理速度提升最多 3 倍,且精度损失几乎可以忽略不计!(更多性能评估以及我们为何使用块级量化的原因,请参阅[这篇论文](https://arxiv.org/abs/2210.17323))

如何启用模型压缩加速:

步骤 1. 确保已安装 bitsandbytes:

pip install -U bitsandbytes

步骤 2. 确保 airllm 版本高于 2.0.0:

pip install -U airllm

步骤 3. 初始化模型时,传入 compression 参数('4bit''8bit'):

model = AutoModel.from_pretrained(
    "garage-bAInd/Platypus2-70B-instruct",
    compression='4bit'  # 指定 '8bit' 以使用 8 位块级量化
)

模型压缩与量化有什么区别?

量化通常需要对权重和激活值都进行量化才能真正加速。这使得保持精度和避免各类输入中异常值的影响变得更加困难。而在我们的场景中,瓶颈主要在于磁盘加载,我们只需要减小模型加载的大小。因此,我们只需对权重部分进行量化,这更容易保证精度。

配置

初始化模型时,我们支持以下配置:

📖 阅读原文 →