PRIMA.CPP: Acelerando a Inferência de LLMs em Escala de 70B em Clusters Domésticos de Baixos Recursos
PRIMA.CPP: Speeding Up 70B-Scale LLM Inference on Low-Resource Everyday Home Clusters
April 7, 2025
Autores: Zonghang Li, Tao Li, Wenjiao Feng, Mohsen Guizani, Hongfang Yu
cs.AI
Resumo
O surgimento do DeepSeek R1 e do QwQ 32B superou as barreiras de desempenho para a execução de modelos de linguagem de grande escala (LLMs) de ponta em dispositivos domésticos. Embora o hardware de consumo esteja se tornando mais potente e a quantização de modelos esteja melhorando, as soluções existentes para o lado do cliente ainda exigem clusters de GPU, grande quantidade de RAM/VRAM e alta largura de banda, muito além do que um cluster doméstico comum pode suportar. Este artigo apresenta o prima.cpp, um sistema de inferência distribuída que executa modelos em escala de 70B em dispositivos domésticos comuns, utilizando uma combinação de CPU/GPU, baixa RAM/VRAM, Wi-Fi e suporte multiplataforma. Ele usa mmap para gerenciar os pesos do modelo e introduz o paralelismo em anel com pré-busca para ocultar o carregamento do disco. Ao modelar a heterogeneidade na computação, comunicação, disco, memória (e seu comportamento de gerenciamento) e sistema operacional, ele atribui de forma ideal as camadas do modelo à CPU e GPU de cada dispositivo, reduzindo ainda mais a latência por token. Um algoritmo elegante chamado Halda é proposto para resolver esse problema de atribuição NP-difícil. Avaliamos o prima.cpp em um cluster doméstico comum de quatro nós. Ele supera o llama.cpp, exo e dllama em modelos de 30B+, mantendo a pressão de memória abaixo de 6%. Isso traz modelos de ponta de 30B a 70B, como Llama 3, DeepSeek R1, Qwen 2.5 e QwQ, para assistentes domésticos, tornando a IA avançada verdadeiramente acessível para indivíduos. O código é de código aberto e está disponível em https://github.com/Lizonghang/prima.cpp.
English
Emergency of DeepSeek R1 and QwQ 32B have broken through performance barriers
for running frontier large language models (LLMs) on home devices. While
consumer hardware is getting stronger and model quantization is improving,
existing end-side solutions still demand GPU clusters, large RAM/VRAM, and high
bandwidth, far beyond what a common home cluster can handle. This paper
introduces prima.cpp, a distributed inference system that runs 70B-scale models
on everyday home devices using a mix of CPU/GPU, low RAM/VRAM, Wi-Fi, and
cross-platform support. It uses mmap to manage model weights and introduces
piped-ring parallelism with prefetching to hide disk loading. By modeling
heterogeneity in computation, communication, disk, memory (and its management
behavior), and OS, it optimally assigns model layers to each device's CPU and
GPU, further reducing token latency. An elegant algorithm named Halda is
proposed to solve this NP-hard assignment problem. We evaluate prima.cpp on a
common four-node home cluster. It outperforms llama.cpp, exo, and dllama on
30B+ models while keeping memory pressure below 6%. This brings frontier
30B-70B models, such as Llama 3, DeepSeek R1, Qwen 2.5, and QwQ to home
assistants, making advanced AI truly accessible to individuals. The code is
open source and available at https://github.com/Lizonghang/prima.cpp.