📌 项目地址:ggml-org/ggml | ⭐ 15,847 颗星 | 🔧 C++
在笔记本上跑大模型,大部分人知道 llama.cpp,但很少人关注它脚下的 ggml。这是个纯 C/C++ 写的张量计算库,MIT 协议,star 数已经奔着两万去了。llama.cpp、whisper.cpp 这些能在消费级硬件上跑推理的项目,底层都是它。
它的约束定得很硬
PyTorch、TensorFlow 要兼顾训练和科研,依赖链动辄几个 GB。ggml 只做推理这一件事,而且给自己划了几条硬线:
零第三方依赖。clone 下来,机器上有 CMake 和编译器就能构建,不需要 Python 环境。
运行时零内存分配。推理要用的内存在启动前一次性分好,跑的过程中不再向系统要内存。好处很实际:服务跑一星期,内存占用不会悄悄往上涨;在嵌入式设备上也不用操心分配器的行为。
量化格式齐全。2 到 8 位整数量化都有,外加 MXFP4 和 NVFP4 两种微缩放格式。模型体积压下来,消费级硬件才装得下。
架构覆盖广。x86、ARM、RISC-V、LoongArch(龙芯)、PowerPC、s390x、WebAssembly 全支持,其中 x86、ARM、RISC-V 还有手写的 SIMD 内核。后端层面 CPU、GPU、NPU、浏览器都能跑。
编译试一下
git clone https://github.com/ggml-org/ggml
cd ggml
mkdir build && cd build
cmake ..
cmake --build . --config Release -j 8
就这么多。没有装环境这一步,也没有依赖要拉。
想看代码怎么写,README 指向 examples/simple,一个带完整注释的矩阵乘法示例。我建议从这个例子入手。它展示的是 ggml 的核心用法:先构建计算图,再执行。这和常见框架“每一步都立即算”的模式不同,读通这个例子,基本就能理解它的 API 设计。
想本地跑模型?别用 ggml
这一点容易踩坑。ggml 是给开发者用的库,不是给用户用的应用。如果你的目标是“在我电脑上跑 Llama”,直接装 llama.cpp 或 whisper.cpp 就行,它们才是成品。
ggml 面向的人是:要写自己的推理后端、要把模型移植到某块特定硬件、要在嵌入式项目里嵌入推理能力。API 层级偏低,你得对张量、计算图、量化有基本概念。
一个容易搞错的事:PR 别提错地方
给 ggml 核心库(包括 CMake 构建系统)改了代码想提交?官方明确说:PR 请提到 llama.cpp 仓库,不要提 ggml。理由是 llama.cpp 社区更活跃,测试更充分,被 review 的概率更高。
这个安排也说明了两个仓库的关系:llama.cpp 是开发主战场,ggml 的变更基本都从那边合入。
延伸阅读
- GGUF 文件格式文档:ggml 生态存模型的标准格式
- Introduction to ggml(Hugging Face 博客)
- GGML tips & tricks(llama.cpp wiki)
如果你的工作是把模型部署到“不理想”的硬件上,手机、开发板、浏览器、老服务器,ggml 的源码值得完整读一遍。它证明了一件事:推理引擎不需要几 GB 的依赖也能做到高性能。MIT 协议,商用没有额外负担。