HN 日本語サマリー

← 一覧へ戻る
プログラミング

Show HN: Janus – Vulkan経由でAMD/Intel/Nvidia上でGGUFモデルを実行するGoバイナリ

Show HN: Janus – Go binary that runs GGUF models via Vulkan on AMD/Intel/Nvidia (github.com)

98 pointsby Maverick61718 コメント

要約

Janusは、PythonやDocker、Ollamaを必要としない、単一のGoバイナリでローカルLLMサーバーとOpenAI互換APIを提供するツールです。Vulkan(AMD/Intel/Nvidia GPU)またはCPUフォールバックを使用してGGUFモデルを実行し、モデルのホットスワップやチャットテンプレートの自動検出などの機能を提供します。Windows、Linux、macOSに対応しており、ローカルでのAIモデル実行を簡素化します。

全文翻訳

Janus — ローカルLLMサーバー & OpenAI互換API Janusは、ローカルマシン上で.ggufモデルを実行し、OpenAI互換APIを提供する単一のGoバイナリです。Python、Docker、Ollamaは不要です。コマンドライン(curl、PowerShell、スクリプト)から呼び出すか、Cursor / Cline / その他のOpenAIクライアントに組み込むか、ワークフローに合わせて自由に利用できます。 提供される機能 ローカル推論 — Vulkan(AMD / Intel / NVIDIA)またはCPUフォールバックによるllama.cpp OpenAI互換API — /v1/chat/completions, /v1/models モデルのホットスワップ — 再起動せずに.ggufファイルを変更可能 思考モデルサポート — <think>による推論をreasoning_contentに分割 チャットテンプレート自動検出 — GGUFメタデータからテンプレートを使用 依存関係ゼロ — Windowsでは単一の.exe、PythonやDocker不要 要件 プラットフォーム 必要なもの Windows (主) Windows 10/11, Go 1.22+, Vulkan対応GPU推奨 Linux Go 1.22+, VulkanまたはCPU macOS Go 1.22+, CPUバックエンド(Vulkanはハードウェアによる) ディスク: モデルサイズ(モデルあたり通常2〜8 GB)とJanus + llama.dll用約50 MBを考慮 クイックスタート (Windows) 1. クローンとビルド git clone https://github.com/Vibra-Ingenn/Janus.git cd Janus .\build.ps1 build.ps1は、プリビルドされたllama.cpp Vulkan DLLをダウンロードし、dist\janus.exeをコンパイルします。 2. モデルのダウンロード .ggufファイルをmodels\フォルダに配置します。 付属のダウンローダーを使用: go build -o dist\modelget.exe .\cmd\modelget .\dist\modelget.exe -repo meta-llama/Llama-3.2-3B-Instruct -file Llama-3.2-3B-Instruct-Q8_0.gguf -out .\models\ またはHugging Faceから任意のGGUFをダウンロードします。 3. 設定 .env.exampleを.envにコピーします。 .envを編集します: INFERENCE_BACKEND=vulkan JANUS_MODEL_PATH=./models/Llama-3.2-3B-Instruct-Q8_0.gguf JANUS_MAX_TOKENS=4096 変数 デフォルト 意味 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 返信あたりの最大トークン数 JANUS_LISTEN_ADDR 127.0.0.1:8990 バインドアドレス 4. 実行 .\dist\janus.exe ブラウザで http://127.0.0.1:8990 を開きます。 5. 確認 curl http://127.0.0.1:8990/health クイックスタート (Linux / macOS) git clone https://github.com/Vibra-Ingenn/Janus.git cd Janus go mod tidy go build -o dist/janus ./cmd/janus cp .env.example .env # .envを編集 — Vulkan非対応の場合はJANUS_MODEL_PATHとINFERENCE_BACKEND=cpuを設定 ./dist/janus Linuxでは、バイナリの隣にlibllama.soを配置するか、LD_LIBRARY_PATHに含める必要があります。 OpenAI互換API curl http://127.0.0.1:8990/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "local", "messages": [{"role": "user", "content": "Hello!"}] }' ベースURL: http://127.0.0.1:8990/v1 エンドポイント メソッド パス 説明 GET /health Livenessチェック(?deep=trueで詳細表示) GET /v1/models モデルリスト POST /v1/chat/completions チャット(ストリーミング対応) POST /models/load モデルのホットスワップ GET /models/list 利用可能な.ggufファイルリスト GET /engine/status VRAMとバックエンド情報 ストリーミング curl http://127.0.0.1:8990/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"model":"local","stream":true,"messages":[{"role":"user","content":"Tell me a joke"}]}' Cursor / Cline / その他のクライアントへの接続 ベースURL: http://127.0.0.1:8990/v1 APIキー: (空欄) 注意点(苦労して学んだこと) 問題 何が起こっているか 修正方法 「ビルドはできたが変更が反映されない」 Windowsでは、Goは実行中の.exeを上書きできません。タスクマネージャーで全てのjanus.exeを停止してから再ビルドしてください。 「Address already in use」 残存プロセスがポート8990を占有しています。タスクマネージャーで全てのjanus.exeを終了してください。 サーバーは起動するがチャットが失敗する JANUS_MODEL_PATHが間違っているか、models/に.ggufファイルがない。.envでパスを設定し、ファイルをmodels/に配置してください。 「local engine failed to start」 llama.dllが見つからないか、GPUドライバの問題です。 .uild.ps1を実行してください。GPUドライバを更新するか、INFERENCE_BACKEND=cpuに設定してください。 URLが間違っている デフォルトは http://127.0.0.1:8990 で、8080ではありません。8990をブックマークしてください。 最初の応答が遅すぎる モデルがVRAMにロードされています — 通常のことです。10〜60秒待ってください。より小さいクォンタイゼーション(Q4)はより速くロードされます。 プロジェクト構成 cmd/janus/ メインサーバー(OpenAI互換API) cmd/modelget/ Hugging Faceモデルダウンローダー internal/engine/ llama.cpp Vulkan/CPUバックエンド internal/bridge/ DLLローダーとFFIバインディング internal/singleton/ シングルトンガード models/ .ggufファイルを配置(コミットしない) dist/ ビルド後のjanus.exe + llama.dll 開発 Get-Process -Name "janus" -ErrorAction SilentlyContinue | Stop-Process -Force go test ./... go build -o dist\janus.exe .\cmd\janus .\dist\janus.exe または単に .\run.ps1。 llama DLLを含む完全なビルドには、.\build.ps1を使用してください。 コントリビューション歓迎 — CONTRIBUTING.mdを参照してください。 ライセンス MIT — LICENSEを参照してください。