跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++AI算法

本地部署 LLaMA 模型:新版 llama.cpp 实战指南

基于 llama.cpp 在本地部署 LLaMA 大模型的完整流程。涵盖环境构建、模型格式转换(pth/hf/gguf)、量化策略及推理服务启动。通过命令行交互或 OpenAI 兼容 API 实现离线运行,支持 GPU 加速与混合推理,并提供 Open WebUI 界面集成方案,适合资源受限场景下的私有化部署实践。

极光发布于 2026/4/6更新于 2026/9/1154 浏览
本地部署 LLaMA 模型:新版 llama.cpp 实战指南

简介

大模型发展日新月异,推理性能始终是落地的关键瓶颈。llama.cpp 作为一个轻量级、低依赖的 C/C++ 实现,解决了在 CPU 甚至无 GPU 环境下运行 LLaMA 模型的难题。它支持广泛的硬件后端(AVX、Metal、CUDA、Vulkan 等),并提供多种量化方案来平衡速度与精度。

相比传统的 Python 框架,llama.cpp 的优势在于纯粹的 C/C++ 实现,没有外部依赖,且支持 CPU+GPU 混合推理,能够突破显存限制。此外,它还内置了服务化组件,可直接对外提供 API。

环境安装

首先克隆仓库并进入目录:

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

构建 GPU 执行环境前,请确保已安装 CUDA 工具包。若 nvidia-smi 和 nvcc --version 无报错,则环境配置正确。

使用以下命令编译(注意空格):

mkdir build
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j4
cd build
make install

当前版本中,部分指令已重命名为 llama-quantize、llama-cli 和 llama-server。建议建立软链接以便调用:

ln -s /path/to/llama.cpp/build/bin/llama-quantize ./llama-quantize
ln -s /path/to/llama.cpp/build/bin/llama-server ./llama-server
ln -s /path/to/llama.cpp/build/bin/llama-cli ./llama-cli

模型转换流程

我们将以 PTH 格式模型为例,演示如何将其转换为 llama.cpp 可用的 GGUF 格式。

1. 原始模型处理

首先需要准备高版本的 Python 环境(3.10+)及相关依赖:

pip install protobuf==3.20.0 transformers sentencepiece peft

下载原版 LLaMA 权重和 tokenizer 文件。如果官方下载受限,可使用社区提供的资源或脚本自动下载。下载完成后,目录结构通常如下(以 7B 为例):

├── llama-7b
│   ├── consolidated.00.pth
│   ├── params.json
│   └── checklist.chk
└── tokenizer.model

2. 转为 HuggingFace 格式

为了兼容性,建议先将原始 PTH 模型转换为 HF 格式。可以使用 Transformers 库提供的转换脚本:

git clone https://github.com/huggingface/transformers.git
cd transformers
python src/transformers/models/llama/convert_llama_weights_to_hf.py \
    --input_dir /workspace/pth_model/7B \
    --model_size 7B \
    --output_dir /workspace/hf_data

输出目录将包含 config.json、pytorch_model.bin 等标准 HF 文件。

3. LoRA 合并(可选)

如果使用过微调后的 LoRA 模型,需先合并权重生成全量模型。以 Chinese-LLaMA-Alpaca 为例:

git clone https://github.com/ymcui/Chinese-LLaMA-Alpaca.git
cd Chinese-LLaMA-Alpaca
python scripts/merge_llama_with_chinese_lora.py \
    --base_model /workspace/hf_data \
    --lora_model /workspace/chinese_llama_lora_7b \
    --output_dir /workspace/lora_pth_data

注意检查生成的 SHA256 值以确保完整性。若遇到内存不足错误,可指定 --offload_dir 进行缓存。

4. 转为 GGUF 并量化

这是最关键的一步。llama.cpp 提供了 convert_hf_to_gguf.py 脚本将 HF 模型转为 GGUF 格式,并使用 llama-quantize 进行量化。

# 转换 HF 到 GGUF (F16)
python convert_hf_to_gguf.py ../hf_data --outfile /workspace/chinese_gguf/llama-7b.gguf --outtype f16

# 量化为 Q4_0 (推荐用于消费级显卡)
./llama-quantize /workspace/chinese_gguf/llama-7b.gguf /workspace/chinese_gguf/llama-7b-q4_0.gguf Q4_0

量化类型选择直接影响速度与精度。Q4_K_M 通常是性价比最高的选择,而 Q8_0 则接近原始精度但体积较大。

运行与推理

交互模式

使用 llama-cli 可以直接在终端进行对话测试:

llama-cli -m chinese_q4_0.gguf -p "You are a helpful assistant" -cnv -ngl 24

参数说明:

  • -m: 指定模型文件路径。
  • -cnv: 启用对话模式。
  • -ngl: 卸载层数,设为 24 表示尽可能利用 GPU 加速。

API 服务

llama.cpp 内置了 OpenAI 兼容的 API 接口,启动 llama-server 即可:

./llama-server -m /mnt/workspace/my-llama-13b-q4_0.gguf -ngl 28

启动后默认监听 8080 端口。可通过 curl 测试:

curl --request POST \
  --url http://localhost:8080/completion \
  --header "Content-Type: application/json" \
  --data '{"prompt": "What color is the sun?", "n_predict": 512}'

日志中会显示 offloading ... layers to GPU,确认模型已在 GPU 上运行。

若需通过 Python 调用,可安装 openai 库并配置 base_url:

import openai
client = openai.OpenAI(
    base_url="http://127.0.0.1:8080/v1",
    api_key="sk-no-key-required"
)
completion = client.chat.completions.create(
    model="qwen",
    messages=[{"role": "user", "content": "tell me something about michael jordan"}]
)
print(completion.choices[0].message.content)

搭建 Web 聊天界面

为了获得更好的交互体验,可以结合 Open WebUI 打造类似 ChatGPT 的界面。Open WebUI 支持离线运行,兼容多种 LLM 后端。

通过 Docker 快速部署:

docker run -d -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v open-webui:/app/backend/data \
  --name open-webui \
  --restart always \
  ghcr.io/open-webui/open-webui:main

访问 http://localhost:3000/ 注册账号后即可使用。该界面支持 Markdown 渲染、代码高亮、多模型切换及 RAG 集成等功能。

参考文档

  • llama.cpp GitHub
  • Hugging Face Transformers
  • Chinese-LLaMA-Alpaca Wiki

目录

  1. 简介
  2. 环境安装
  3. 模型转换流程
  4. 1. 原始模型处理
  5. 2. 转为 HuggingFace 格式
  6. 3. LoRA 合并(可选)
  7. 4. 转为 GGUF 并量化
  8. 转换 HF 到 GGUF (F16)
  9. 量化为 Q4_0 (推荐用于消费级显卡)
  10. 运行与推理
  11. 交互模式
  12. API 服务
  13. 搭建 Web 聊天界面
  14. 参考文档

更多推荐文章

查看全部
  • 空气质量地图:借助百度天气接口和 Leaflet 进行 WebGIS 可视化
  • llama.cpp 量化模型部署:从模型转换到 API 服务
  • 新能源集控系统架构实践:金仓数据库应对海量时序与高可用挑战
  • 飞算 JavaAI 2.0 功能测评与使用指南
  • 五大经典排序算法详解:插入、希尔、冒泡、选择与堆排序
  • RabbitMQ/Spring-AMQP 高级特性:TTL、死信队列与延迟队列详解
  • MySQL 动态分区管理:自动化与优化实践
  • Effective Modern C++ 条款 37:确保 std::thread 在所有路径上不可结合
  • Mac Mini M4 本地 AI 模型部署指南:从 Ollama 到 Stable Diffusion
  • 本地语音识别技术:Whisper 的隐私保护与多场景应用
  • Llama-Factory 微调模型一键部署上线方案
  • CC-Switch:AI 编码助手配置管理工具
  • Android WebView 安全加固实战:金融 App H5 风险与防御
  • GitHub 双重验证失效或丢失后的账号恢复方法
  • 前端微前端架构:大型项目的挑战与方案
  • 滑动窗口算法实战:两道经典题深度解析
  • 零基础转行Python学习指南与路径规划
  • Ubuntu 22.04 安装 NVIDIA 显卡驱动完整步骤
  • AI 绘画技术解析:工具、流程与职业影响
  • HTTP 网络协议核心概念解析

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online