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プラットフォームを、第一級のサポートで提供します。

使い始め方

  1. インストール(Linux)は軽量な uv パッケージマネージャーで行います:
    uv pip install .
    
    macOSではヘルパースクリプト scripts/install_mac.sh を実行してください。
  2. サーバーの起動:サポートされているチェックポイントに対して、たとえば以下のコマンドで起動できます:
    vllm-jev serve ZefanCai/Open-Jev-2B   # Linux GPU
    # またはMacで
    vllm-jev serve Valen-Team/Valen-Preview-0923
    
    初回実行時にモデルがダウンロードされ、vLLMが http://127.0.0.1:8795 で起動します。
  3. リクエストの送信(選択例):
    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サービスに変換し、テキスト、画像、短い動画をサポートします。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト