mode-io/vllm-jev
Native vLLM serving for Jev decision models
vLLM Jev とは何か?
vLLM Jev は、Jevスタイルの意思決定モデル(Choice、Yes/No、Score)を、高性能な vLLM 推論エンジン経由で配信できる軽量ラッパーです。主に以下の2つのプラットフォームで動作します:
- NVIDIA GPUを搭載したLinuxマシン(ネイティブvLLMを使用)。
- Apple Silicon Mac(MLXまたはPyTorch MPSを使用)。
このツールはHugging Faceのチェックポイントをダウンロードし、vLLMでコンパイルして、シンプルなHTTP API(/v1/systemone)を公開します。質問と候補回答のリストを送信すると、サーバーは最も可能性の高いラベルと各オプションの確率を返します。
なぜ重要なのか
- 高速性:ベンチマークでは、元のPyTorchリファレンスと比較して4〜43倍のレイテンシ削減が確認され、特に多数の同時リクエストを処理する場合に顕著です。
- 構造化出力:自由形式のテキストではなく、離散的な意思決定(選択、Yes/No、順序付きスコア)を生成するため、下流システムでの処理が容易です。
- マルチモーダル対応:一部のモデル(例:Valen、Clef、RSI‑Jev)はテキストに加えて画像や短い動画も受け付けます。
- クロスプラットフォーム:従来、高速LLM配信が難しいとされていたApple Siliconプラットフォームを、第一級のサポートで提供します。
使い始め方
- インストール(Linux)は軽量な
uvパッケージマネージャーで行います:
macOSではヘルパースクリプトuv pip install .scripts/install_mac.shを実行してください。 - サーバーの起動:サポートされているチェックポイントに対して、たとえば以下のコマンドで起動できます:
初回実行時にモデルがダウンロードされ、vLLMがvllm-jev serve ZefanCai/Open-Jev-2B # Linux GPU # またはMacで vllm-jev serve Valen-Team/Valen-Preview-0923http://127.0.0.1:8795で起動します。 - リクエストの送信(選択例):
応答にはcurl -sS http://127.0.0.1:8795/v1/systemone \ -H 'Content-Type: application/json' \ -d '{"state":"I was charged twice and want a refund.", "questions":{"intent":{"type":"choice", "instructions":"Choose the customer intent.", "criteria":{"billing":"A payment or refund issue", "technical":"A malfunction or setup issue", "other":"Another request"}}}}'answers.intent.choiceと各オプションの確率が含まれます。
どのモデルを実行できますか?
| モデル | 入力形式 | プラットフォーム |
|---|---|---|
| Open‑Jev‑2B / 9B | テキスト | Linux(GPU) |
| Layaファミリー | テキスト | Linux、Mac |
| Valen‑Preview‑0923 | テキスト、画像、短い動画 | Linux、Mac |
| vjev‑vision / vjev‑vision‑pilot | テキスト、画像 | Linux |
| RSI‑Jev(v3.0、v4.0‑VL) | テキスト、画像 | Linux |
| Clef‑Flash(9B) / Clef(27B) | テキスト、画像、動画 | Linux |
| Tiny‑Jev、OpenJev‑0.6Bなど | テキスト | Linux、Mac |
これらのすべては同じ vllm-jev serve <model-id> コマンドで起動できます。READMEに正確なHugging Face IDが記載されています。
主な機能とオプション
- バッチ処理 & KVキャッシュ – vLLMが自動的にリクエストをバッチ処理し、後続トークンの高速化のためにKVキャッシュを再利用します。
- CUDA BF16精度モード –
VLLM_JEV_BF16_MATMUL=no_splitkを設定すると、バッチ依存の丸め誤差を軽減できます。 - オンラインプレフィックスキャッシュ(実験的) – Linux上のOpen‑Jev‑2Bで繰り返しのプロンプトをキャッシュします。
- Apple‑Silicon最適化 – アダプティブバッチ処理、プレフィックス再利用、メモリ制限キャッシュ、多言語Laya向けのオプションCUDAグラフスタイル読み込み。
- 標準vLLMフラグ –
vllm serveの任意のオプション(GPUメモリ使用率、ポート、ストレージパスなど)を渡せます。
パフォーマンスのハイライト(READMEより)
| プラットフォーム | モデル | 入力 | 同時接続数 | レイテンシ ↓ | スループット ↑ |
|---|---|---|---|---|---|
| Linux + A800 | Open‑Jev‑2B | 短いテキスト | 8 | 4360 ms → 100 ms | 1.83 → 78.8 req/s |
| Linux + A800 | Laya English | MMLUサンプル | 16 | 404 ms → 77 ms | 39.5 → 203 req/s |
| Mac M5(MLX) | Valen‑Preview | 画像 | 1 | 231.9 ms → 77.3 ms | 4.3 → 12.9 req/s |
これらの数値は、vLLM Jev経由で配信するだけで劇的な高速化が得られることを示しています。
詳細情報の入手先
- 完全なユーザーガイド:
docs/guide.md(インストール、配信オプション、リクエストフォーマット、動画入力など) - モデル固有の詳細:READMEの Supported Models、Additional decision models、RSI‑Jev、Clef セクション。
- 問題と議論はGitHubリポジトリで管理され、コミュニティによるサポートが可能です。
TL;DR:vLLM Jev は、意思決定志向のLLMチェックポイントの家族を、NVIDIA GPU搭載LinuxマシンとApple Silicon Macで動作する高速でバッチ処理可能なHTTPサービスに変換し、テキスト、画像、短い動画をサポートします。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト