Janus、Vulkan対応のGo製GGUFサーバーをMITで公開

スペック

ライセンスMIT
配布形式・量子化GGUF

メモリの目安はパラメータ数×0.6バイトの概算で、実際はコンテキスト長と実装で変わります

Vibra-Ingennは、llama.cppを介してGGUFモデルをVulkan(AMD/Intel/NVIDIA)またはCPUで推論し、OpenAI互換APIを提供する単一のGoバイナリ「Janus」をMITライセンスで公開しました。Hacker NewsのShow HN投稿は81ポイント・14コメントを集め、GitHubのスター数は73です。

何ができるか

JanusはPython、Docker、Ollamaを必要とせず、Windowsでは.exeひとつで動きます。主な機能は次のとおりです。

  • /v1/chat/completions(ストリーミング対応)と/v1/modelsを含むOpenAI互換API
  • 再起動なしで.ggufを切り替えるモデルのホットスワップ
  • GGUFメタデータからのチャットテンプレート自動検出
  • thinkingモデルの推論部分をreasoning_contentに分離
  • Vulkanが使えない場合のCPUフォールバック

エンドポイントは以下です。

メソッド パス 内容
GET /health 稼働確認(?deep=trueで詳細)
GET /v1/models モデル一覧
POST /v1/chat/completions チャット
POST /models/load モデルのホットスワップ
GET /models/list 利用可能な.gguf一覧
GET /engine/status VRAMとバックエンドの情報

対応環境と要件

プラットフォーム 要件
Windows(主対象) Windows 10/11、Go 1.22以上、Vulkan対応GPU推奨
Linux Go 1.22以上、VulkanまたはCPU
macOS Go 1.22以上、CPUバックエンド(Vulkanはハードウェア次第)

ディスクはモデルごとに2〜8GB程度、加えてJanusとllama.dllで約50MBが必要です。初回応答はVRAMへのモデル読み込みで10〜60秒かかり、Q4など小さい量子化ほど速く読み込めます。

試し方

Windowsではリポジトリをcloneしてcd Janus後、.\build.ps1を実行します。スクリプトは事前ビルド済みのllama.cpp Vulkan DLLをダウンロードし、dist\janus.exeをコンパイルします。モデルはmodels\に置き、同梱のmodelgetで例えばLlama-3.2-3B-Instruct-Q8_0.ggufを取得できます。

.env.exampleを.envにコピーし、主な設定を編集します。

変数 既定値 意味
INFERENCE_BACKEND vulkan vulkan、cpu、openrouter
JANUS_MODEL_PATH (必須) .ggufのパス
JANUS_GPU_LAYERS -1 -1で全レイヤーGPU、0でCPUのみ
JANUS_VRAM_CEILING_MB 9216 VRAM予算ヒント(MiB)
JANUS_MAX_TOKENS 4096 1応答の最大トークン数
JANUS_LISTEN_ADDR 127.0.0.1:8990 待受アドレス

.\dist\janus.exeを起動するとブラウザでhttp://127.0.0.1:8990が開き、curl http://127.0.0.1:8990/healthで稼働を確認できます。

Linux/macOSではgo mod tidy、go build -o dist/janus ./cmd/janusを実行し、.envを設定して./dist/janusを起動します。Linuxではlibllama.soをバイナリの隣かLD_LIBRARY_PATH上に置く必要があります。

CursorやClineなどのOpenAIクライアントからは、ベースURLhttp://127.0.0.1:8990/v1、APIキー空欄で接続できます。READMEは、既定ポートが8080ではなく8990である点や、Windowsでは実行中のjanus.exeを止めないと再ビルドが反映されない点を注意事項に挙げています。

この記事の固有名詞

コメント (0)

まだコメントはありません。

コメントを書く

2000文字以内