Zing 论坛

正文

Chiquito:用内存预加载让消费级显卡跑起大模型

Chiquito 通过逐层推理和 RAM 预加载技术,让显存受限的设备也能流畅运行大型语言模型。相比从磁盘逐层读取,内存预加载可将推理速度提升 2-5 倍。

LLM推理优化显存优化内存预加载边缘计算HuggingFace量化消费级硬件
发布时间 2026/04/06 04:40最近活动 2026/04/06 04:51预计阅读 3 分钟
Chiquito:用内存预加载让消费级显卡跑起大模型
1

章节 01

导读 / 主楼:Chiquito:用内存预加载让消费级显卡跑起大模型

Chiquito 通过逐层推理和 RAM 预加载技术,让显存受限的设备也能流畅运行大型语言模型。相比从磁盘逐层读取,内存预加载可将推理速度提升 2-5 倍。

2

章节 02

背景:显存瓶颈困扰大模型本地部署

随着大语言模型参数规模不断攀升,消费级显卡(如 8GB VRAM 的 RTX 2080)已难以直接加载完整的 LLM。即便是 7B 参数的模型,在 fp16 精度下也需要约 14GB 显存,远超普通游戏显卡的容量。

传统的解决方案要么依赖云端 API(牺牲隐私和自主性),要么使用量化技术(可能损失精度)。而 Chiquito 项目提供了一条不同的路径:通过逐层推理和系统内存预加载,在保持精度的同时,让大模型在消费级硬件上跑起来。

3

章节 03

项目概述:Chiquito 是什么

Chiquito 是一个受 AirLLM 启发的轻量化重实现,专为显存受限但内存充足的机器设计。其核心思路很简单:

  1. 逐层推理:每次只在 GPU 上加载一个模型层,执行前向传播后立即释放
  2. 内存预加载:将所有层权重预加载到系统 RAM(而非每次从磁盘读取)
  3. 滑动窗口:对于超大模型,使用滑动窗口模式保持 N 层常驻内存,后台线程异步预加载后续层

这种设计使得 PCIe 传输(RAM → GPU)取代磁盘 I/O 成为瓶颈,而前者速度是后者的 2-5 倍。

4

章节 04

核心机制:三种运行模式

Chiquito 提供灵活的配置选项,适应不同的硬件条件:

5

章节 05

模式一:完全预加载(preload_to_ram=True)

适用于模型能完全放入系统内存的场景。初始化时将整个模型拆分为每层独立的 .safetensors 文件并加载到 RAM。推理时直接从内存拷贝到 GPU,速度最快。

6

章节 06

模式二:滑动窗口(preload_to_ram=N)

适用于模型超过可用内存的场景。只保持 N 层在内存中,后台线程持续预加载即将使用的层。只要磁盘 I/O 能跟上 GPU 计算速度,就不会产生停顿。

7

章节 07

模式三:磁盘回退(preload_to_ram=False)

最小内存占用模式,每次从磁盘读取层权重。速度最慢,但可在极低内存环境下运行。

8

章节 08

性能实测:数据说话

项目作者在 Intel Core i9-10980HK + 64GB RAM + RTX 2080 Super(8GB VRAM)环境下进行了测试:

小型模型(TinyLlama-1.1B)

  • 完全预加载加载时间 7.91s,生成 20 tokens 耗时 55.10s
  • 磁盘模式加载时间 1.74s,生成耗时 54.58s
  • 由于模型小,差异不明显

中型模型(Qwen2.5-Coder-32B)

  • 完全预加载生成 20 tokens 耗时 361.67s
  • 磁盘模式耗时 391.50s
  • 预加载模式快约 8%,得益于 DMA 传输优化

大型模型(65GB fp16)

  • 超出 64GB 内存,无法使用完全预加载
  • 滑动窗口模式(5/10/34 层)与磁盘模式性能接近
  • 验证了后台预加载能有效隐藏磁盘延迟

此外,Chiquito 支持 bitsandbytes 的 4-bit/8-bit 量化,可将 32B 模型从 65GB 压缩至约 16GB(4-bit),进一步降低内存门槛。