llama.cpp 本身是一个仓库
其作用是 LLM inference in C/C++ 。用最少配置和最先进的性能在广泛的硬件上进行 LLM 推理。
作用
纯 C/C++ 实现,不需要额外的复杂依赖,易于部署。
支持 Windows、macOS、Linux,并针对不同硬件(如 ARM NEON、AVX、CUDA 等)进行优化。
支持 1.5 位、2 位、4 位等整数量化技术,大幅降低模型的内存需求和计算开销。
针对本地硬件(CPU、GPU、Apple Silicon 等)优化了 LLM 的推理过程,支持低资源设备运行大模型。
与 GGUF(GGML 的升级版)模型格式紧密结合,用于高效加载和运行量化模型。
简言之 llama.cpp 是一个轻量、高效的工具,用于在本地运行和推理 LLM,特别适合资源受限的环境或需要隐私保护的场景。
如何使用
安装并准备好模型文件。
安装与C++ 编译器相关的依赖。
源码编译,具体见源码编译,生成可执行文件
llama-cli和llama-server等。从 Hugging Face 或其他模型托管平台下载 GGUF 格式的模型。
llama-cli工具适合快速测试模型llama-server提供一个 HTTP 服务器,可以用于集成到其他应用中。启动后,可以通过http://localhost:8080/v1/chat/completions访问 API。与
llama-cpp-python包一起使用,可以在 Python 中调用llama.cpp功能。llama-bench: benchmark 模型在各种 backend,parameter 等时的推理性能
ggml
llama.cpp 仓库属于 ggml org,GGML(Tensor library for machine learning),是一个轻量级、高效的 C/C++ 机器学习库,专为在资源受限设备上运行大型模型(如语言模型)设计。
llama.cpp 依赖 GGML,使用 GGML 作为核心计算引擎,处理模型推理、量化和优化。GGML 提供底层基础设施(如矩阵乘法、量化算法),llama.cpp 实现模型特定的逻辑(如 LLaMA 的架构)。GGML 是通用库,llama.cpp 是应用。GGML 可用于其他项目,如 whisper.cpp 用于语音模型。llama.cpp 是 GGML 的一个具体实现,专注于语言模型推理。当你阅读 llama.cpp 源码时,几乎肯定会跳转到 GGML 的代码,因为 llama.cpp 深度依赖 GGML 作为其底层计算引擎。
GGML 本身是一个通用框架,独立于特定模型。
GGML 提供底层功能(如 ggml_tensor、ggml_matmul),负责模型的权重加载、量化(如 4-bit Q4_0)和推理计算。llama.cpp 调用 GGML 的函数来执行这些操作,而不是自己实现。
GGML use case
记录一个应用:vscode:add VSCode’s Github Copilot Chat support。在vscode中 使用本地大模型作为 copilot 的引擎。