1. 项目概述
llama.cpp 是一个高性能的大语言模型推理引擎,用 C++ 编写,专注于在多种硬件平台上高效运行 LLM 推理。该项目由 Georgi Gerganov 创建,已成为业界领先的开源 LLM 推理框架之一。
1.1 项目特点
- 高性能: 专为推理优化,支持多种量化格式
- 跨平台: 支持 Windows, Linux, macOS, iOS, Android
- 多硬件: 支持 CPU, GPU (CUDA/Metal/Vulkan), 和各种加速器
- 模块化: 清晰的架构设计,易于扩展和维护
- 开源活跃: 拥有活跃的开发社区和频繁的更新
2. 整体软件架构
2.1 架构层次图
┌─────────────────────────────────────────────────────────────┐
│ 应用层 (Applications) │
├─────────────────────────────────────────────────────────────┤
│ examples/ tools/ tests/ benchmarks/ pocs/ │
├─────────────────────────────────────────────────────────────┤
│ 通用工具层 (Common) │
├─────────────────────────────────────────────────────────────┤
│ common/ - 命令行解析、控制台、下载、通用工具函数 │
├─────────────────────────────────────────────────────────────┤
│ 核心推理层 (Llama) │
├─────────────────────────────────────────────────────────────┤
│ src/ - 模型加载、推理上下文、采样、语法约束、量化 │
├─────────────────────────────────────────────────────────────┤
│ 张量计算层 (GGML) │
├─────────────────────────────────────────────────────────────┤
│ ggml/ - 张量操作、量化算法、硬件后端、内存管理 │
└─────────────────────────────────────────────────────────────┘
2.2 核心模块关系图
计算层
ggml/src/*- 核心张量运算ggml/backend/*- 后端管理系统ggml-cuda/*- NVIDIA GPU 支持ggml-metal/*- Apple Metal 支持ggml-vulkan/*- Vulkan 跨平台 GPU 支持ggml-cpu/*- CPU 优化实现
核心层
src/llama.cpp- 主入口文件src/llama-model.cpp- 模型加载和处理src/llama-context.cpp- 推理上下文管理src/llama-sampling.cpp- 采样算法实现src/models/*- 支持的模型架构实现
通用层
common/*- 命令行参数解析、聊天功能、控制台输出等

