mcpField
L
llama-cpp

llama-cpp

github.com/maystudios开发2985 次安装12 周前更新
代码仓库

关于 llama-cpp

llama.cpp 是用于在 CPU 和 GPU 上本地运行大模型的 C/C++ 推理引擎。本技能介绍模型格式、硬件后端、量化、API,以及在 C++ 应用中集成该库。

主要功能

  1. 01本地 CPU 和 GPU 推理
  2. 02GGUF 模型加载与量化
  3. 03多种硬件后端
  4. 04内置 HTTP 服务 API
  5. 05C 和 C++ 集成

适用场景

  1. 01本地运行大模型
  2. 02通过 HTTP API 提供模型服务
  3. 03将模型量化为 GGUF
  4. 04在 C++ 应用中嵌入推理

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/maystudios/claude-skills --skill llama-cpp

安装后在 Claude Code 中输入/llama-cpp确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
build-and-integration.md
c-api-reference.md
performance-and-backends.md
quantization-guide.md
server-api.md
unreal-engine-integration.md

详细介绍

llama.cpp -- C/C++ 大模型推理框架指南

官方文档

来源URL
GitHub 仓库https://github.com/ggml-org/llama.cpp
C API 头文件(llama.h)https://github.com/ggml-org/llama.cpp/blob/master/include/llama.h
C++ RAII 封装https://github.com/ggml-org/llama.cpp/blob/master/include/llama-cpp.h
构建说明https://github.com/ggml-org/llama.cpp/blob/master/docs/build.md
服务文档https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md
量化工具https://github.com/ggml-org/llama.cpp/blob/master/tools/quantize/README.md
GGUF 规范https://github.com/ggml-org/llama.cpp/blob/master/docs/gguf.md
函数调用文档https://github.com/ggml-org/llama.cpp/blob/master/docs/function-calling.md
多模态文档https://github.com/ggml-org/llama.cpp/blob/master/docs/multimodal.md
示例目录https://github.com/ggml-org/llama.cpp/tree/master/examples
HuggingFace GGUF Hubhttps://huggingface.co/docs/hub/gguf-llamacpp
Llama-Unreal 插件https://github.com/getnamo/Llama-Unreal

什么是 llama.cpp?

llama.cpp 是一个纯 C/C++ 大模型推理引擎,依赖极少,专为 CPU 和 GPU 上的高性能本地推理而设计。主要特性:

  • 采用 MIT 许可证,开发极为活跃(几乎每日发布,目前为 b8766+)
  • 硬件支持最广泛:NVIDIA(CUDA)、AMD(ROCm/Vulkan)、Apple(Metal)、Intel(SYCL/Vulkan)、Qualcomm(OpenCL)、ARM、WebGPU
  • GGUF 模型格式:单文件、兼容 mmap,支持 40 多种量化类型,范围从 1.5 位到 16 位
  • 内置 HTTP 服务:兼容 OpenAI API、Anthropic Messages API,支持流式传输、函数调用和多模态
  • 语言绑定:Python(llama-cpp-python)、Go、Rust、C#、Node.js、Java、Swift 等

快速开始

通过服务运行模型(最快方式)
# Install
brew install llama.cpp    # macOS/Linux
winget install llama.cpp  # Windows

# Start server with a HuggingFace model
llama-server -hf bartowski/Llama-3.3-70B-Instruct-GGUF:Q4_K_M -ngl 99

# Query via curl
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"messages":[{"role":"user","content":"Hello"}],"temperature":0.8}'
嵌入 C++ 项目(库用法)
#include "llama.h"

// 1. Init backends and load model
ggml_backend_load_all();
auto params = llama_model_default_params();
params.n_gpu_layers = 99;
llama_model * model = llama_model_load_from_file("model.gguf", params);

// 2. Create context
auto ctx_params = llama_context_default_params();
ctx_params.n_ctx = 4096;
llama_context * ctx = llama_init_from_model(model, ctx_params);

// 3. Tokenize, decode, sample (see C API reference for full pattern)
从源代码构建并启用 GPU
git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp
cmake -B build -DGGML_CUDA=ON      # or GGML_VULKAN=ON, GGML_METAL=ON
cmake --build build --config Release -j

核心架构

llama.cpp/
  include/
    llama.h          # C API (primary interface)
    llama-cpp.h      # C++ RAII wrappers (unique_ptr aliases)
    ggml.h           # Tensor computation library
  common/
    common.h         # High-level convenience layer
  tools/
    server/          # HTTP server (llama-server)
    quantize/        # Model quantization tool
  examples/
    simple/          # Minimal inference example
    simple-chat/     # Multi-turn chat example

推理流程:

Model (GGUF file)
  -> llama_model_load_from_file()  [load + mmap weights]
  -> llama_init_from_model()       [create context with KV cache]
  -> llama_tokenize()              [text -> tokens]
  -> llama_decode()                [run transformer, fill KV cache]
  -> llama_get_logits()            [get output probabilities]
  -> llama_sampler_sample()        [select next token]
  -> llama_token_to_piece()        [token -> text]
  -> repeat decode/sample loop until EOS

量化速查表

类型位数质量推荐用途
Q4_K_M~4.5良好默认选择 -- 质量与体积的最佳平衡
Q5_K_M~5.5非常好可接受约 20% 更多空间时
Q8_08接近无损验证、对质量要求高的任务
IQ4_XS~4.254 位量化中最佳配合 imatrix 使用,比 Q4_K_M 略小
Q3_K_M~3.5可接受RAM 受限的场景
IQ2_XS~2.3有所降低极限压缩(需要 imatrix)
F1616参考全精度基准
# Quantize a model
llama-quantize model-f16.gguf model-q4km.gguf Q4_K_M

# Convert from HuggingFace
python convert_hf_to_gguf.py /path/to/hf_model --outfile model.gguf

GPU 后端

后端标志硬件
CUDAGGML_CUDA=ONNVIDIA GPU
MetalmacOS 上自动启用Apple Silicon
VulkanGGML_VULKAN=ON跨平台(NVIDIA/AMD/Intel)
HIPGGML_HIP=ONAMD GPU(ROCm)
SYCLGGML_SYCL=ONIntel GPU

GPU 卸载(-ngl 99)是对性能影响最大的单项设置。

服务 API

内置服务提供兼容 OpenAI 的端点:

端点用途
POST /v1/chat/completions聊天(支持流式传输)
POST /v1/completions文本补全
POST /v1/embeddings嵌入
POST /v1/messagesAnthropic Messages API
POST /completion可完整控制参数的原生 API
GET /health健康检查
GET /metricsPrometheus 指标

功能:函数调用(--jinja)、语法约束(--grammar/--json-schema)、多模态(视觉+音频)、并行解码、推测解码、路由器模式、LoRA 热切换、内置 Web UI。

CMake 集成

# Method 1: Subdirectory (embedding)
add_subdirectory(vendor/llama.cpp)
target_link_libraries(myapp PRIVATE llama ggml)

# Method 2: Installed package
find_package(llama REQUIRED)
target_link_libraries(myapp PRIVATE llama)

详细参考文档

  • C/C++ API 参考:请参阅 references/c-api-reference.md,了解完整的 llama.h 函数签名、类型、枚举、结构体、采样链 API 和完整的可运行示例
  • 构建系统与集成:请参阅 references/build-and-integration.md,了解所有 CMake 选项、GPU 后端构建、库链接方法、Docker 和包管理器
  • 服务端 REST API:请参阅 references/server-api.md,了解所有 HTTP 端点、CLI 标志、环境变量、curl 示例、函数调用、语法约束和 Python 客户端用法
  • GGUF 与量化:请参阅 references/quantization-guide.md,了解 GGUF 格式规范、40 多种量化类型、imatrix 生成、模型转换、硬件要求和支持的架构
  • 性能与 GPU 后端:请参阅 references/performance-and-backends.md,了解后端对比、CUDA/Vulkan/Metal 优化、内存管理、推测解码和硬件建议
  • Unreal Engine 集成:请参阅 references/unreal-engine-integration.md,了解 Llama-Unreal 插件、使用 Build.cs 的自定义 C++ 集成、HTTP 服务端方案、游戏内性能和常见的 UE 易踩问题

评论

支持 Markdown