neural-llama.cpp — Apple NPU / Metal対応のllama.cppフォーク
概要
neural-llama.cppは、軽量なローカル推論エンジンとして知られるllama.cppをベースに、Appleのハードウェアアクセラレーションを利用するために拡張したフォークです。主な目的はMetalシェーダーやApple NPU(Neural Engine)経由の演算実行を可能にして、対応するMacやiPhoneでのモデル推論を高速化・省電力化することにあります。C++の既存コードベースに対してMetalバックエンドや関連するビルド設定を追加し、バイナリやシェーダー、テスト、CI構成など実用的な要素も揃っています。MITライセンスで公開されており、ローカルでの実行や研究開発用途に適しています。
リポジトリの統計情報
- スター数: 2
- フォーク数: 0
- ウォッチャー数: 2
- コミット数: 30
- ファイル数: 55
- メインの言語: C++
主な特徴
- Apple Metalを用いたGPU(およびApple NPU経由)の演算バックエンドを追加
- llama.cppの軽量構造を維持しつつ、オンデバイス推論の高速化を実現
- C++ベースでの統合、clangフォーマットやclang-tidyなどの開発支援ツールを備える
- クロスプラットフォームのフォールバック(CPU実行)を想定した設計
技術的なポイント
本プロジェクトの技術的要点は、既存のggml/llama.cppの計算パスを損なわずにMetalベースの演算カーネルやNeural Engine向け経路を追加している点にあります。具体的には、テンソル演算(行列積や畳み込みに相当する処理)をMetal Shading Language(MSL)で実装し、Metalコマンドキュー上でGPUまたはMPS/MPSGraphを通じて実行することで、macOSやiOS上のハードウェアアクセラレーションを活用します。Apple NPU(Neural Engine)を直接叩くためには通常Core MLやMLCompute経由の変換が必要ですが、本フォークはモデル表現の変換器や、精度を落とした演算(fp16や量子化された整数演算)を用いることでNeural Engineへのマッピングを目指しています。
メモリ管理の観点では、GPU/NE向けにデータ配置(チャンク化、バッファアライメント)を調整し、転送オーバーヘッドを低減する工夫が施されています。ビルド面ではCMakeやXcode設定(またはMakefile)を整備しており、Metalコンパイルやリンクのためのフラグ、プラットフォーム固有のラッパーを用意しています。デバッグや品質維持のために.clang-format/.clang-tidyが含まれ、CIや.devopsディレクトリを通じた自動化も見られます。性能トレードオフとしては、Metalカーネルの最適化コスト、量子化による精度低下、Neural Engineの利用制約(モデルサイズやレイヤー種類)などがあり、実運用ではGPUとCPUの切り替えロジックやバッチ戦略を検討する必要があります。MITライセンスのため派生・組み込みも比較的自由です。
プロジェクトの構成
主要なファイルとディレクトリ:
- .clang-format: file
- .clang-tidy: file
- .devops: dir
- .dockerignore: file
- .ecrc: file
他にもソースディレクトリ(src/やinclude/相当)、Metalシェーダー群、CMakeLists.txtやREADME.md、テスト/サンプル、ビルドスクリプトなどが含まれ、合計で約55ファイルが配置されています。…他 50 ファイル
まとめ
Appleプラットフォームでのローカル推論を強化する実用的なllama.cppフォークです。
リポジトリ情報:
- 名前: neural-llama.cpp
- 説明: A llama.cpp fork that adds support for Apple NPU and Metal.
- スター数: 2
- 言語: C++
- URL: https://github.com/LynnColeArt/neural-llama.cpp
- オーナー: LynnColeArt
- アバター: https://avatars.githubusercontent.com/u/131792457?v=4
READMEの抜粋:
llama.cpp
