このプロジェクトについて

Janoは、単一GPU上で複数のローカルLLMを実行するユーザー向けに設計された、軽量でOpenAI互換のHTTPルーターです。オーバーヘッドを削減するため、 Greedy Batching を実装しています。リクエストごとにモデルを切り替えるのではなく、現在読み込まれているモデルのすべての保留中リクエストを先に処理し、必要になったときにのみ切り替えを行います。これにより、1バーストあたりのモデル切り替えが複数回からわずか1回に減り、ローカルハードウェア上で30秒から3分ほどの大幅な時間節約につながります。 Janoは、llama-serverやvLLMなどのローカルバックエンドと、DeepSeekなどのリモートAPIの両方をサポートします。リモートプロバイダーに対してはモデル名の変更を自動で行います。また、/health、/status、Prometheusメトリクスエンドポイント経由で組み込みテレメトリーを提供し、キュー深度、切り替え所要時間、トークンThroughput、バックエンドのヘルス状態を追跡します。 設定は環境変数とmodels.jsonファイルによって行われ、ユーザーはモデル名、URL、エイリアス、オプションの切り替えスクリプトを定義できます。切り替えスクリプトの契約はシンプルで、モデル名を受け取ってそのバックエンドを有効化し、 cleanly終了することが求められます。オプションでステータス報告を行うことで初期状態の検出にも役立ちます。 Janoはロジックを簡潔に保つため、バックエンドごとにリクエストを直列化处理します。そのため、マルチテナントサービスではなく、パーソナルまたは小規模なセットアップに適しています。GPU温度やシステムリソースの管理は本ツールのできる範囲外です。 既存のツールの上に乗っかる薄いレイヤーとして設計されたJanoは、モデル切り替えに対する明確なコントロール、任意のOpenAI互換バックエンドとの互換性、ストリーミングやツール呼び出しの透過的なパススルーを提供します。Ollamaを使用している場合や単一モデルのみを利用する場合には不要ですが、カスタムバックエンドを持ち、ルーティングと切り替えの詳細な制御を望むユーザーにとって最適な選択肢です。