netdur/llama_cpp_dart
dart binding for llama.cpp
何を解決するか
llama_cpp_dart は、llama.cpp 用の高性能な Dart FFI バインディングを提供し、特に iOS および Android の Flutter モバイルアプリケーションに大規模言語モデル(LLM)を直接統合するための最適化が施されています。CMake や Android NDK などのネイティブビルドツールチェーンを手動で管理する複雑さを排除し、Snapdragon Hexagon NPU を含むさまざまなモバイルプラットフォーム向けに事前ビルド済みバイナリを提供しています。
動作方法
このプロジェクトは Dart と C++ の llama.cpp ライブラリの間のブリッジとして機能します。推論を非同期スレッドで実行するためにワーカーイソレートを使用し、トークン生成中にユーザーインターフェース(UI)が応答性を維持できるようにします。Dart Streams を通じたストリーミング出力と、mtmd ライブラリを介したマルチモーダル入力(画像および音声)の処理をサポートしています。制限されたモバイルデバイス上のメモリ管理のため、KVキャッシュの量子化を実装しており、限られたRAM内に長文のコンテキストを収めることが可能になっています。
対象ユーザー
クラウドAPIに依存せずに、モバイルアプリにローカルで実行されるAI機能(チャット、ビジョン、音声処理など)を組み込みたいFlutter開発者。
主な特徴
- モバイル最適化のアクセラレーション:Apple Metal、Android CPU、Snapdragon Hexagon NPU/OpenCL をサポート。
- 非同期推論:UIのブロッキングを防ぐために専用の
LlamaEngineワーカーイソレートを使用。 - マルチモーダル対応:モデル内で画像および音声のビットマップを直接処理可能。
- メモリ最適化:KVキャッシュの量子化(例:
q8_0、iq4_nl)により、長文コンテキストのRAM使用量を削減。 - 状態の永続化:会話履歴とKVキャッシュを1つのメタデータ検証済みファイルに保存・復元可能。
- 高度なLLM機能:推測的デコード、コンテキストシフト(自動シフト)、統合Jinjaチャットテンプレートを含む。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- Dispatch
- プロジェクト