- GoogleのGemmaモデル向けの軽量でスタンドアロンなC++推論エンジン
- 誰のためのプロジェクトか?
- 現代の大規模言語モデル(LLM)推論エンジンは、従来のニューラルネットワークランタイムを超えるカスタム機能を持つ複雑なシステムである
- 高水準アルゴリズムと低水準計算の共同設計を通じた研究と革新の機会がある一方、実験向けに設計されていないC++推論ランタイムと、低水準計算を抽象化するPython中心のML研究フレームワークとの間にはギャップが存在する
- gemma.cppはGemma 2Bおよび7Bモデルの最小実装を提供し、汎用性よりもシンプルさと直接性を重視している
- gemma.cppは実験や研究ユースケースを目的としており、最小限の依存関係で他のプロジェクトに容易に統合でき、約2K LoCのコア実装と4K LoCの補助ユーティリティから成り、簡単に修正可能
- CPU推論のためにGoogle Highway Libraryの移植性の高いSIMDを活用
- 本番環境向けのデプロイには、JAX、Keras、PyTorch、TransformersのようなPythonフレームワークを使う標準的なデプロイ経路を推奨
クイックスタート
システム要件
- 開始前に、CMake、Clang C++コンパイラ(C++17以上対応)、Kaggleから取得したアーカイブを展開するための
tar がインストールされている必要がある
ステップ1: Kaggleでモデル重みとトークナイザーを取得
- KaggleのGemmaモデルページを開き、
Model Variations |> Gemma C++ を選択
Variation ドロップダウンには、bfloat16重み(より高い忠実度)と8ビット量子化浮動小数点重み(より高速な推論)のオプションが含まれる
- 一般的には
-sfp チェックポイントから始めることを推奨
ステップ2: ファイルを展開
- 同意書に記入した後、
archive.tar.gz ファイルをダウンロードして展開
- 展開されたファイルには、モデル重み(例:
2b-it-sfp.sbs)とトークナイザーファイル(tokenizer.spm)が含まれる
- これらのファイルは任意の扱いやすいディレクトリ位置へ移動できる(例: このリポジトリの
build/ ディレクトリ)
ステップ3: ビルド
- ビルドシステムはCMakeを使用
- gemma推論ランタイムをビルドするには、ビルドディレクトリを作成し、プロジェクトのトップレベルディレクトリで
cmake を使ってビルドファイルを生成
- 8ビット量子化浮動小数点重み(sfp)の場合は、オプションなしで cmake を実行
- bfloat16重みをダウンロードした場合は、上記のようにオプションなしで cmake を実行する代わりに、WEIGHT_TYPE を highway の
hwy::bfloat16_t 型に設定して cmake を実行
- 適切な
cmake コマンドを実行した後、build/ ディレクトリへ移動し、make を実行して ./gemma 実行ファイルをビルド
ステップ4: 実行
build/ ディレクトリ内で gemma を実行できる
gemma には必須引数があり、例として 2b-it-sfp.sbs 重みファイルと tokenizer.spm トークナイザーファイルを使って実行できる
使い方
gemma はverbosityフラグで制御される複数の使用モードを持つ
- すべての使用モードは現在インタラクティブで、新しい行の入力時にテキスト生成がトリガーされる
対話型ターミナルアプリ
- デフォルトでverbosityは1に設定されており、
gemma が呼び出されるとターミナルベースの対話型インターフェースを提供する
コマンドラインツールとして使用
gemma 実行ファイルをコマンドラインツールとして使うには、gemma.cpp向けの引数を完全指定したエイリアスを作成すると便利な場合がある
プロジェクトにgemma.cppライブラリを含める
- gemma.cppを自分のプロジェクトに含める最も簡単な方法は、
FetchContent を使ってgemma.cppと依存関係を取得すること
- CMakeLists.txtに以下を追加できる
gemma.cppをライブラリとしてビルド
- gemma.cppは自身のプロジェクトでライブラリ依存として使用でき、
libgemma ターゲットをビルドして共有ライブラリアーティファクトを生成できる
謝辞と連絡先
- gemma.cppは2023年秋にAustin HuangとJan Wassenbergによって開始され、Phil Culliton、Paul Chang、Dan Zhengの貢献により2024年2月に公開された
- これはGoogleが公式にサポートする製品ではない
GN⁺の見解:
- gemma.cppは大規模言語モデルの実験や研究に有用なツールであり、C++ベースの軽量推論エンジンを提供することで、既存のPython中心フレームワークとのギャップを埋めることに貢献する
- このプロジェクトはオープンソースコミュニティに貢献できる機会を提供し、Googleのオープンソースガイドラインに従うことの重要性を強調している
- gemma.cppは多様な使用モードを提供し、開発者や研究者が自身のプロジェクトに容易に統合して利用できるよう設計されており、これはAIおよびML分野のイノベーションを促進する可能性を持つ
1件のコメント
Hacker Newsの意見
Austinによる紹介とプロジェクトの説明:
GoogleのLLM競争力に関する意見:
ビルドシステムに関する質問:
Gemmaの性能への称賛:
LLMオープンソースエコシステムの発展速度への感嘆:
モデルフォーマットに関する質問:
LLMの数学能力に関する議論:
Gemmaのコンテンツ制限の有無に関する質問:
gemma.cppへの感謝と今後の機能追加への期待:
Gemmaモデルの実行ファイルサイズに関する質問: