Prima.cpp: Fast 30-70B LLM Inference on Heterogeneous and Low-Resource Home Clusters

📄 arXiv: 2504.08791v2 📥 PDF

作者: Zonghang Li, Tao Li, Wenjiao Feng, Rongxing Xiao, Jianshu She, Hong Huang, Mohsen Guizani, Hongfang Yu, Qirong Ho, Wei Xiang, Steve Liu

分类: cs.DC, cs.AI

发布日期: 2025-04-07 (更新: 2025-09-26)

备注: 26 pages, 10 figures, 10 tables


💡 一句话要点

Prima.cpp:在异构低资源家庭集群上实现快速30-70B LLM推理

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 大语言模型推理 分布式计算 异构计算 端侧推理 流水线并行 资源调度 低资源环境

📋 核心要点

  1. 现有端侧推理方案在消费级硬件上运行大型语言模型时,面临吞吐量低、模型能力受限的挑战。
  2. Prima.cpp通过流水线环形并行、异构感知调度等技术,优化磁盘I/O、计算和通信的重叠,并充分利用异构资源。
  3. 实验结果表明,Prima.cpp在消费级硬件上显著降低了token生成时间,并支持更大规模的模型推理。

📝 摘要(中文)

本文提出prima.cpp,一个分布式端侧推理系统,旨在消费级家庭集群上运行30-70B的大语言模型(LLM),解决消费硬件上LLM吞吐量和能力受限的问题。该系统可处理混合CPU/GPU、内存/显存不足、磁盘速度慢、Wi-Fi连接以及异构操作系统等情况。论文引入流水线环形并行(PRP)来重叠磁盘I/O与计算和通信,并解决基于mmap的卸载中的预取-释放冲突。此外,论文还提出了Halda,一个异构感知调度器,可在内存/显存约束下协同优化每个设备的CPU/GPU工作负载和设备选择。在四个消费级家庭设备上,70B模型达到674毫秒/token的TPOT,且内存压力小于6%,而使用推测解码的32B模型达到26 tokens/s。与llama.cpp、exo和dllama相比,prima.cpp实现了5-17倍更低的TPOT,支持从8B到70B的细粒度模型大小,确保更广泛的跨操作系统和量化兼容性,并且保持无OOM,同时具有Wi-Fi容错性、保护隐私和硬件独立性。

🔬 方法详解

问题定义:论文旨在解决在资源受限的家庭集群上高效运行大型语言模型的问题。现有方法在处理内存/显存不足、异构硬件以及慢速网络连接等方面存在不足,导致推理速度慢、易发生OOM等问题。

核心思路:论文的核心思路是利用流水线并行和异构资源调度,将计算、通信和存储操作重叠,从而最大限度地提高整体推理效率。通过精细的资源分配和任务调度,充分利用集群中各个设备的计算能力和存储空间。

技术框架:Prima.cpp的整体框架包括以下几个主要模块:1) 流水线环形并行(PRP):将模型推理过程分解为多个阶段,并在集群中的设备上以流水线方式执行,实现计算、通信和磁盘I/O的重叠。2) 异构感知调度器(Halda):根据设备的CPU/GPU性能、内存/显存容量等信息,动态地分配任务和选择设备,以实现最佳的负载均衡。3) 内存管理:采用mmap技术进行内存卸载,并解决预取-释放冲突,从而避免OOM问题。

关键创新:论文的关键创新在于流水线环形并行(PRP)和异构感知调度器(Halda)。PRP通过将计算、通信和存储操作重叠,显著提高了推理效率。Halda能够根据设备的异构特性进行智能调度,从而充分利用集群中的所有资源。

关键设计:PRP的关键设计在于流水线阶段的划分和任务的调度策略。Halda的关键设计在于如何有效地评估设备的性能和资源利用率,以及如何根据这些信息进行任务分配和设备选择。此外,论文还针对mmap卸载中的预取-释放冲突,提出了相应的解决方案。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,Prima.cpp在四个消费级家庭设备上,70B模型达到了674毫秒/token的TPOT,且内存压力小于6%。与llama.cpp、exo和dllama相比,prima.cpp实现了5-17倍更低的TPOT,并支持更广泛的跨操作系统和量化兼容性,同时保持无OOM。

🎯 应用场景

该研究成果可应用于智能家居、个人助理等领域,使用户能够在本地设备上运行大型语言模型,实现隐私保护、离线使用和即时响应。此外,该技术还可用于边缘计算场景,例如在自动驾驶汽车、智能摄像头等设备上进行实时推理,从而提高系统的智能化水平。

📄 摘要(原文)

On-device inference offers privacy, offline use, and instant response, but consumer hardware restricts large language models (LLMs) to low throughput and capability. To overcome this challenge, we present prima.cpp, a distributed on-device inference system that runs 30-70B LLMs on consumer home clusters with mixed CPUs/GPUs, insufficient RAM/VRAM, slow disks, Wi-Fi links, and heterogeneous OSs. We introduce pipelined-ring parallelism (PRP) to overlap disk I/O with compute and communication, and address the prefetch-release conflict in mmap-based offloading. We further propose Halda, a heterogeneity-aware scheduler that co-optimizes per-device CPU/GPU workloads and device selection under RAM/VRAM constraints. On four consumer home devices, a 70B model reaches 674 ms/token TPOT with <6% memory pressure, and a 32B model with speculative decoding achieves 26 tokens/s. Compared with llama.cpp, exo, and dllama, our proposed prima.cpp achieves 5-17x lower TPOT, supports fine-grained model sizes from 8B to 70B, ensures broader cross-OS and quantization compatibility, and remains OOM-free, while also being Wi-Fi tolerant, privacy-preserving, and hardware-independent. The code is available at https://gitee.com/zonghang-li/prima.cpp.