google/gemma.cpp

lightweight, standalone C++ inference engine for Google's Gemma models.

解决的问题

gemma.cpp 是一个为 Google 的 Gemma 基础模型设计的轻量级、独立的 C++ 推理引擎。它弥合了复杂、面向部署的 C++ 运行时与高级 Python 研究框架之间的差距,提供了一个极简的实现,易于修改并可嵌入到其他项目中。

工作原理

该引擎使用一个小型核心实现(约 2,000 行代码)来执行 Gemma 2、Gemma 3 和 PaliGemma 2 模型的纯 CPU 推理。它利用 Google Highway 库实现可移植的 SIMD(单指令多数据)技术,以在不同架构上优化 CPU 性能。

关键技术特性包括:

  • 混合精度 GEMM:支持 fp8、bf16、fp32 和 fp64,具备针对矩阵形状的自动运行时调优功能。
  • 权重压缩:集成自定义的 fp8 格式和非均匀 4 位(NUQ)压缩,以减少内存带宽和缓存使用。
  • 基础设施:实现张量并行,采用多插槽线程池,并支持内存映射磁盘 I/O。
  • 前端接口:提供支持流式传输的 C++ API、基础交互式 CLI,以及通过 pybind11 实现的 Python 绑定。

适用人群

主要面向需要简单、可修改的推理引擎用于实验和研究用途的研究人员和开发者,而非生产环境边缘部署。

亮点

  • 极简设计:代码量小,便于审计和实验。
  • 广泛模型支持:支持基于文本的 Gemma 2-3 以及 PaliGemma 2 视觉-语言模型。
  • CPU 优化:使用 Highway SIMD 实现高性能 CPU 推理,无需 GPU 支持。
  • 灵活集成:可通过 CMake FetchContent 作为库集成,或构建为共享库使用。
  • 研究工具:包含用于 Gemma 研究的反向传播(VJP)和 Adam 优化器。

相关

  • 项目
  • 项目
  • 项目
  • Dispatch
  • 项目