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

大模型部署工具 llama.cpp 介绍与安装使用

llama.cpp 是基于 C 语言的大模型推理优化项目,提供高性能张量库 ggml 及模型量化功能。文章详解了从源码编译、模型格式转换(GGUF)、精度量化到本地推理服务化的完整流程。通过量化技术可将模型体积显著减小,同时保持推理速度,适用于资源受限环境下的本地大模型部署。

w795471发布于 2025/2/7更新于 2026/7/2447 浏览
大模型部署工具 llama.cpp 介绍与安装使用

1. 大模型部署工具 llama.cpp

大模型的研究分为训练和推理两个部分。训练的过程,实际上就是在寻找模型参数,使得模型的损失函数最小化,推理结果最优化的过程。训练完成之后,模型的参数就固定了,这时候就可以使用模型进行推理,对外提供服务。

llama.cpp(https://github.com/ggerganov/llama.cpp)主要解决的是推理过程中的性能问题。主要有两点优化:

  1. llama.cpp 使用的是 C 语言写的机器学习张量库 ggml。
  2. llama.cpp 提供了模型量化的工具。

计算类 Python 库的优化手段之一就是使用 C 重新实现,这部分的性能提升非常明显。另外一个是量化,量化是通过牺牲模型参数的精度,来换取模型的推理速度。llama.cpp 提供了大模型量化的工具,可以将模型参数从 32 位浮点数转换为 16 位浮点数,甚至是 8、4 位整数。

除此之外,llama.cpp 还提供了服务化组件,可以直接对外提供模型的 API。

2. 使用 llama.cpp 量化模型

2.1 下载编译 llama.cpp

克隆代码,编译 llama.cpp:

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

在目录下会生成一系列可执行文件:

  • main:使用模型进行推理
  • quantize:量化模型
  • server:提供模型 API 服务

2.2 准备 llama.cpp 支持的模型

llama.cpp 支持转换的模型格式有 PyTorch 的 .pth、HuggingFace 的 .safetensors,以及之前 llama.cpp 采用的 ggmlv3。

在 HuggingFace 上找到合适格式的模型,下载至 llama.cpp 的 models 目录下:

git clone https://huggingface.co/4bit/Llama-2-7b-chat-hf ./models/Llama-2-7b-chat-hf

2.3 转换为 GGUF 格式

  1. 安装依赖

llama.cpp 项目下带有 requirements.txt 文件,直接安装依赖即可:

pip install -r requirements.txt
  1. 转换模型
python convert.py ./models/Llama-2-7b-chat-hf --vocabtype spm

输出示例:

params = Params(n_vocab=32000, n_embd=4096, n_mult=5504, n_layer=32, n_ctx=2048, n_ff=11008, n_head=32, n_head_kv=32, f_norm_eps=1e-05, f_rope_freq_base=None, f_rope_scale=None, ftype=None, path_model=PosixPath('models/Llama-2-7b-chat-hf'))
Loading vocab file 'models/Llama-2-7b-chat-hf/tokenizer.model', type 'spm'
...
Wrote models/Llama-2-7b-chat-hf/ggml-model-f16.gguf

vocabtype 指定分词算法,默认值是 spm,如果是 bpe,需要显式指定。

2.4 开始量化模型

quantize 提供各种精度的量化。用法如下:

./quantize
usage: ./quantize [--help] [--allow-requantize] [--leave-output-tensor] model-f32.gguf [model-quant.gguf] type [nthreads]
--allow-requantize: Allows requantizing tensors that have already been quantized. Warning: This can severely reduce quality compared to quantizing from 16bit or 32bit
--leave-output-tensor: Will leave output.weight un(re)quantized. Increases model size but may also increase quality, especially when requantizing
Allowed quantization types:
2  or  Q4_0   :  3.56G, +0.2166 ppl @ LLaMA-v1-7B
3  or  Q4_1   :  3.90G, +0.1585 ppl @ LLaMA-v1-7B
...
7  or  Q8_0   :  6.70G, +0.0004 ppl @ LLaMA-v1-7B
1  or  F16    : 13.00G              @ 7B
0  or  F32    : 26.00G              @ 7B

执行量化命令:

./quantize ./models/Llama-2-7b-chat-hf/ggml-model-f16.gguf ./models/Llama-2-7b-chat-hf/ggml-model-q4_0.gguf Q4_0

输出日志:

llama_model_quantize_internal: model size  = 12853.02 MB
llama_model_quantize_internal: quant size  =  3647.87 MB
llama_model_quantize_internal: hist: 0.036 0.015 0.025 0.039 0.056 0.076 0.096 0.112 0.118 0.112 0.096 0.077 0.056 0.039 0.025 0.021

量化之后,模型的大小从 13G 降低到 3.6G,但模型精度从 16 位浮点数降低到 4 位整数。

3. 模型推理与服务

完成量化后,可以使用生成的 GGUF 模型进行推理或启动服务。

3.1 本地推理

使用 main 程序加载模型进行对话:

./main -m ./models/Llama-2-7b-chat-hf/ggml-model-q4_0.gguf -p "Hello, how are you?" -n 128

3.2 启动 API 服务

llama.cpp 内置了 HTTP 服务器,可以方便地集成到其他应用中:

./server -m ./models/Llama-2-7b-chat-hf/ggml-model-q4_0.gguf -c 2048 --port 8080

服务启动后,可通过 POST 请求向 /completion 接口发送文本以获取推理结果。

目录

  1. 1. 大模型部署工具 llama.cpp
  2. 2. 使用 llama.cpp 量化模型
  3. 2.1 下载编译 llama.cpp
  4. 2.2 准备 llama.cpp 支持的模型
  5. 2.3 转换为 GGUF 格式
  6. 2.4 开始量化模型
  7. 3. 模型推理与服务
  8. 3.1 本地推理
  9. 3.2 启动 API 服务
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Python webbrowser 库:跨平台浏览器控制接口
  • 词岛 AI:学术论文写作辅助工具功能解析
  • Midjourney 注册、订阅及基础使用指南
  • Axum:Rust 高性能 Web 框架实战指南
  • Git 与 Gitee 协作开发指南
  • VS Code 中 GitHub Copilot 配置与高阶用法实战
  • TRAE、Qoder、Cursor 与 GitHub Copilot 深度对比:AI 编程工具选型指南
  • 2024 年主流大模型开源工具与框架精选
  • OpenVINO 本地部署 DeepSeek-R1 量化大模型:前端交互与后端服务
  • TWIST2 全身 VR 遥操控制:基于视觉观测预测人形机器人关节位置
  • DataX 二进制与源码部署及 DataX-Web 可视化平台搭建
  • 奥迪 A6/A7 CarPlay 激活与 8511 地图安装指南
  • Ubuntu 22.04 基于 ROS2 Humble 搭建 PX4 无人机仿真环境
  • 结构化的力量:ChatGPT 如何实现高效信息管理
  • AES CCM 算法的 FPGA/Verilog 实现
  • ChatGPT、Gemini 及 Spotify 教育版身份验证自动化方案
  • phpStudy 下载与安装教程
  • 决策树(Decision Tree)详解:数学原理、算法对比与 Python 代码实现
  • Java volatile 关键字详解:原理、场景与误区
  • OpenViking 部署与应用:字节跳动开源 AI 代理上下文数据库

相关免费在线工具

  • 加密/解密文本

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