neural-llama.cpp — Apple NPU / Metal対応のllama.cppフォーク

AI/ML

概要

neural-llama.cppは、軽量なローカル推論エンジンとして知られるllama.cppをベースに、Appleのハードウェアアクセラレーションを利用するために拡張したフォークです。主な目的はMetalシェーダーやApple NPU(Neural Engine)経由の演算実行を可能にして、対応するMacやiPhoneでのモデル推論を高速化・省電力化することにあります。C++の既存コードベースに対してMetalバックエンドや関連するビルド設定を追加し、バイナリやシェーダー、テスト、CI構成など実用的な要素も揃っています。MITライセンスで公開されており、ローカルでの実行や研究開発用途に適しています。

GitHub

リポジトリの統計情報

  • スター数: 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フォークです。

リポジトリ情報:

READMEの抜粋:

llama.cpp

llama

License: MIT Release Server