mode-io/vllm-jev

Native vLLM serving for Jev decision models

什么是 vLLM Jev?

vLLM Jev 是一个轻量级包装器,可让您通过高性能的 vLLM 推理引擎部署 Jev 风格 的决策模型(选择、是/否、评分)。它在两个主要平台上运行:

  • 搭载 NVIDIA GPU 的 Linux 机器(使用原生 vLLM)。
  • Apple Silicon Mac(使用 MLX 或 PyTorch MPS)。

该工具会下载 Hugging Face 检查点,使用 vLLM 编译,并暴露一个简单的 HTTP API(/v1/systemone)。您发送一个问题及候选答案列表,服务器将返回每个选项最可能的标签及其概率。

为什么重要

  • 速度:基准测试显示,与原始 PyTorch 参考实现相比,延迟降低了 4–43 倍,尤其是在处理大量并发请求时尤为显著。
  • 结构化输出:模型生成的是离散决策(选择、是/否或有序评分),而非自由文本,这使得下游系统更容易消费。
  • 多模态支持:部分模型(如 Valen、Clef、RSI‑Jev)除了文本外,还支持图像和短视频。
  • 跨平台:首次为 Apple Silicon 提供一流支持,而该平台传统上缺乏快速 LLM 服务支持。

如何开始

  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
    
    命令首次使用时会下载模型,然后在 http://127.0.0.1:8795 启动 vLLM。
  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 缓存以加快后续 token 生成。
  • CUDA BF16 精度模式 – 设置 VLLM_JEV_BF16_MATMUL=no_splitk 可减少批处理相关的舍入漂移。
  • 在线前缀缓存(实验性) – 在 Linux 上为 Open‑Jev‑2B 缓存重复提示。
  • Apple-Silicon 优化 – 自适应批处理、前缀重用、内存受限缓存,以及多语言 Laya 的可选 CUDA-Graph 风格读取。
  • 标准 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 服务,支持文本、图像和短视频。

相关

  • 项目
  • 项目
  • 项目
  • 项目