PowerInfer

利用激活局部性的 CPU/GPU 混合 LLM 推理 — 通过在 CPU 和 GPU 之间智能划分计算,在单张消费者 GPU 上运行 70B 参数模型。

🌟 超过 8,000 个 GitHub 星标 | 由 SJTU IPADS 开发 | MIT 许可证


什么是 PowerInfer?

PowerInfer 是一个针对大型语言模型的高性能推理引擎,其利用了一个关键见解: LLM 展示出强烈的激活局部性 — 一小部分神经元(“热神经元”)在大多数推理步骤中持续被激活,而大多数神经元保持不活跃。

PowerInfer 利用此特性来:

  1. 将热神经元保留在 GPU 上 以实现快速计算

  2. 将冷神经元卸载到 CPU/RAM 而不会显著降低质量

  3. 动态路由 根据激活模式在 CPU 与 GPU 之间分配计算

结果:你只需 16GB 显存 就能运行 70B 模型,而不需要全部在 GPU 上占用 140GB+。

关键能力

  • 支持消费者级 GPU — RTX 3090/4090 可运行 70B 模型

  • 面向神经元的调度 — 预测器为每次推理决定走 CPU 还是 GPU

  • 最小的质量下降 — 保持超过 95% 的全精度质量

  • 兼容 llama.cpp — 支持 GGUF 格式

  • 支持 NUMA 感知的 CPU 卸载 — 为高核数 CPU 进行了优化

为什么在 Clore.ai 上使用 PowerInfer?

Clore.ai 的 GPU 租用成本远低于云端替代方案。使用 PowerInfer:

  • 运行 Llama 2 70B 在一台 单张 RTX 4090 上 (24GB 显存)

  • 相比多 GPU 配置大幅降低 GPU 租用成本

  • 使用 CPU RAM 作为溢出处理长上下文窗口

  • 运行此前需要昂贵 A100/H100 实例的模型


硬件要求

模型规模
最低显存
推荐内存
性能

7B

4GB

16GB

优秀

13B

6GB

32GB

非常好

34B

12GB

64GB

良好

70B

16GB

128GB

中等

circle-info

CPU 很重要: PowerInfer 会将冷神经元卸载到 CPU。高核数 CPU(AMD EPYC、Intel Xeon)和快速内存带宽会显著提升大模型的吞吐量。


在 Clore.ai 上快速开始

步骤 1:选择服务器

clore.aiarrow-up-right 市场中,筛选:

  • NVIDIA GPU 具有 16GB+ 显存(RTX 3090、RTX 4090、A100)

  • 高 CPU 核心数 (理想为 16+ 核)

  • 64GB+ 内存 针对 70B 模型,建议 64GB;13B 模型建议 32GB

步骤 2:创建自定义 Docker 镜像

PowerInfer 需要自定义 Docker 设置。使用此 Dockerfile:

将镜像构建并推送到 Docker Hub,或在 Clore.ai 中内联使用:

步骤 3:在 Clore.ai 上部署

在你的 Clore.ai 订单中,设置:

  • Docker 镜像: yourname/powerinfer:latest

  • 端口: 22 (SSH)

  • 环境: NVIDIA_VISIBLE_DEVICES=all


从源码构建 PowerInfer

如果你更愿意在容器内构建:

验证构建


获取模型

下载 GGUF 模型

PowerInfer 使用 GGUF 格式(与 llama.cpp 相同):

生成神经元预测器(PowerInfer 必需)

PowerInfer 需要为每个模型生成一个神经元激活预测器。这是与 llama.cpp 的关键区别:

circle-exclamation

运行推理

基本推理(无预测器)

用于不生成预测器时的测试(标准 GPU/CPU 划分):

PowerInfer 模式(使用预测器)

带有神经元感知路由的完整 PowerInfer 模式:

交互聊天模式

服务模式(兼容 OpenAI 的 API)


优化 GPU 层划分

参数 --gpu-layers 用于确定将多少 Transformer 层保留在 GPU 上。根据你的显存进行调整:

层分配指南:

GPU 显存
7B 模型
13B 模型
34B 模型
70B 模型

8GB

全部(32)

20 层

10 层

4 层

16GB

全部(32)

全部(40)

25 层

10 层

24GB

全部(32)

全部(40)

全部(60)

20 层

48GB

全部(32)

全部(40)

全部(60)

全部(80)


性能基准

吞吐量对比(Llama 2 70B,RTX 3090)

引擎
GPU 层数
每秒标记数(Tokens/sec)

llama.cpp(仅 GPU)

20/80

~4 t/s

llama.cpp(仅 CPU)

0/80

~1 t/s

PowerInfer

20/80 + 预测器

~12 t/s

circle-check

作为服务运行

为持久化 API 提供创建一个 systemd 服务:


API 使用

服务器运行后,可使用任何兼容 OpenAI 的客户端:


故障排除

CUDA 显存不足

CPU 推理缓慢

构建失败

triangle-exclamation

Clore.ai 的 GPU 建议

PowerInfer 的 CPU/GPU 混合设计改变了运行大模型的经济性。具有大显存 GPU 且 CPU 性能良好的 Clore.ai 服务器是理想选择。

GPU
显存
Clore.ai 价格
最大模型(Q4)
吞吐量(Llama 2 70B Q4)

RTX 3090

24 GB

~$0.12/小时

70B(需 64GB+ 内存)

~8–12 标记/秒

RTX 4090

24 GB

~$0.70/小时

70B(更快的 CPU 卸载)

~12–18 标记/秒

A100 40GB

40 GB

~$1.20/小时

70B(最小卸载)

~35–45 标记/秒

A100 80GB

80 GB

~$2.00/小时

70B 全精度

~50–60 标记/秒

circle-info

PowerInfer 的最佳选择: 以约 $0.12/小时 的 RTX 3090 在运行 Llama 2 70B Q4 对预算敏感的用户来说是一个突破。你以比租用 A100 低 10–12 倍的成本获得 70B 模型。吞吐量较低(约 ~10 标记/秒),但对于研究或低流量推理来说性价比极高。

CPU 与 GPU 同样重要: PowerInfer 会将“冷”神经元卸载到 CPU。配备 AMD EPYC 或 Intel Xeon(多核、高内存带宽)的 Clore.ai 服务器在大模型任务中将显著优于单插槽的消费级 CPU。租用前请检查服务器规格。

内存带宽瓶颈: 对于 70B 模型,冷神经元计算时 CPU 内存带宽是限制因素。配备 DDR5 ECC 内存或类似 HBM 架构的服务器将获得更好的吞吐量。


资源

最后更新于

这有帮助吗?