Tiiny-AI/PowerInfer · 上手攻略
- 仓库:Tiiny-AI/PowerInfer
- 链接:https://github.com/Tiiny-AI/PowerInfer
- 分类:ai(主分类:llm-infra)
- 作者:Tom
- 更新:2026-07-08
是什么
PowerInfer 是由上海交大 IPADS 实验室开源的高速 LLM 推理引擎,专为单张消费级 GPU(RTX 4090 等)本地部署设计。其核心技术是利用 LLM 推理中神经元激活的幂律分布特性——少数"热神经元"(hot neurons)在几乎所有输入中都被激活,而大多数"冷神经元"(cold neurons)则随输入变化。
基于这一洞察,PowerInfer 设计了 GPU-CPU 混合推理引擎:热神经元预加载到 GPU 快速访问,冷神经元在 CPU 上计算,从而大幅降低 GPU 显存占用和 CPU-GPU 数据传输量。
实测在单张 RTX 4090(24 GB)上运行 Falcon(ReLU)-40B-FP16,平均 13.20 tokens/s,峰值 29.08 tokens/s,比 llama.cpp 快 最高 11.69 倍,仅比 A100 服务器低 18%。
解决什么问题
- 消费级 GPU 本地跑大模型:不需要 A100/H100,在 RTX 4090/3090 上跑 40B–175B 参数模型
- 降低推理成本:用消费级硬件替代服务器级 GPU,减少云端 API 费用
- 稀疏激活加速:利用 ReLU 系模型的稀疏激活特性,只计算被激活的神经元,跳过冗余计算
- 隐私敏感场景:模型完全本地运行,数据不出本机
- 边缘部署:2026 年还推出了 Tiiny AI Pocket Lab,支持手机/嵌入式设备推理
⚠️ 注意:PowerInfer 的稀疏加速效果主要针对 ReLU 系模型(如 Falcon(ReLU)、ReLUscript Llama),对 GeLU/SiLU 激活函数模型(如标准 Llama 2)加速效果有限。
快速安装
依赖要求
- CMake(3.17+)
- Python(3.8+)和 pip(19.3+)
- NVIDIA GPU(CUDA),或 AMD GPU(ROCm),或纯 CPU
源码编译
# 克隆仓库
git clone https://github.com/Tiiny-AI/PowerInfer
cd PowerInfer
# 安装 Python 依赖
pip install -r requirements.txt
# NVIDIA GPU 构建(推荐)
cmake -S . -B build -DLLAMA_CUBLAS=ON
cmake --build build --config Release
# AMD GPU 构建
CC=/opt/rocm/llvm/bin/clang \
CXX=/opt/rocm/llvm/bin/clang++ \
cmake -S . -B build -DLLAMA_HIPBLAS=ON -DAMDGPU_TARGETS=gfx1100
cmake --build build --config Release
# 纯 CPU 构建
cmake -S . -B build
cmake --build build --config Release
编译产物在 build/bin/ 目录下,主要可执行文件:
| 可执行文件 | 用途 |
|---|---|
main |
基础 CLI 推理 |
server |
HTTP API 服务 |
quantize |
模型权重量化 |
benchmark |
性能基准测试 |
核心用法
1. 获取模型权重
PowerInfer 使用 ReLU-sparse 系列模型,需要从 Hugging Face 下载:
# 推荐模型(稀疏激活,高加速比)
# Falcon(ReLU)-40B(需 FP16,约 80GB 显存规划)
git lfs install
git clone https://huggingface.co/tiiuae/falcon-40b-reordered falcon-40b
# Bamboo-7B(PowerInfer 配套优化模型)
git clone https://huggingface.co/PowerInfer/Bamboo-base-v0.1-gguf
git clone https://huggingface.co/PowerInfer/Bamboo-DPO-v0.1-gguf
# ProSparse Llama2-7B/13B
git clone https://huggingface.co/SparseLLM/prosparse-llama-2-7b
git clone https://huggingface.co/SparseLLM/prosparse-llama-2-13b
⚠️ 注意:部分模型需要申请访问权限(如 Falcon-40B),建议使用 PowerInfer 官方配套模型(Bamboo 系列)以获得最佳加速效果。
2. 模型推理(CLI)
# 使用 server 模式(推荐,方便调用)
./build/bin/server \
-m /path/to/model-folder/ggml-model-f16.gguf \
-c 2048 \
--host 0.0.0.0 --port 8080
# 或使用 main 模式(交互式)
./build/bin/main \
-m /path/to/model.gguf \
-p "What is PowerInfer?"
3. HTTP API 调用
# 启动服务后(默认 localhost:8080)
curl -X POST http://localhost:8080/completion \
-H "Content-Type: application/json" \
-d '{
"prompt": "PowerInfer is",
"n_predict": 128,
"temperature": 0.7
}'
4. Python 调用
import requests
response = requests.post(
"http://localhost:8080/completion",
json={
"prompt": "Explain the difference between PowerInfer and llama.cpp",
"n_predict": 200,
"temperature": 0.7,
"stop": ["</s>", "User:"]
}
)
print(response.json()["content"])
5. 模型量化(减少显存占用)
# 量化到 Q4_K_M(推荐精度/体积平衡)
./build/bin/quantize \
/path/to/model-folder/ggml-model-f16.gguf \
/path/to/output/ggml-model-q4_k_m.gguf \
Q4_K_M
# 量化到 Q5_K_S(更高精度)
./build/bin/quantize \
/path/to/model-folder/ggml-model-f16.gguf \
/path/to/output/ggml-model-q5_k_s.gguf \
Q5_K_S
6. 自动 FFN Offloading(CPU-GPU 混合)
PowerInfer 支持根据模型稀疏性自动将部分 FFN 层 offload 到 CPU:
./build/bin/main \
-m /path/to/model.gguf \
-mg 1 # 启用混合 GPU/CPU
--threads 8 # CPU 线程数
典型适用场景
| 场景 | 适用原因 |
|---|---|
| 本地 LLM 推理服务 | RTX 4090 单卡跑 40B 模型,成本低、延迟低 |
| 隐私敏感数据处理 | 完全本地运行,数据不经过第三方 API |
| ReLU 系模型优化 | Falcon(ReLU)、Bamboo、ProSparse 系列稀疏激活加速明显 |
| 开发调试 | 本地运行,无需云端配额,适合开发阶段迭代 |
| 边缘/嵌入式 | PowerInfer-2 面向智能手机(11.68 tokens/s on 手机) |
| 量化部署 | 支持 INT4 量化,RTX 3080 等更低端显卡也能跑 |
坑与注意
- 稀疏激活依赖:PowerInfer 的核心加速依赖 ReLU 系列稀疏模型,使用标准 Llama 2(GeLU 激活)不会获得 10 倍加速,建议用官方配套模型(Bamboo、TurboSparse-Mixtral)或 Falcon(ReLU)。
- 模型获取门槛:Falcon-40B 需要申请 HuggingFace 访问权限;建议优先使用 PowerInfer 官方在 HuggingFace 的模型(
PowerInfer/Bamboo-*)。 - Windows GPU 支持:2024/1/11 才添加 Windows GPU 推理支持,相对较新,生产 Linux 优先。
- macOS 优化有限:Apple M 芯片目前仅 CPU 推理,无 GPU 加速。
- 编译耗时:首次 CMake 编译可能需要 10–20 分钟,确保有足够磁盘空间和内存(≥16GB RAM)。
- CUDA 版本:建议 CUDA 12.x,CUDA 11.x 可能遇到兼容性问题。
- 显存规划:即使有混合 CPU/GPU,模型仍需要一定 GPU 显存(热神经元部分),RTX 4090 24GB 是推荐配置。
- PowerInfer-2 是移动端专项:如果目标是手机/嵌入式,不要用主仓库(PowerInfer),要用 PowerInfer-2 分支。
与同类对比
| 特性 | PowerInfer | llama.cpp | vLLM | Ollama |
|---|---|---|---|---|
| 消费级 GPU 优化 | ✅ 稀疏激活,CPU-GPU 混合 | ✅ | ❌(需高端 GPU) | ✅ |
| 稀疏 ReLU 模型 | ✅ 核心优化 | ❌ | ❌ | ❌ |
| 无量化加速 | ✅(稀疏激活) | ✅(Q4/Q5) | ✅ | ✅ |
| API 服务 | ✅ | ✅ | ✅ | ✅ |
| 多模态模型 | ❌ | 有限 | ✅ | ✅ |
| KV Cache 优化 | 稀疏化 | PagedAttention | ✅ | ✅ |
| 本地部署难度 | 中(需编译) | 低 | 高 | 最低 |
| 生态成熟度 | 中 | 高 | 高 | 高 |
一句话总结:PowerInfer 是 ReLU 系稀疏模型的推理加速利器,在消费级硬件上能做到 llama.cpp 10 倍速,但代价是需要使用配套稀疏模型生态;如果你跑的是 Falcon(ReLU) 或 TurboSparse 系列,PowerInfer 是目前地表最快方案。
一句话推荐结论
如果你在用 Falcon(ReLU)、Bamboo、TurboSparse-Mixtral 等稀疏激活模型,且有 RTX 4090/3090 级别的消费显卡,PowerInfer 能让推理速度提升一个数量级;但如果你跑的是普通 Llama 2/3/Mistral,更推荐 llama.cpp 或 Ollama,避免为了用 PowerInfer 而换模型生态。