llama.cpp 系列之三:目录组织

现代软件工程中,目录结构从来不仅限于文件的分类和组织,而是系统架构的物理映射。 llama.cpp 相对完整的目录结构如下图: ├── app │ ├── CMakeLists.txt │ ├── download.cpp │ └── llama.cpp ├── benches ├── cmake │ ├── arm64-apple-clang.cmake │ ├── arm64-linux-clang.cmake │ │ ...... │ └── x64-windows-llvm.cmake ├── CMakeLists.txt ├── CMakePresets.json ├── CODEOWNERS ├── common │ ├── arg.cpp │ ├── arg.h │ ├── base64.hpp │ ├── build-info.cpp │ ├── build-info.cpp.in │ ├── build-info.h │ │ ...... │ ├── speculative.cpp │ ├── speculative.h │ ├── unicode.cpp │ └── unicode.h ├── conversion │ ├── __init__.py │ │ ...... │ └── youtuvl.py ├── convert_hf_to_gguf_update.py ├── convert_hf_to_gguf.py ├── convert_llama_ggml_to_gguf.py ├── convert_lora_to_gguf.py ├── docs ├── examples │ ├── batched │ ├── batched.swift │ │ ...... │ ├── sycl │ ├── training │ └── ts-type-to-grammar.sh ├── flake.nix ├── ggml │ ├── cmake │ ├── CMakeLists.txt │ ├── include │ └── src ├── gguf-py ├── grammars ├── include │ ├── llama-cpp.h │ └── llama.h ├── Makefile ├── media ├── models │ ├── ggml-vocab-aquila.gguf │ ├── ggml-vocab-baichuan.gguf │ │ ...... │ ├── ggml-vocab-viking.gguf.inp │ ├── ggml-vocab-viking.gguf.out │ ├── templates │ └── tokenizers ├── mypy.ini ├── pocs │ ├── CMakeLists.txt │ └── vdot ├── pyproject.toml ├── pyrightconfig.json ├── README.md ├── requirements ├── requirements.txt ├── scripts │ ├── apple │ ├── bench-models.sh │ ├── build-info.sh │ │ ...... │ ├── tool_bench.sh │ ├── ui-assets.cmake │ ├── verify-checksum-models.py │ └── wc2wt.sh ├── SECURITY.md ├── skills │ ├── add-new-model │ └── code-review ├── src │ ├── CMakeLists.txt │ ├── ggml.c │ ├── llama-adapter.cpp │ ├── llama-adapter.h │ ├── llama-arch.cpp │ ├── llama-arch.h │ ├── llama-batch.cpp │ ├── llama-batch.h │ ├── llama-chat.cpp │ ├── llama-chat.h │ ├── llama-context.cpp │ ├── llama-context.h │ ├── llama-cparams.cpp │ ├── llama-cparams.h │ ├── llama-ext.h │ ├── llama-grammar.cpp │ ├── llama-grammar.h │ ├── llama-graph.cpp │ ├── llama-graph.h │ ├── llama-hparams.cpp │ ├── llama-hparams.h │ ├── llama-impl.cpp │ ├── llama-impl.h │ ├── llama-io.cpp │ ├── llama-io.h │ ├── llama-kv-cache-dsa.cpp │ ├── llama-kv-cache-dsa.h │ ├── llama-kv-cache-dsv4.cpp │ ├── llama-kv-cache-dsv4.h │ ├── llama-kv-cache-iswa.cpp │ ├── llama-kv-cache-iswa.h │ ├── llama-kv-cache.cpp │ ├── llama-kv-cache.h │ ├── llama-kv-cells.h │ ├── llama-memory-hybrid-iswa.cpp │ ├── llama-memory-hybrid-iswa.h │ ├── llama-memory-hybrid.cpp │ ├── llama-memory-hybrid.h │ ├── llama-memory-recurrent.cpp │ ├── llama-memory-recurrent.h │ ├── llama-memory.cpp │ ├── llama-memory.h │ ├── llama-mmap.cpp │ ├── llama-mmap.h │ ├── llama-model-loader.cpp │ ├── llama-model-loader.h │ ├── llama-model-saver.cpp │ ├── llama-model-saver.h │ ├── llama-model.cpp │ ├── llama-model.h │ ├── llama-quant.cpp │ ├── llama-quant.h │ ├── llama-sampler.cpp │ ├── llama-sampler.h │ ├── llama-vocab.cpp │ ├── llama-vocab.h │ ├── llama.cpp │ ├── models │ ├── unicode-data.cpp │ ├── unicode-data.h │ ├── unicode.cpp │ └── unicode.h ├── Testing │ └── Temporary ├── tests ├── tools │ ├── batched-bench │ ├── cli │ ├── CMakeLists.txt │ ├── completion │ ├── cvector-generator │ ├── export-lora │ ├── fit-params │ ├── gguf-split │ ├── imatrix │ ├── llama-bench │ ├── mtmd │ ├── parser │ ├── perplexity │ ├── quantize │ ├── results │ ├── rpc │ ├── server │ ├── tokenize │ ├── tts │ └── ui ├── ty.toml └── vendor ├── cpp-httplib ├── miniaudio ├── nlohmann ├── sheredom └── stb llama.cpp 的目录结构高度吻合其高性能 C/C++ 推理框架的定位,展现了克制、务实且高度模块化的架构设计。它没有盲目追求理论上的完美架构,而是针对 C/C++ 语言的特性、硬件加速的复杂性以及大模型推理的业务场景,做出了适度的权衡。 ...

July 24, 2026 · mayulu

llama.cpp 系列之二:架构

本文按逻辑分层结构的方法分析 llama.cpp。 重点是把 API / Runtime / Kernel / Backend / Model Loader / Tool 这些模块分开,注意不要把目录名、可执行文件、库、设备代码混在一起。分析以模块为主,目录只作参考。 ...

July 23, 2026 · mayulu

llama.cpp 系列之一:目标

分析 llama.cpp 如此规模和复杂度的大型开源项目,当然可以直接 git clone 下来,然后一头扎进 src/ 目录,从 main.cpp 开始逐行读。 但这不是最好的姿势。你会看到几百个文件、几十个后端实现、一堆 SIMD 内联汇编、一套自研的张量计算图,然后陷入深深的困惑: ...

July 23, 2026 · mayulu