介绍 llama.cpp
本节主要介绍什么是 llama.cpp,以及 llama.cpp、llama、ollama 的区别。同时说明一下 GGUF 这种模型文件格式。
什么是 llama.cpp
llama.cpp 是一个由 Georgi Gerganov 开发的高性能 C++ 库,主要目标是在各种硬件上(本地和云端)以最少的设置和最先进的性能实现大型语言模型推理。
主要特点:
- 纯 C/C++ 实现,没有任何依赖
- 对 Apple Silicon(如 M1/M2/M3 芯片)提供一流支持 - 通过 ARM NEON、Accelerate 和 Metal 框架优化
- 支持 x86 架构的 AVX、AVX2、AVX512 和 AMX 指令集
- 支持 1.5 位、2 位、3 位、4 位、5 位、6 位和 8 位整数量化,实现更快的推理和更低的内存使用
- 为 NVIDIA GPU 提供自定义 CUDA 内核(通过 HIP 支持 AMD GPU,通过 MUSA 支持摩尔线程 MTT GPU)
- 支持 Vulkan 和 SYCL 后端
- CPU+GPU 混合推理,可部分加速大于总 VRAM 容量的模型
llama、llama.cpp、ollama 的区别
是不是经常听到 llama、llama.cpp、ollama 这三个名字,看起来都包括 llama,但实际上它们是不同的概念:
- LLaMA:
- LLaMA(Large Language Model Meta AI)是由 Meta(Facebook)开发的大型语言模型系列
- 它是一组开源的基础语言模型,包括不同参数规模的版本(如 LLaMA、LLaMA 2、LLaMA 3 等)
- LLaMA 是模型本身,即训练好的神经网络权重和架构文件,有不同大小的模型,如 3B、7B、13B、65B、70B、130B 等
- llama.cpp:
- llama.cpp 是一个 C++ 库,用于在 CPU 上高效运行 LLaMA 模型
- 它是由 Georgi Gerganov 开发的,专注于优化 LLaMA 模型在消费级硬件上的推理性能
- 主要特点是内存效率高、支持量化(如 4-bit、5-bit、8-bit 量化)以减少内存需求
- 它是运行模型的推理引擎
- Ollama:
- Ollama 是一个应用程序,让用户能够轻松下载、运行和使用各种大型语言模型
- 它在底层使用 llama.cpp 作为推理引擎
- Ollama 提供了友好的命令行界面和 API,简化了模型的管理和使用
- 它相当于是 llama.cpp 的上层封装,增加了模型管理、会话管理等功能
所以说,LLaMA 是模型本身("大脑"),llama.cpp 是高效运行这些模型的引擎("引擎"),Ollama 是一个用户友好的应用程序,使用 llama.cpp 作为引擎,让普通用户能够轻松使用这些模型("应用")
GGUF
我们常听说一下模型文件格式,GGUF 就是其中一种专为 llama.cpp 设计的二进制格式,取代早期的 GGML。GGUF(GPT-Generated Unified Format)是一种用于存储模型以便使用 GGML 和基于 GGML 的执行器进行推理的文件格式,具有以下优势:
- 高效存储与加载:通过紧凑编码和内存映射技术加速模型载入
- 自包含性:文件内包含模型架构、超参数等完整信息,无需额外依赖
- 可扩展性:支持在不破坏兼容性的情况下新增元数据
下图是一个文件格式介绍:

Mac M1 上安装 llama.cpp 做模型推理
本节介绍如何在 Mac M1 上安装 llama.cpp,并使用模型进行推理。
设备:Mac Book Air (M1 芯片,8G 内存) 系统:macOS 15.0 模型:llama3.2-3B-Instruct
安装
Mac 设备上安装有两种方式,下载源代码编译或者通过 brew 安装。我们直接用 brew 安装。
brew install llama.cpp
下载模型
https://huggingface.co/models?library=gguf&sort=trending
https://huggingface.co/bartowski/Llama-3.2-3B-Instruct-GGUF/blob/main/Llama-3.2-3B-Instruct-Q8_0.gguf
运行推理
llama-cli -m Llama-3.2-3B-Instruct-Q8_0.gguf
运行成功后,可以看到一些推理参数。比如对 Apple 的图形计算 Metal 的支持、对 ARM 上 NEON 优化的支持等。

在命令行直接对话:

M1 芯片的 Mac 上,llama.cpp 的推理速度非常快,基本秒出结果。
Linux 下安装 llama.cpp 并使用模型进行推理
本节介绍如何在 Linux 下安装 llama.cpp,并使用模型进行推理。
设备:Linux 服务器 (阿里云服务器:Intel CPU,2G 内存) 系统:Ubuntu 22.04 模型:llama3.2-3B-Instruct
安装
- 下载编译
git clone https://github.com/ggerganov/llama.cpp.git
- 安装 cmake
sudo apt install cmake
- 编译
cmake -B build
运行推理
- 下载模型文件
同样使用前面下载的模型文件 Llama-3.2-3B-Instruct-Q8_0.gguf。
- 运行推理
../llama.cpp/build/bin/llama-cli -m Llama-3.2-3B-Instruct-Q8_0.gguf

阿里云服务器是 Intel CPU,所以需要使用 CPU 进行推理。配置比较低,所以推理速度比较慢,不可用。服务端的话还是要购买 GPU 服务器或者直接购买 API 服务做推理。
总结
- 由于 llama.cpp 是纯 C/C++ 实现的,能够跨平台部署大模型推理。同时针对不同的硬件做了优化,所以推理速度非常快,尤其是 Apple M1 芯片,完全超出预期。平时用的多的 Ollama 就是基于这个库的封装,对使用模型和应用开发更加友好。如果不做模型量化转换的话,用 Ollama 做本地模型部署就可以了。
- 小模型部署在端侧的部署还是很有意义的,比如在手机上部署一个 llama3.2-3B-Instruct 模型,可以实现非常快的推理速度。未来模型同时在端侧和云端部署,端侧模型推理速度更快,云端模型更强大,可以实现非常多的应用场景。


