llama-cpp推理引擎Skill llama-cpp

llama-cpp是一个开源工具,用于在CPU、Apple Silicon和消费级GPU上高效运行大型语言模型推理,特别适用于边缘部署和没有NVIDIA硬件的环境。它支持GGUF量化格式,以减少内存使用并提高速度,优化用于苹果设备、AMD/Intel GPU和嵌入式系统。关键词包括:LLM推理、CPU推理、GGUF量化、边缘AI、非NVIDIA硬件、Apple Silicon、模型部署。

AI应用 0 次安装 0 次浏览 更新于 3/21/2026

名称: llama-cpp 描述: 在CPU、Apple Silicon和消费级GPU上运行LLM推理,无需NVIDIA硬件。用于边缘部署、M1/M2/M3 Macs、AMD/Intel GPU,或当CUDA不可用时。支持GGUF量化(1.5-8位)以减少内存和在CPU上比PyTorch快4-10倍。 版本: 1.0.0 作者: Orchestra Research 许可证: MIT 标签: [推理服务, Llama.cpp, CPU推理, Apple Silicon, 边缘部署, GGUF, 量化, 非NVIDIA, AMD GPUs, Intel GPUs, 嵌入式] 依赖项: [llama-cpp-python]

llama.cpp

纯C/C++ LLM推理,依赖最少,针对CPU和非NVIDIA硬件优化。

何时使用 llama.cpp

使用 llama.cpp 当:

  • 在仅CPU的机器上运行
  • 部署在Apple Silicon (M1/M2/M3/M4)上
  • 使用AMD或Intel GPU(无CUDA)
  • 边缘部署(Raspberry Pi, 嵌入式系统)
  • 需要简单部署,无需Docker/Python

使用 TensorRT-LLM 代替当:

  • 有NVIDIA GPU (A100/H100)
  • 需要最大吞吐量 (100K+ tok/s)
  • 在数据中心运行,有CUDA

使用 vLLM 代替当:

  • 有NVIDIA GPU
  • 需要Python优先的API
  • 想要PagedAttention

快速开始

安装

# macOS/Linux
brew install llama.cpp

# 或从源代码构建
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make

# 使用Metal (Apple Silicon)
make LLAMA_METAL=1

# 使用CUDA (NVIDIA)
make LLAMA_CUDA=1

# 使用ROCm (AMD)
make LLAMA_HIP=1

下载模型

# 从HuggingFace下载 (GGUF格式)
huggingface-cli download \
    TheBloke/Llama-2-7B-Chat-GGUF \
    llama-2-7b-chat.Q4_K_M.gguf \
    --local-dir models/

# 或从HuggingFace转换
python convert_hf_to_gguf.py models/llama-2-7b-chat/

运行推理

# 简单聊天
./llama-cli \
    -m models/llama-2-7b-chat.Q4_K_M.gguf \
    -p "解释量子计算" \
    -n 256  # 最大令牌数

# 交互式聊天
./llama-cli \
    -m models/llama-2-7b-chat.Q4_K_M.gguf \
    --interactive

服务器模式

# 启动OpenAI兼容服务器
./llama-server \
    -m models/llama-2-7b-chat.Q4_K_M.gguf \
    --host 0.0.0.0 \
    --port 8080 \
    -ngl 32  # 卸载32层到GPU

# 客户端请求
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama-2-7b-chat",
    "messages": [{"role": "user", "content": "Hello!"}],
    "temperature": 0.7,
    "max_tokens": 100
  }'

量化格式

GGUF格式概述

格式 大小 (7B) 速度 质量 使用场景
Q4_K_M 4.5 4.1 GB 推荐默认
Q4_K_S 4.3 3.9 GB 更快 较低 速度关键
Q5_K_M 5.5 4.8 GB 中等 更好 质量关键
Q6_K 6.5 5.5 GB 较慢 最佳 最大质量
Q8_0 8.0 7.0 GB 优秀 最小退化
Q2_K 2.5 2.7 GB 最快 仅用于测试

选择量化

# 通用使用 (平衡)
Q4_K_M  # 4位, 中等质量

# 最大速度 (更多退化)
Q2_K 或 Q3_K_M

# 最大质量 (较慢)
Q6_K 或 Q8_0

# 非常大的模型 (70B, 405B)
Q3_K_M 或 Q4_K_S  # 降低位数以适应内存

硬件加速

Apple Silicon (Metal)

# 使用Metal构建
make LLAMA_METAL=1

# 运行GPU加速 (自动)
./llama-cli -m model.gguf -ngl 999  # 卸载所有层

# 性能: M3 Max 40-60 令牌/秒 (Llama 2-7B Q4_K_M)

NVIDIA GPUs (CUDA)

# 使用CUDA构建
make LLAMA_CUDA=1

# 卸载层到GPU
./llama-cli -m model.gguf -ngl 35  # 卸载35/40层

# 混合CPU+GPU用于大模型
./llama-cli -m llama-70b.Q4_K_M.gguf -ngl 20  # GPU: 20层, CPU: 其余

AMD GPUs (ROCm)

# 使用ROCm构建
make LLAMA_HIP=1

# 运行AMD GPU
./llama-cli -m model.gguf -ngl 999

常见模式

批量处理

# 从文件处理多个提示
cat prompts.txt | ./llama-cli \
    -m model.gguf \
    --batch-size 512 \
    -n 100

约束生成

# JSON输出与语法
./llama-cli \
    -m model.gguf \
    -p "生成一个人物: " \
    --grammar-file grammars/json.gbnf

# 仅输出有效JSON

上下文大小

# 增加上下文 (默认 512)
./llama-cli \
    -m model.gguf \
    -c 4096  # 4K 上下文窗口

# 很长上下文 (如果模型支持)
./llama-cli -m model.gguf -c 32768  # 32K 上下文

性能基准

CPU性能 (Llama 2-7B Q4_K_M)

CPU 线程 速度 成本
Apple M3 Max 16 50 令牌/秒 $0 (本地)
AMD Ryzen 9 7950X 32 35 令牌/秒 $0.50/小时
Intel i9-13900K 32 30 令牌/秒 $0.40/小时
AWS c7i.16xlarge 64 40 令牌/秒 $2.88/小时

GPU加速 (Llama 2-7B Q4_K_M)

GPU 速度 对比CPU 成本
NVIDIA RTX 4090 120 令牌/秒 3-4× $0 (本地)
NVIDIA A10 80 令牌/秒 2-3× $1.00/小时
AMD MI250 70 令牌/秒 $2.00/小时
Apple M3 Max (Metal) 50 令牌/秒 ~相同 $0 (本地)

支持模型

LLaMA家族:

  • Llama 2 (7B, 13B, 70B)
  • Llama 3 (8B, 70B, 405B)
  • Code Llama

Mistral家族:

  • Mistral 7B
  • Mixtral 8x7B, 8x22B

其他:

  • Falcon, BLOOM, GPT-J
  • Phi-3, Gemma, Qwen
  • LLaVA (视觉), Whisper (音频)

查找模型: https://huggingface.co/models?library=gguf

参考文献

资源