菜单

概述

相关源文件

本文档提供了 llama.cpp 系统架构、核心组件及其相互关系的高层概述。llama.cpp 是一个用于大型语言模型 (LLM) 推理的 C/C++ 实现,它优先考虑最小的设置和跨不同硬件平台的高性能。

有关特定子系统的详细信息,请参阅:核心库架构后端用户界面模型管理

系统目的与架构

llama.cpp 通过基于 GGML 张量计算库的分层架构实现高效的 LLM 推理。该系统支持多种硬件后端,提供编程和交互式接口,并处理从转换到部署的完整模型生命周期。

整体系统架构

来源:README.md1-70 CMakeLists.txt1-30

核心组件

该系统由四个主要层组成,每一层都有其独特的职责。

库层 (libllama)

核心库为模型加载、上下文管理和推理执行提供了主要的 API。关键组件包括:

组件文件位置目的
llama.hinclude/llama.h主 API 定义
llama.cppsrc/llama.cpp核心实现
llama_contextsrc/llama.cpp推理状态管理
llama_modelsrc/llama.cpp模型加载和元数据
llama_samplersrc/llama-sampling.cppToken 采样策略

计算层 (ggml)

GGML 库处理张量运算,并通过多个后端提供硬件抽象。

GGML 后端架构

来源:Makefile963-977 CMakeLists.txt157-160

用户界面层

两个主要接口提供对 llama.cpp 功能的访问。

接口二进制文件源代码位置目的
命令行llama-clitools/main/main.cpp交互式推理和实验
HTTP 服务器llama-servertools/server/server.cpp兼容 OpenAI 的 API 端点

模型管理层

该系统使用 GGUF (GGML 通用文件) 格式进行优化的模型存储和加载。

模型处理管道

来源:README.md275-301 Makefile1220-1228

文件组织

代码库按逻辑目录组织,反映了系统架构。

目录目的关键文件
/include/公共 API 头文件llama.h, llama-cpp.h
/src/核心库实现llama.cpp, llama-vocab.cpp, llama-grammar.cpp
/ggml/张量计算库ggml.c, ggml-backend.c, ggml-alloc.c
/ggml/src/ggml-*/硬件后端实现ggml-cuda/, ggml-metal/, ggml-cpu/
/tools/命令行工具main/, server/, quantize/, perplexity/
/common/共享实用程序common.cpp, sampling.cpp, chat.cpp
/examples/示例应用程序simple/, embedding/, batched/
/tests/测试套件test-backend-ops, test-tokenizer-*

来源:CMakeLists.txt215-217 Makefile959-998

构建系统集成

该系统支持多种构建系统,并具有全面的后端检测功能。

构建配置流程

来源:CMakeLists.txt92-104 Makefile186-213

使用模式

该系统支持三种主要的使用模式。

  1. 交互式 CLI:通过 llama-cli 进行直接模型交互,用于实验和测试。
  2. HTTP API:通过 llama-server 进行服务器部署,用于应用程序集成。
  3. 库集成:直接使用 libllama 进行自定义应用程序开发。

每种模式都利用相同的底层 GGML 计算引擎和模型管理系统,确保在不同部署场景下的行为一致性。

来源:README.md303-434 tools/main/README.md