介绍 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


