Skip to content

LLaMA.cpp

LLaMA.cpp 是一个开源的 LLaMA 模型推理引擎,支持在各种硬件上高效运行大型语言模型。

支持的模型

LLaMA 系列

  • LLaMA 2 (7B, 13B, 70B)
  • LLaMA 3 (8B, 70B)

其他模型

  • Mistral (7B, Mixtral 8x7B)
  • Qwen (7B, 14B, 72B)
  • Code Llama
  • 其他 GGUF 格式模型

配置

基础配置

config.yaml~/.bytebuddy/config.yaml 中配置:

yaml
models:
  - name: "llamacpp-local"
    provider: "llamacpp"
    model: "llama-2-7b-chat"
    apiBase: "http://localhost:8080"
    roles: ["chat"]
    defaultCompletionOptions:
      temperature: 0.7
      maxTokens: 2048

高性能配置

yaml
models:
  - name: "llamacpp-performance"
    provider: "llamacpp"
    model: "mixtral-8x7b-instruct"
    apiBase: "http://localhost:8080"
    roles: ["chat", "edit"]
    defaultCompletionOptions:
      temperature: 0.5
      maxTokens: 4096
      topP: 0.9

多模型配置

yaml
models:
  - name: "llamacpp-chat"
    provider: "llamacpp"
    model: "llama-2-7b-chat"
    apiBase: "http://localhost:8080"
    roles: ["chat"]
    defaultCompletionOptions:
      temperature: 0.7
      maxTokens: 2048

  - name: "llamacpp-code"
    provider: "llamacpp"
    model: "codellama-7b-instruct"
    apiBase: "http://localhost:8080"
    roles: ["edit", "apply"]
    defaultCompletionOptions:
      temperature: 0.2
      maxTokens: 1024

配置字段

必需字段

  • name: 模型配置的唯一标识符
  • provider: 设置为 "llamacpp"
  • apiBase: LLaMA.cpp 服务器地址

可选字段

  • model: 模型名称
  • roles: 模型角色 [chat, edit, apply, autocomplete]
  • defaultCompletionOptions:
    • temperature: 控制随机性 (0-2)
    • maxTokens: 最大令牌数
    • topP: 核采样参数
    • topK: 采样候选数量
    • repeatPenalty: 重复惩罚 (1.0-2.0)
    • seed: 随机种子

安装和设置

1. 下载和编译

bash
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make

2. 下载模型

从 HuggingFace 下载 GGUF 格式的模型:

bash
# 示例:下载 Llama 2 7B Chat
wget https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/resolve/main/llama-2-7b-chat.Q4_K_M.gguf

3. 启动服务器

bash
./server -m llama-2-7b-chat.Q4_K_M.gguf --host 0.0.0.0 --port 8080 -c 2048

4. 验证连接

bash
curl http://localhost:8080/health

使用场景配置

本地开发

yaml
models:
  - name: "local-dev"
    provider: "llamacpp"
    model: "llama-2-7b-chat"
    apiBase: "http://localhost:8080"
    roles: ["chat", "edit"]
    defaultCompletionOptions:
      temperature: 0.7
      maxTokens: 2048

代码生成

yaml
models:
  - name: "code-gen"
    provider: "llamacpp"
    model: "codellama-7b-instruct"
    apiBase: "http://localhost:8080"
    roles: ["edit", "apply"]
    defaultCompletionOptions:
      temperature: 0.2
      maxTokens: 1024
      topK: 40

远程服务器

yaml
models:
  - name: "remote-server"
    provider: "llamacpp"
    model: "mixtral-8x7b-instruct"
    apiBase: "http://192.168.1.100:8080"
    roles: ["chat"]
    defaultCompletionOptions:
      temperature: 0.7
      maxTokens: 4096

服务器参数

常用启动参数

bash
./server \
  -m model.gguf \           # 模型文件
  --host 0.0.0.0 \         # 监听地址
  --port 8080 \            # 监听端口
  -c 2048 \                # 上下文大小
  --n-gpu-layers 99 \      # GPU 层数(GPU 加速)
  --batch-size 512 \       # 批处理大小
  --ctx-size 2048          # 上下文窗口大小

性能优化参数

bash
./server \
  -m model.gguf \
  --host 0.0.0.0 \
  --port 8080 \
  -c 4096 \
  --n-gpu-layers 99 \
  --threads 8 \            # CPU 线程数
  --batch-size 1024 \
  --temperature 0.7 \
  --repeat-penalty 1.1

硬件要求

最低要求

  • RAM: 8GB
  • 存储: 10GB
  • CPU: 4 核心

推荐配置

  • RAM: 16GB+
  • GPU: VRAM 8GB+(用于 GPU 加速)
  • CPU: 8+ 核心
  • 存储: SSD

高性能配置

  • RAM: 32GB+
  • GPU: VRAM 16GB+
  • CPU: 16+ 核心
  • 高速 SSD

模型量化

GGUF 格式提供多种量化级别:

  • Q2_K: 最小文件,质量较低
  • Q4_K_M: 推荐的平衡选择
  • Q5_K_M: 更好质量,文件稍大
  • Q8_0: 最佳质量,文件最大

故障排除

常见问题

  1. 连接被拒绝

    • 确保服务器正在运行
    • 检查端口和地址
    • 验证防火墙设置
  2. 内存不足

    • 使用较小的模型
    • 启用 GPU 加速
    • 增加虚拟内存
  3. 响应缓慢

    • 启用 GPU 层
    • 增加线程数
    • 优化批处理大小

调试步骤

  1. 检查服务器日志
  2. 监控系统资源
  3. 测试不同模型
  4. 调整服务器参数

最佳实践

1. 模型选择

  • 根据硬件选择合适大小
  • 使用合适的量化级别
  • 考虑用途选择模型类型

2. 性能优化

  • 启用 GPU 加速
  • 调整批处理大小
  • 优化线程设置

3. 资源管理

  • 监控内存使用
  • 定期清理缓存
  • 合理设置上下文大小

4. 安全性

  • 本地部署确保数据隐私
  • 限制网络访问(仅 localhost)
  • 定期更新 LLaMA.cpp