AirLLM 非分片模型:4GB 显存跑通 7B 模型的最快路径
【免费下载链接】airllmAirLLM 70B inference with single 4GB GPU项目地址: https://gitcode.com/GitHub_Trending/ai/airllm
显存只有 4GB,7B 模型动辄 OOM?AirLLM v2.10.1 起支持非分片模型,单文件 checkpoint 可直接加载推理,不用再手动处理分片。本文帮你 5 分钟跑通非分片模型推理。
为什么值得关注:非分片模型的 3 个实在好处
- 单文件权重直接跑:模型目录里只有一个
model.safetensors或pytorch_model.bin、没有 index.json?v2.10.1 会自动识别。小模型仓库大多是这种打包方式,以前得先手动拆分,现在省掉这一步。 - 加载流程少一次全量拷贝的坑:自动识别逻辑见 auto_model.py,单文件的解析规则在 utils.py,本地路径传进去就能用,不用关心它是分片还是单文件。
- 显存占用只跟单层大小走:AirLLM 同一时刻只在 GPU 上放一层权重,官方口径 7~8B 模型实测约 1~2GB 显存,4GB 卡跑 7B 不费劲。
5 分钟跑通:从单文件 checkpoint 到第一个 token
from airllm import AutoModel model = AutoModel.from_pretrained("/path/to/your-7B-model") input_tokens = model.tokenizer(['What is the capital of United States?'], return_tensors="pt", max_length=128, truncation=True, padding=False) output = model.generate(input_tokens['input_ids'].cuda(), max_new_tokens=20) print(model.tokenizer.decode(output[0]))from_pretrained里填本地单文件模型目录即可;max_new_tokens控制生成长度,嫌 token 出得慢往下看第三节调compression。
3 个参数决定你的体验:compression、delete_original、profiling_mode
- compression → 把磁盘分片量化成 4bit/8bit,官方口径推理速度最多提升 3 倍 → 7B 建议 '4bit'(需
pip install bitsandbytes,不装会直接抛 ImportError)。 - delete_original → 分片完成后删掉原始下载文件,省一半磁盘 → 本地盘紧张就设 True。
- profiling_mode → 输出磁盘读取和加载到 GPU 各阶段耗时 → 排查"到底慢在哪"时设 True。
谁适合 / 谁该绕道:30 秒自查
| 适合你 | 该绕道 |
|---|---|
| 模型是单文件发布、参数量 7B 及以下 | 显存 ≥24GB 装得下整个模型:直接用 transformers 加载更省事,不必绕道 AirLLM |
| 本地磁盘只有 20GB 上下,存不下两份模型 | 需要毫秒级响应的线上服务:流式读盘意味着每 token 延迟偏大,不适合高吞吐场景 |
| 想先验证模型能不能跑,不打算折腾分片配置 | — |
你大概率会问
Q:怎么判断我的模型是不是非分片模型?A:看模型目录里有没有model.safetensors.index.json。没有、只有单个权重文件,就是非分片。v2.10.1 之后两种格式都能处理,你不用在代码里区分。
Q:7B 到底要吃多少显存?A:AirLLM 每次只在 GPU 上驻留一层解码器,官方口径 7~8B 模型实测 1~2GB 显存,4GB 的卡直接跑。
Q:磁盘不够怎么办?A:坑在于分片会多一份全量拷贝,7B 的 fp16 权重约 14GB,分片目录又要 14GB。设delete_original=True跑完分片就删掉原文件;分片想存别的盘,传layer_shards_saving_path。
打开终端pip install airllm,把上面代码的路径指向任意本地 7B 单文件模型目录,5 分钟后你会看到第一个 token 输出。 🚀
【免费下载链接】airllmAirLLM 70B inference with single 4GB GPU项目地址: https://gitcode.com/GitHub_Trending/ai/airllm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考