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(Single Instruction, Multiple Data)技術,以在不同架構上優化 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
- 專案