google/gemma.cpp
lightweight, standalone C++ inference engine for Google's Gemma models.
何を解決するか
gemma.cpp は、GoogleのGemmaファウンデーションモデル向けに設計された軽量でスタンドアロンのC++推論エンジンです。複雑なデプロイ向けC++ランタイムと高レベルのPython研究フレームワークの間のギャップを埋め、変更・他のプロジェクトへの埋め込みが容易なミニマルな実装を提供します。
動作方法
このエンジンは、Gemma 2、Gemma 3、およびPaliGemma 2モデルのCPU専用推論を実行するため、約2,000行のコードで構成される小さなコア実装を使用しています。異なるアーキテクチャ間でCPUパフォーマンスを最適化するために、Google HighwayライブラリによるポータブルSIMD(Single Instruction, Multiple Data)を活用しています。
主な技術的特徴:
- 混合精度GEMM:fp8、bf16、fp32、fp64をサポートし、マトリクス形状に応じた自動ランタイムオートチューニングを実装。
- 重み圧縮:独自のfp8フォーマットと非均一4ビット(NUQ)圧縮を統合し、メモリ帯域幅とキャッシュ使用量を削減。
- インフラストラクチャ:マルチソケットスレッドプールを用いたテンソル並列処理を実装し、メモリマップドディスクI/Oをサポート。
- フロントエンド:ストリーミング対応のC++ API、基本的なインタラクティブCLI、およびpybind11を介したPythonバインディングを提供。
対象ユーザー
本エンジンは、生産環境向けのデプロイではなく、実験や研究用途に必要なシンプルで変更可能な推論エンジンを必要とする研究者や開発者を主なターゲットとしています。
特徴
- ミニマルデザイン:監査や実験に適した小さなコードベース。
- 広範なモデル対応:テキストベースのGemma 2-3およびPaliGemma 2の視覚言語モデルをサポート。
- CPU最適化:GPUを必要とせず、Highway SIMDを用いて高性能なCPU推論を実現。
- 柔軟な統合:CMake
FetchContentを介してライブラリとして組み込むか、共有ライブラリとしてビルド可能。 - 研究用ツール:Gemma研究用にバックワードパス(VJP)とAdamオプティマイザを含む。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- Dispatch
- プロジェクト