Java 22のProject Panamaで実現!低遅延なローカルLLM実行エンジン「libargus」
Show HN: Low-latency local LLM runner via OpenJDK Panama FFM (Java 22)
Show HN: Low-latency local LLM runner via OpenJDK Panama FFM (Java 22)
JVM内部から直接AIを動かしたいと考え、最初は標準的なRESTサイドカー構成を試しましたが、最終的にJDK 22のProject Panama(Foreign Function & Memory API)を採用し、llama.cppと直接連携させる構成に書き換えました。さらに、JVM環境へ構造化されたクリーンなAPIを提供するために「libargus.cc」を独自開発しました。これにより、llama.cpp、whisper.cpp、およびggml計算グラフとシームレスに連携可能です。パフォーマンス面では、ホットパスにおけるゼロアロケーションを実現しました。プロンプトやトークン用のメモリーセグメントはConfined Arena内で一度だけ確保し、生のポインタを低レイヤーのCへと直接渡すことで、プリミティブ配列のクローンやヒープの肥大化を回避しています。また、コンパイラのパディングに合わせたネイティブ構造体のマッピングを行い、安全なメモリアクセスを保証しました。デプロイを容易にするため、ネイティブバイナリをJARにバンドルしています。このエンジンは、現在開発中のRAGを代替する空間時間記憶レイヤー「L-TABB」の基盤となるものです。現在、さらなる改善に向けて技術的なフィードバックを募集しています。特にProject PanamaやモダンJDKでの低遅延システム開発に詳しい方の知見をぜひ貸してください!詳しい仕様はコードを見ていただければ幸いです。Happy Hacking! /David ■コード: https://libargus.cc ■プロジェクトサイト: https://projectargus.cc
これはかなり凄いな。
従来のやり方でどんなボトルネックにぶつかったのか興味があるよ。LLM推論における計算やデータのシャッフル全般を考えると、生データを入出力する際のやり取りなんて全体のコストからすれば些細な部分で、最適化のターゲットにするほどじゃないと思ってたんだけどね。