谷歌开发的轻量级、独立的 C++ 推理引擎,用于运行 Gemma 大语言模型

Apache-2.0C++gemma.cppgoogle 6.6k Last Updated: September 04, 2025

Gemma.cpp 项目详细介绍

项目概述

Gemma.cpp 是由谷歌开发的轻量级、独立的 C++ 推理引擎,专门用于运行 Google 的 Gemma 大语言模型。该项目于 2023 年秋季启动,由 Austin Huang 和 Jan Wassenberg 发起,并于 2024 年 2 月正式发布。

核心特性

1. 轻量级设计

  • 最小依赖: 设计为易于嵌入到其他项目中,具有最少的外部依赖
  • 紧凑代码: 核心实现仅约 2K 行代码,支持工具约 4K 行代码
  • 简洁架构: 专注于简单性和可修改性

2. 高效推理

  • CPU 优化: 针对 CPU 推理进行了专门优化
  • SIMD 支持: 通过 Google Highway 库使用便携式 SIMD 指令
  • 低延迟: 专注于优化性能和低延迟推理

3. 多平台支持

  • 跨平台: 支持 CPU 和 GPU 推理
  • 多精度: 支持从 32 位全精度到 4 位低精度的多种精度级别
  • 灵活部署: 可在各种硬件配置上运行

技术架构

推理引擎设计

Gemma.cpp 采用独立的 C++ 实现,避免了复杂的依赖关系。其设计理念是:

  • 专注于实验和研究用例
  • 探索 CPU 推理的设计空间
  • 研究推理算法的优化

量化支持

项目支持多种量化技术:

  • QAT 模型: 支持量化感知训练(Quantization Aware Training)模型
  • GGUF 格式: 兼容 GGUF 格式的量化模型
  • 多精度级别: 从 4-bit 到 32-bit 的不同精度选择

支持的模型

Gemma 模型系列

  • Gemma 3: 最新的 Gemma 3 系列模型
  • Gemma 3n: 专为移动设备优化的架构
  • 多参数规模: 支持不同参数量的模型变体

模型功能

  • 多语言支持: 支持超过 140 种语言
  • 长上下文: 支持 128k token 的上下文窗口
  • 函数调用: 支持复杂任务的函数调用功能
  • 多模态: 支持文本和视觉推理能力

使用场景

1. 研究与实验

  • 大语言模型推理算法研究
  • CPU 推理性能优化实验
  • 模型量化技术探索

2. 嵌入式应用

  • 移动设备上的 AI 推理
  • 边缘计算场景
  • 资源受限环境的 AI 应用

3. 生产部署

  • 高性能推理服务
  • 实时 AI 应用
  • 低延迟推理需求

安装与使用

环境要求

  • C++ 编译器支持
  • CMake 构建系统
  • 适当的硬件配置(CPU/GPU)

基本使用流程

  1. 克隆项目仓库
  2. 构建推理引擎
  3. 下载模型权重
  4. 运行推理任务

代码示例

// 基本的推理代码结构
#include "gemma.h"

int main() {
    // 初始化模型
    // 加载权重
    // 运行推理
    return 0;
}

性能优势

1. 高效内存使用

  • 优化的内存管理
  • 支持不同精度级别以平衡性能和内存使用
  • 适合单 GPU 或 TPU 应用

2. 快速推理速度

  • 专门优化的 CPU 推理路径
  • SIMD 指令加速
  • 低延迟响应

3. 灵活的部署选项

  • 可在消费级 GPU 上运行
  • 支持云端和边缘部署
  • 易于集成到现有系统

生态系统集成

兼容性

  • llama.cpp: 支持 GGUF 格式,可与 llama.cpp 生态系统集成
  • Kaggle: 模型权重在 Kaggle 上可用
  • 开发者工具: 提供完整的开发者工具支持

社区支持

  • 活跃的开源社区
  • 持续的更新和改进
  • 丰富的文档和教程

安全特性

ShieldGemma 2

项目还包含 ShieldGemma 2,一个基于 Gemma 3 的 4B 参数图像安全检查器:

  • 危险内容检测
  • 性暴力内容识别
  • 暴力内容过滤
  • 可定制的安全策略

总结

Gemma.cpp 是一个专业的、高效的 C++ 推理引擎,为开发者提供了在各种环境中运行 Gemma 大语言模型的能力。其轻量级设计、高性能特性和易于集成的特点,使其成为 AI 推理应用的理想选择。无论是研究实验还是生产部署,Gemma.cpp 都能提供可靠的解决方案。

Star History Chart