[ PROMPT_NODE_22460 ]
llama-cpp
[ SKILL_DOCUMENTATION ]
# llama.cpp
纯 C/C++ LLM 推理,依赖极少,针对 CPU 和非 NVIDIA 硬件进行了优化。
## 何时使用 llama.cpp
**在以下情况使用 llama.cpp:**
- 在仅 CPU 的机器上运行
- 在 Apple Silicon (M1/M2/M3/M4) 上部署
- 使用 AMD 或 Intel GPU (无 CUDA)
- 边缘部署 (树莓派, 嵌入式系统)
- 需要无需 Docker/Python 的简单部署
**在以下情况改用 TensorRT-LLM:**
- 拥有 NVIDIA GPU (A100/H100)
- 需要最大吞吐量 (100K+ tok/s)
- 在带有 CUDA 的数据中心运行
**在以下情况改用 vLLM:**
- 拥有 NVIDIA GPU
- 需要 Python 优先的 API
- 需要 PagedAttention
## 快速开始
### 安装
bash
# 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
### 下载模型
bash
# 从 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/
### 运行推理
bash
# 简单聊天
./llama-cli
-m models/llama-2-7b-chat.Q4_K_M.gguf
-p "解释量子计算"
-n 256 # 最大 token 数
# 交互式聊天
./llama-cli
-m models/llama-2-7b-chat.Q4_K_M.gguf
--interactive
### 服务器模式
bash
# 启动兼容 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": "你好!"}],
"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 | 最快 | 差 | 仅测试 |
### 选择量化
bash
# 通用 (balan