Gemma.cpp:用于 Gemma 模型的轻量级、独立 C++ 推理引擎
Google 发布 Gemma.cpp——一个用于其 Gemma 语言模型的轻量级 C++ 推理引擎——引发了人们将其与成熟的社区项目如 llama.cpp 进行比较,并对性能、可移植性和长期可行性提出疑问。评论者强调,尽管引擎本身很小,但实际部署仍主要受多 GB 的模型权重所主导;仅靠 CPU 的推理虽然可用,但速度并不算突出,而且一些人认为其质量落后于 Mistral 等竞品。许多人认可 Gemma 的开放权重、多种工具链入口(GGUF、Kaggle、HF)以及较强的 CPU 优化,但也在争论这种更小、量化更重的模型是否真的能在小众的本地和嵌入式场景之外具备竞争力。
模型大小、二进制文件与部署
- 可执行文件大小(例如 gemma.cpp、llamafile)与模型权重相比非常小。一个例子是:约 30MB 的二进制文件,而 Gemma 2B 量化后约为 1.3–1.7GB。
- 原始 FP16 7B 权重约为 17GB;量化可以把小模型压到约 1–2GB 以下,但“可用”质量通常至少需要 q4 级别的量化。
- 任何独立 CLI 应用都应预期主要受模型大小而非代码本身所主导。
用例与模型质量
- 有人认为 Gemma 2B 就其体积而言“非常出色”,并且在托管服务上速度很快。
- 也有人觉得 Gemma 7B 与 Mistral 7B 等替代品相比并不令人印象深刻,并声称在一个确定性的是否题任务中其错误率大约高出一倍。
- 有报告称小模型在幻觉指标上表现不错,但总体共识并不一致:对于嵌入式 / 本地实验还可以,但并非最先进。
性能与硬件
- gemma.cpp 以 CPU-SIMD 为中心;主要目标是可移植性和可折腾性,而不是生产部署。
- 报告的 CPU 吞吐量:
- 在 Ryzen 7 上,7B-Instruct 约为 2 tokens/s。
- 在一颗 5 年前的 16 线程 Skylake Gold CPU 上,7B IT 约为 5.3 tokens/s,使用约 4.5 位量化时速度提升约 1.4×。
- 目前尚不支持 GPU/Metal,但已有需求;如果要使用 GPU,推荐走 llama.cpp + GGUF 路线。
与 llama.cpp、GGUF 和格式的关系
- gemma.cpp 是独立的,但受 llama.cpp 启发;Gemma 模型也可在 llama.cpp 中运行,并可通过 Ollama 和 llamafile 等工具使用。
- GGUF 被描述为一种演进后的 GGML 格式,包含模型元数据和提示模板;主要用于推理和量化。
- .sbs 与 GGUF 输出之间的差异被归因于量化以及细微的实现差别;修复这些问题仍在进行中。
审查、越狱与变体
- Gemma 包含更受限制的变体和“PT”(过滤较少)变体。
- 有些评论者表示,Gemma 模型相对较难被越狱。
Google 的策略与风险
- 有些人担心长期依赖 Google,但也有人指出 Gemma 权重可以下载,因此弃用主要影响未来更新。
- 讨论还涉及 Google 组织执行力与强大技术能力之间的关系,以及 Llama、Gemma 等开放发布对更广泛生态系统可能产生的影响。