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

新版 llama.cpp 使用及本地部署 LLaMA

如何使用新版 llama.cpp 在本地部署 LLaMA 模型。内容包括环境搭建(支持 CPU/GPU)、模型格式转换(pth 转 hf 转 gguf)、量化处理、命令行交互及 API 服务启动,最后通过 Open WebUI 实现类 ChatGPT 的聊天界面。文章涵盖了从源码编译到第三方工具集成的完整流程,适合希望本地运行大语言模型的技术人员参考。

LinuxPan发布于 2026/4/6更新于 2026/7/642 浏览
新版 llama.cpp 使用及本地部署 LLaMA

简介

llama.cpp 是一个用于大语言模型推理的 C/C++ 库,主要解决推理过程中的性能问题。其设计理念旨在实现轻量级、最小外部依赖、多平台以及广泛灵活的硬件支持。

  • 纯粹的 C/C++ 实现,没有外部依赖
  • 支持广泛的硬件:
    • x86_64 CPU 的 AVX、AVX2 和 AVX512 支持
    • 通过 Metal 和 Accelerate 支持 Apple Silicon(CPU 和 GPU)
    • NVIDIA GPU(通过 CUDA)、AMD GPU(通过 hipBLAS)、Intel GPU(通过 SYCL)等
    • GPU 的 Vulkan 后端
  • 多种量化方案以加快推理速度并减少内存占用
  • CPU+GPU 混合推理,以加速超过总 VRAM 容量的模型

llama.cpp 提供了模型量化的工具,可以将模型参数从 32 位浮点数转换为 16 位浮点数,甚至是 8、4 位整数。除此之外,llama.cpp 还提供了服务化组件,可以直接对外提供模型的 API。

1. llama.cpp 环境安装

克隆仓库并进入该目录:

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

构建 GPU 执行环境,确保安装 CUDA 工具包,适用于有 GPU 的操作系统。

如果 CUDA 设置正确,那么执行 nvidia-smi、nvcc --version 没有错误提示,则表示一切设置正确。

mkdir build
sudo apt-get install make cmake gcc g++
cd build
cmake .. -DGGML_CUDA=ON
cmake --build . --config Release -j4
cd ..
make install

在当前版本(截至 2024 年 11 月 10 日)这些指令分别被重命名为 llama-quantize、llama-cli、llama-server。

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

2. LLAMA 模型转换

这里我们会从 pth 开始,一步步给出我们怎么将模型应用到 llama.cpp 中的。

2.1 pth 原始模型处理

首先安装高版本 python 3.10。

pip install protobuf==3.20.0
pip install transformers
pip install sentencepiece
pip install peft
2.1.1 下载原版模型

下载原版 LLaMA 模型的权重和 tokenizer.model 文件。可以使用官方渠道或社区提供的资源。

压缩包内文件目录如下(LLaMA-7B 为例):

├── llama-7b
│   ├── consolidated.00.pth
│   ├── params.json
│   └── checklist.chk
└── tokenizer.model
2.1.2 使用 pyllama 下载

另一种下载 Llama 模型的方法是使用 pyllama 库。

pip3 install transformers pyllama -U
python3 -m llama.download --model_size 7B

在 Mac M2 下可能会遇到架构报错,需要手动构建 itree 库:

brew install cmake
pip3 install https://github.com/juncongmoo/itree/archive/refs/tags/v0.0.18.tar.gz
pip3 uninstall pyllama
git clone https://github.com/juncongmoo/pyllama
pip3 install -e pyllama
python3 -m llama.download --model_size 7B

2.2 原版转为 hf 格式文件

2.2.1 hf 格式转换

使用 transformers 提供的脚本 convert_llama_weights_to_hf.py 将原版 LLaMA 模型转换为 HuggingFace 格式。

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

--output_dir目录下会生成 HF 格式的模型文件,诸如 config.json, pytorch_model.bin 等。

2.2.2 合并 LoRA

选择 Chinese-LLaMA-Alpaca 作为 LoRA 合并的操作。我们需要合并 LoRA 权重,生成全量模型权重。

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

参数说明:

  • --base_model:存放 HF 格式的 LLaMA 模型权重和配置文件的目录。
  • --lora_model:中文 LLaMA/Alpaca LoRA 解压后文件所在目录。
  • --output_type:指定输出格式,可为 pth 或 huggingface。
  • --output_dir:指定保存全量模型权重的目录。

2.3 hf 转 gguf 模型

将模型转化为 gguf 格式并进行量化,在 llama.cpp 路径下:

# hf 版本
python convert_hf_to_gguf.py ../hf_data --outfile /workspace/chinese_gguf/llama-7b.gguf --outtype q8_0
# pth 版本
python3 examples/convert_legacy_llama.py /workspace/lora_pth_data/ --outfile /workspace/chinese_gguf/chinese.gguf

使用 llama-quantize 转换精度:

./llama-quantize /workspace/chinese_gguf/chinese.gguf /workspace/chinese_gguf/chinese_q4_0.gguf Q4_0

转换完成后,模型目录下会多一个 chinese_q4_0.gguf 文件。

3. 使用 llama.cpp 运行 GGUF 模型

可以通过上面的操作,或者去 Hugging Face 找 GGUF 格式的大模型版本,下载模型文件放在 llama.cpp 项目 models 目录下。

git clone https://huggingface.co/rozek/LLaMA-2-7B-32K-Instruct_GGUF ./models/LLaMA-2-7B-32K-Instruct_GGUF

3.1 交互模式

可通过 llama-cli 或 llama-server 运行模型。

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

其中:

  • -m 参数后跟要运行的模型
  • -cnv 表示以对话模式运行模型
  • -ngl:当编译支持 GPU 时,该选项允许将某些层卸载到 GPU 上进行计算。

3.2 模型 API 服务

llama.cpp 提供了完全与 OpenAI API 兼容的 API 接口,使用经过编译生成的 llama-server 可执行文件启动 API 服务。

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

默认端口号为 8080,这样就可以启动了一个 API 服务,可以使用 curl 命令进行测试。

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

此外可通过 web 页面或者 OpenAI api 等进行访问。安装 openai 依赖:

pip install openai

使用 OpenAI api 访问:

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":"system","content":"You are a helpful assistant."},{"role":"user","content":"tell me something about michael jordan"}]
)
print(completion.choices[0].message.content)

3.3 模型 API 服务 (第三方)

在 llama.cpp 项目中有提到各种语言编写的第三方工具包,可以使用这些工具包提供 API 服务,这里以 Python 为例,使用 llama-cpp-python 提供 API 服务。

pip install llama-cpp-python
pip install sse_starlette starlette_context pydantic_settings
python -m llama_cpp.server --model models/Llama3-q8.gguf

4. 实现类似 ChatGPT 的聊天应用

为了让我们和语言模型之间的交互更加友好,我们可以借助一些开源项目打造一款类似 ChatGPT 的聊天应用。下面列举一些比较有名的 Web UI:

  • Open WebUI
  • Text generation web UI
  • Jan
  • LibreChat

接下来我们就基于 Open WebUI 来实现一个本地聊天应用。Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 WebUI,旨在完全离线运行。

运行如下的 Docker 命令即可安装 Open WebUI:

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/ 即可,首次访问需要注册一个账号。

5. 参考链接

  • Qwen 本地运行 llama.cpp
  • [Chinese-LLaMA-Alpaca Wiki](https://github.com/ymcui/Chinese-LLaMA-Alpaca/wiki/llama.cpp 量化部署)

目录

  1. 简介
  2. 1. llama.cpp 环境安装
  3. 2. LLAMA 模型转换
  4. 2.1 pth 原始模型处理
  5. 2.1.1 下载原版模型
  6. 2.1.2 使用 pyllama 下载
  7. 2.2 原版转为 hf 格式文件
  8. 2.2.1 hf 格式转换
  9. 2.2.2 合并 LoRA
  10. 2.3 hf 转 gguf 模型
  11. hf 版本
  12. pth 版本
  13. 3. 使用 llama.cpp 运行 GGUF 模型
  14. 3.1 交互模式
  15. 3.2 模型 API 服务
  16. 3.3 模型 API 服务 (第三方)
  17. 4. 实现类似 ChatGPT 的聊天应用
  18. 5. 参考链接
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 利用闲置 Mac Mini 部署 OpenClaw 构建本地金融 AI 助手
  • Windows 7 系统运行最新 Python 版本的方法
  • WebPShop 插件:Photoshop 实现 WebP 格式全功能支持
  • 自然语言处理在社交媒体分析中的应用与实战
  • 自然语言处理在医疗健康领域的应用与实战
  • 网络安全入门指南:学习路线与方向选择
  • 医疗 NLP 实战:电子病历分析与智能问答开发
  • 飞书机器人同步日程安排的技术实现与优化
  • RMBG-2.0 企业级集成:API 封装、Flask 后端与前端拖拽上传方案
  • RoboMME:机器人通用策略的记忆基准测试与理解
  • 医疗 AI 算法实战:败血症预测全流程解析
  • ROG-Map: 面向大场景的高分辨率 LiDAR 机器人中心占用栅格地图
  • Rokid AR 手势识别技术深度解析与开发实践
  • Rokid 手势识别技术深度解析:解锁 AR 无接触交互的核心秘密
  • 无人机多模态目标检测:高多样性基准数据集与融合方法
  • Stable Diffusion 秋叶 ComfyUI 整合包部署指南
  • 荣耀在 MWC 2026 展示首款人形机器人及 Robot Phone
  • 荣耀 MWC 2026 发布 Robot Phone 与人形机器人,探索 AI 硬件生态
  • C++中%取余运算符与模运算的区别
  • ROS 2 实战:海龟仿真器启动与 ros2 run 命令详解

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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