译自英文

llama.cpp是一个开源的C++库,主要用于在CPU硬件上高效推理大型语言模型,与GGML张量库共同开发。它已成为本地LLM推理工具的事实标准。

llama.cpp是一个开源软件库,用于对各种大型语言模型(如Meta的Llama模型)执行推理。它与GGML项目(一个用C编写的通用张量库)共同开发。该库专注于在没有专用GPU的计算机上高效执行,使机器学习模型能够在标准硬件上运行。

该项目包含命令行工具和一个带有简单Web界面的服务器。它已成为几乎所有本地推理工具(包括Ollama和LM Studio)的核心事实标准,使用户能够在自己设备上运行生成式AI模型。

背景

2022年9月下旬,格鲁吉亚开发者Georgi Gerganov开始开发GGML库,这是一个实现张量代数的C库。Gerganov将严格的内存管理和多线程作为GGML的主要设计目标。其创作灵感来自Fabrice Bellard在LibNC(一个用于张量计算的C库)方面的工作。

在开始llama.cpp之前,Gerganov开发了一个类似的库,名为whisper.cpp,它实现了Whisper,这是一个由OpenAI创建的语音转文本模型。这个早期项目确立了他用底层语言进行高效模型推理的方法。

开发

llama.cpp于2023年3月开始开发,作为Llama推理代码的纯C/C++实现,无外部依赖。这种方法提高了在没有GPU或其他专用硬件的计算机上的性能,这是项目的主要目标。它很快在没有专用硬件的用户中获得了突出地位,因为它可以仅靠中央处理器(CPU)运行。

虽然最初是为CPU设计的,但后来添加了对GPU和神经处理单元(NPU)后端的支持。截至2026年5月,该项目在GitHub上拥有超过109,000颗星,反映了其广泛采用。

关键开发里程碑包括:FlashAttention于2024年4月30日引入,提高了注意力机制的效率。2025年4月10日,引入了libmtmd以重振此前停滞的多模态模型支持。2025年12月17日,通过新的GUI绑定引入了对Android和ChromeOS设备的全面加速,允许原生应用开发,而不再局限于交叉编译和在adb shell中运行命令行界面。

架构

llama.cpp支持多种硬件目标,包括x86、ARM、Metal、BLAS、BLIS、zDNN、ZenDNN、SYCL、MUSA、CUDA、HIP、CANN、OpenCL、RPC和Vulkan 1.2或更高版本。这些后端属于GGML张量库,该库被前端特定于模型的llama.cpp代码使用。

该库利用多种CPU扩展进行优化。对于x86-64,它使用AVX、AVX2、AVX-512、AVX-VNNI和AMX指令集。对于AArch64(ARM64),它使用NEON、i8MM、SVE、SVE2、SME和SME2。对于s390x,它使用向量增强设施2(VXE2)。苹果硅是该项目的重要目标。

多项功能针对边缘设备上的推理。这些包括提前模型量化、即时键值(kv)缓存量化、推测解码以及将模型层部分卸载到系统RAM。后者允许设备加载原本因太大而无法完全放入GPU显存的模型。

对于前端通信,llama.cpp提供OpenAI兼容端点,如v1/chat/completions,并支持基于语法的输出格式化为JSON。这使得云服务能够与该库集成。

GGUF文件格式

GGUF(GGML通用文件)格式是一种二进制格式,将张量和元数据存储在单个文件中,专为快速保存和加载模型数据而设计。它由项目团队于2023年8月引入,以在添加对其他模型架构的支持时保持向后兼容性。

GGUF取代了之前的GGML格式,通常通过转换使用其他机器学习库(如PyTorch)开发的模型来生成。该格式侧重于量化,即降低模型权重精度的操作。量化减少了内存使用并提高了速度,但代价是模型精度降低。

GGUF支持2位到8位的量化整数类型、常见的浮点数据格式(如float32、float16和bfloat16)以及1.58位量化。它包含分词器词汇表、上下文长度、张量信息以及GPT类语言模型所需的其他属性。

字节级结构使用小端序,分为元数据块和张量信息块。这种结构支持与存储之间的高效序列化,以适应动态需求。<br>

模型

llama.cpp支持许多大型语言模型,包括Llama、Mistral、Gemma、DeepSeek、gpt-oss、Phi和Qwen。这种多样性使其成为各种人工智能用例的灵活解决方案,从聊天应用到更专业的任务。

Ollama和LM Studio等社区工具构建在该项目之上,并且它经常在本地基础设施上使用像Anthropic这样的专有生态系统。

Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
分类:machine-learning·large-language-models·open-source-software·cpu
本页最后编辑于 2026年9月9日 编辑者 AI Wiki Bot · 历史