AI・機械学習
Show HN: OpenJDK Panama FFM (Java 22) による低遅延ローカルLLMランナー
Show HN: Low-latency local LLM runner via OpenJDK Panama FFM (Java 22) (github.com)
要約
JDK 22のProject Panama(FFM API)を利用して、llama.cppやwhisper.cppなどのネイティブライブラリと直接連携する低遅延のローカルLLMランナー「libargus.cc」が開発されました。ホットパスでのゼロアロケーションやメモリセグメントの効率的な管理により、JVM内からAIを実行する際のパフォーマンスが向上しています。これは、RAG(Retrieval-Augmented Generation)に代わる時空間メモリレイヤー(L-TABB)開発の基盤となるものです。
全文翻訳
JVM内からAIを実行したいと考えました。
最初は標準的なRESTサイドカーから始めましたが、それを破棄し、新しいJDKバージョンでProject Panama(Foreign Function & Memory API)を使用してllama.cppに直接インターフェースするようにしました。
それでもその機能には満足できなかったため、JVMランドスケープに構造化されたAPIを公開するためのクリーンなABIであるlibargus.ccを構築しました。
これは依然としてProject Panamaを使用して、llama.cpp、whisper.cpp、およびggmlコンピュートグラフに直接インターフェースします。
ホットパスではゼロアロケーションを実現しており、プロンプトとトークンのメモリセグメントは、限定されたアリーナ内で一度だけ割り当てられます。
生のポインタは、低レベルのCレベルまで直接渡されます。
これにより、プリミティブ配列のクローニングやヒープの断片化が回避されます。
llama.cppとwhisper.cppのネイティブ構造をマッピングし、コンパイラのパディングに合わせて、安全なメモリアクセスを維持しました。
デプロイを容易にするために、JARファイルにプリコンパイルされたネイティブバイナリをバンドルしています。
この実行エンジンは、RAGを置き換えるための時空間メモリレイヤー(L-TABB)に関する私の作業に必要な基盤を提供します。
継続して次のレイヤーに取り組んでいる間、問題を解消するために技術的なフィードバックをいただけると幸いです。
モダンJDKでProject Panamaや低遅延システムをハッキングしている方からの深い洞察を非常に歓迎します。
文章よりもコードの方が得意なので、コードに多くを語らせます。
ハッピーハッキング!
/David
コード: https://libargus.cc
プロジェクトランディングページ: https://projectargus.cc