跳到主要内容
版本:最新版(未发布)

选择模型、规模和硬件

从任务出发。下面每个内置模型都固定到确切的 Hugging Face revision,因此同一个名字始终加载相同的文件。

按任务选择​

你想要默认模型Vela 1.0 专用模型说明
按主题路由(数学、法律、代码……)Vela 2.0 0.3Bvllm-sr/Vela-1.0-Encoder-307M-Domain14 个领域
发现需要事实核查的请求Vela 2.0 0.3Bvllm-sr/Vela-1.0-Encoder-307M-FactCheck它标出需要核查,但不核查事实
读取用户对上一个回答的反应Vela 2.0 0.3Bvllm-sr/Vela-1.0-Encoder-307M-Feedback满意、需要澄清、回答错误、想要别的、无反馈
区分文本请求和图片请求Vela 2.0 0.3Bvllm-sr/Vela-1.0-Encoder-307M-Modality只读取书面请求
发现个人信息Vela 2.0 0.3Bvllm-sr/Vela-1.0-Encoder-307M-PII17 种实体类型,给出精确的字符片段
拦截提示词注入和越狱Vela 2.0 0.3Bvllm-sr/Vela-1.0-Encoder-307M-Guard
标记不安全内容Vela 2.0 0.3Bvllm-sr/Vela-1.0-Encoder-307M-Safety 或 -ShieldShield 是另一种安全模型
对照来源检查回答Vela 2.0 0.3Bvllm-sr/Vela-1.0-Encoder-307M-Halu标出回答中无依据的片段
识别风险类别显式绑定vllm-sr/Vela-1.0-Encoder-307M-Hazard12 个独立类别;绑定 hazard deployment 及其发布的 operating point
用于缓存、记忆、RAG 和工具的 embeddingvllm-sr/Vela-1.0-Encoder-307M-Embedding更小的维度和更少的层以质量换速度
更大或带指令的文本 embeddingQwen/Qwen3-Embedding-0.6B0.6B,1,024 维
对检索到的文档重排序vllm-sr/Vela-1.0-Encoder-307M-Reranker
把文本、图片和音频放进同一向量空间vllm-sr/Vela-1.0-Omni-Nano 或 -Mini164M / 1.36B;Mini 更准确,并接受更长的文本
用自然语言提出你自己的问题决策模型(见下一节)0.6B 到 27B

未配置模型时,表中默认为 Vela 2.0 0.3B 的内置信号共用一个部署,在同一路由阶段批量处理兼容的问题(见下文)。 Hazard、embedding、重排序和 Omni 使用各自的模型。Vela 1.0 专用模型仍然内置,写明它们即可恢复。 它们都是 307M 的编码器,在 CPU 上运行良好:在 16 个核上,Vela Domain 请求的中位耗时约 12 ms (测量记录)。 它们大多最多读取 32,768 个 token,0.3B 读取 8,192 个;上限列在每个模型卡片和 GET /v1/models 中。

输入上限不代表延迟保证。完整的长输入 embedding 和扫描在少核 CPU 上可能超过信号截止时间。 请按实际输入长度和并发量测量,再选择足够的专用 CPU 资源或 GPU,并为该流量调整 worker 线程数。

决策模型​

决策模型回答你自己写的问题,例如“这需要逐步推理吗?”或“这些模型中哪个应该回答?”。 选择对你的问题足够准确的最小模型。

模型规模适合运行在适合
vllm-sr/Decision-2.0-Kai-0.6B0.6BCPU(16 核上两个问题约 0.2 秒)或任意 GPU快速、简单的路由问题;入门的默认选择
vllm-sr/Decision-2.0-Eos-0.8B0.8BCPU 或任意 GPU稍难的问题,成本相近
vllm-sr/Decision-2.0-Sol-2B2BGPU;低流量时也可用 CPU需要更多判断的问题
vllm-sr/Decision-2.0-Nox-4B4BGPU细致的问题和较多选项
vllm-sr/Decision-2.0-Lux-9B9BGPU(24 GB 或以上)以适中成本获得最高准确度
vllm-sr/Decision-2.0-Vega-27B27B一块 64 GB 或以上的 GPU整体最准确

Decision 1.0 模型(vllm-sr/Decision-1.0-Kai-0.6B、-Lex-0.6B、-Route-0.6B、-Eos-0.8B、 -Sol-2B、-Nox-4B、-Lux-9B)也已内置,回答同类问题。Vela 2.0(vllm-sr/Vela-2.0-0.3B、 -0.8B、-4B、-9B)支持选择多个标签(set)或标出文本片段(span)的问题,路由器可以基于这两类回答路由。 它的路由片段头(router span head)还能回答 pii 和 hallucination 信号,默认的 0.3B 部署正是这样替代了单独的 PII 和 Halu 模型。 在 CPU 上运行 0.3B。在 GPU 上,较大的几档可读取最多 16,384 个 token 的输入(0.3B 为 8,192):其中 0.8B 成本最低,4B 和 9B 最准确。

vllm-srun models 会列出每个内置模型及其固定的 revision。

内置信号在 Vela 2.0 0.3B 上运行​

domain、prompt guard、safety、fact check、user feedback、modality、PII 和 hallucination 信号默认使用 vllm-sr/Vela-2.0-0.3B(合集)。它们共用一个部署 primary,在同一路由阶段批量处理兼容的问题。一次 API 调用可以携带多个问题; 窗口扫描和批次限制仍可能需要多次模型前向计算,后续路由阶段也可以发起额外调用。

  • 问题: 每个信号提出模型针对它训练过的问题,并沿用对应 Vela 1.0 模型的标签,因此规则和策略照旧读取答案。 PII 和 hallucination 使用模型的片段头,片段保留精确的字符偏移。
  • CPU profile: 在 CPU 上该部署运行 max_speed,使用模型权重的打包副本:答案误差约在 0.00001 以内, 速度约为 exact 的 1.6 倍。
  • 输入: 普通路由判断可以按模型输入上限截断。Prompt guard、safety、PII 和 hallucination 要求完整读取输入; 支持窗口扫描的任务可在扫描预算内覆盖更长的输入。覆盖不完整时返回错误或未知结果。 具体限制和路由策略见长输入。Vela 1.0 的 Guard 和 PII 按窗口扫描最多 32K。
  • 阈值: 模块默认阈值按 0.3B 的分数校准(见下文)。

维护者选择了这个默认值,尽管它没有达到当初设定的两个目标 (#4639):每个信号的准确率持平或更好, 以及 CPU 上的延迟持平或更好。在 router signal suite 上经由路由器测得 (A/B 记录):

  • 领先: prompt guard(留出集 AUC +0.026;在 E2E 攻击样例上它拦下全部六个攻击,Vela 1.0 Guard 拦下五个)和 safety(留出集 +0.052,在每个数据集上都领先)。这些信号共用一个模型。
  • 持平: PII 和 hallucination 在留出集和新留出集上持平。
  • 落后最多: modality(留出集 AUC −0.180;0.3B 漏掉了大多数要求生成新图片的请求)和 user feedback (准确率留出集 −0.038、新留出集 −0.178)。
  • 落后: domain(准确率留出集 −0.037、新留出集 −0.088)和 fact check(留出集 AUC −0.101)。
  • CPU 时间: 在这项测量中,每个请求都要把问题、选项和 17 个 PII 标签(至少 560 个 token)送入 3.07 亿参数的模型, 而每个 Vela 1.0 模型只读取请求本身。在 12 个 CPU 核上,针对 延迟记录中的五个请求信号, 请求的中位耗时约为原来的 4.9 倍:
路由器,12 个 CPU 核p50p95每秒请求数并发 16 时
Vela 1.0 专用模型(恢复后)16 ms58 ms38.951.8
Vela 2.0 0.3B(默认)79 ms100 ms11.912.8

#4668 继续改进 CPU 延迟。在 GPU 上(use_cpu: false), 0.3B 在一块 AMD Instinct MI325X 上回答同样的问题,中位耗时约 7 ms (测量记录)。

阈值​

每个默认阈值都在该数据集的 dev 划分上保持 Vela 1.0 专用模型的工作点:二分类信号保持误报率,置信度下限保持低于下限的请求比例。 默认值为 prompt guard 0.75、domain 0.28、PII 0.01、fact check 0.93、user feedback 0.37。

  • PII: 0.3B 的片段头在返回片段前已按各标签自己的阈值筛选,因此 0.01 会接受它返回的每个片段。
  • 其他模型: 运行其他模型且未设置阈值的模块,保持它之前的默认阈值。
  • 你自己的规则阈值(routing.signals.jailbreak[].threshold 等)由你设定,很可能是为 Vela 1.0 选的。 记录给出了每个 Vela 1.0 值在 0.3B 上的对应值:prompt guard 0.3–0.9 → 0.74–0.77、PII → 0.01、safety 0.5 → 0.46、 fact check 0.95 → 0.93、modality 的 confidence_threshold 0.7 → 0.51。

恢复 Vela 1.0 专用模型​

一个配置块即可恢复;你未设置的模块阈值也随之恢复为专用模型的默认值:

global:
model_catalog:
system:
safety: models/Vela-1.0-Encoder-307M-Safety
prompt_guard: models/Vela-1.0-Encoder-307M-Guard
domain_classifier: models/Vela-1.0-Encoder-307M-Domain
pii_classifier: models/Vela-1.0-Encoder-307M-PII
fact_check_classifier: models/Vela-1.0-Encoder-307M-FactCheck
hallucination_detector: models/Vela-1.0-Encoder-307M-Halu
feedback_detector: models/Vela-1.0-Encoder-307M-Feedback

modality 分类器在 classifier.model_path 中写明 models/Vela-1.0-Encoder-307M-Modality。

只想恢复一个信号时,只写它那一行。以 user feedback 为例:

global:
model_catalog:
system:
feedback_detector: models/Vela-1.0-Encoder-307M-Feedback
信号global.model_catalog 下的一行
Domainsystem.domain_classifier: models/Vela-1.0-Encoder-307M-Domain
Prompt guardsystem.prompt_guard: models/Vela-1.0-Encoder-307M-Guard
Safetysystem.safety: models/Vela-1.0-Encoder-307M-Safety
Fact checksystem.fact_check_classifier: models/Vela-1.0-Encoder-307M-FactCheck
User feedbacksystem.feedback_detector: models/Vela-1.0-Encoder-307M-Feedback
PIIsystem.pii_classifier: models/Vela-1.0-Encoder-307M-PII
Hallucinationsystem.hallucination_detector: models/Vela-1.0-Encoder-307M-Halu
Modalitymodules.modality_detector.classifier.model_path: models/Vela-1.0-Encoder-307M-Modality

配置自己设置的规则阈值保持不变。内置配方的规则按 0.3B 校准,因此改回 Vela 1.0 的信号要连同它的 Vela 1.0 规则阈值一起改回。在 mom-v1 中,它们是 prompt guard 0.5、safety 0.5 和 PII 0.7;记录列出了每个配方的值。

专用模型通过明确的任务绑定选择;切换默认决策模型会保留这些覆盖。

选择规模​

默认决策绑定引用一个已声明的 deployment,用于 Router 判断任务及未指定覆盖的 decision 问题。模型、设备和 profile 仅在该资源中声明; 没有覆盖配置时,内置默认模型为 Vela 2.0 0.3B。传入模型 artifact 可更新当前默认 deployment; --platform 选择运行平台,deployment 中显式设置的设备位置仍优先。例如:

vllm-sr serve vllm-sr/Vela-2.0-4B --platform rocm
global:
model_catalog:
deployments:
primary:
provider: model_runtime
artifact: vllm-sr/Vela-2.0-4B
device: rocm:0
system:
decision_model:
deployment: primary

serve 把这一行作为新版本写入当前生效的配置,vllm-sr config versions 会列出它, vllm-sr config rollback 可以撤销;之后的启动会保留它,vllm-sr status 会显示它。Helm chart 的 decisionModel 值和 operator 的 spec.config.decision_model 设置相同绑定。deployment key 必须精确匹配,区分大小写。

通过 Router 在 router signal suite 上与 Vela 1.0 专用模型对比测得,延迟针对延迟记录的五个请求信号 (记录):

决策模型硬件留出集上相对 Vela 1.0 的准确度GPU 上的 p5012 个 CPU 核上的 p50
Vela-2.0-0.3B(默认)CPU 或 GPUprompt guard 和 safety 领先,domain、modality 和 feedback 落后6.6 ms79 ms
Vela-2.0-0.8BCPU 或 GPUdomain、prompt guard、safety、modality 和 hallucination 领先;PII 落后40.1 ms约 3 s
Vela-2.0-4BGPU,约 17 GB除 fact check 外全部领先55.2 ms未测量
Vela-2.0-9BGPU,约 32 GB全部领先76.5 ms未测量
Vela-1.0CPU 或 GPU专用模型本身不适用16 ms
  • GPU: 一块 AMD Instinct MI325X,顺序请求。并发 16 时,一块 GPU 每秒约处理 154(0.3B)、 25(0.8B)、18(4B)和 13(9B)个请求。
  • 该工作负载建议为 4B 和 9B 使用 GPU。 这份记录未测量它们的 CPU 延迟。设备位置由 deployment 和运行时要求决定,CLI 不按模型名称禁止 CPU;显式 GPU 设备必须与所选平台一致,并且在主机上可用。
  • CPU 上的 0.8B 是解码器:如表所示,一个请求需要数秒。请在 GPU 上运行它,或在 CPU 上继续使用 0.3B。
  • 每个规模 在 user feedback 的新留出文件(CrossWOZ)和分布内的 PII 上都落后于 Vela 1.0。带区间的逐信号数据见记录。
  • Decision 1.0 和 Decision 2.0 都可作为默认判断模型;可用任务取决于其原生能力,不按家族名称限制。
  • 专用模型 通过任务绑定覆盖默认值,并可与默认决策模型同时运行。

每个规模都有自己的模块阈值;切换时,未设置阈值的模块会采用它们:

决策模型Prompt guardDomainPIIFact checkUser feedback
Vela-2.0-0.3B0.750.280.010.930.37
Vela-2.0-0.8B0.710.380.070.9940.34
Vela-2.0-4B0.630.450.050.99840.33
Vela-2.0-9B0.420.460.140.9980.35
Vela-1.00.50.50.90.950.7

配置自己设置的规则阈值(例如内置配方的)保持不变;记录把每个阈值映射到每个规模(例如 mom-v1 的 prompt_attack 0.75 在 0.8B 上是 0.71,在 4B 上是 0.63,在 9B 上是 0.42)。system.<module> 行或 binding 会让该信号留在它自己的模型上。

硬件​

硬件状态用法
CPU已验证每个路由器镜像都能开箱即用地在 CPU 上运行模型。
AMD Instinct MI300X、MI325X已验证设置 device: rocm:0。vllm-sr serve --platform rocm 和 vllm-sr-rocm 镜像自带 ROCm 版 PyTorch。
NVIDIA GPU可用,尚未验证设置 device: cuda:0。vllm-sr serve --platform cuda 自带 CUDA 版 PyTorch。
Intel GPU可用,尚未验证设置 device: xpu:0,并把运行时安装在 XPU 版 PyTorch 旁边。
Apple 芯片本版本仅支持 CPU在 macOS 上 docker 目标使用 CPU 镜像,因为 Docker 的 Linux 虚拟机拿不到 GPU。通过宿主机使用 GPU 的支持见 #4636。

在 AMD GPU 上,路由器镜像自带运行时经过验证的软件栈:ROCm 7.2 版 PyTorch 2.12、FLA 0.5.2,以及为 ROCm 构建的 causal-conv1d 1.7.0。 其中的 causal-conv1d 也包含 MI200 和 MI350 GPU 的代码,因此用到它的模型在这些 GPU 上也能运行,但只有 MI300X 和 MI325X 经过验证。 内置模型的 GPU 参考答案已在该栈上核验,每个模型加载时都会与它们对照自检。换用其他 PyTorch、ROCm 或内核构建时, 模型可能无法通过自检,或报告 unverified。 如果某个模型的参考答案需要在该栈上重新记录,其模型族的记录 会说明这一点,并给出它与发布版答案的一致率。

device: auto(默认)选择第一个有足够空闲显存的已验证 GPU,否则使用 CPU。 你显式指定的 GPU 必须存在,否则模型会带着明确的原因加载失败,而不是悄悄在 CPU 上运行。

需要多少内存​

内存取决于模型家族和 profile,而不只是设备。FP32 权重约占每参数 4 字节,低精度模型可能约占 2 字节; 还需要为输入、激活和并发请求留出余量。307M FP32 任务模型仅权重就约需 1.3 GB。 请查看模型记录并测量实际工作负载的峰值。每个副本有独立进程和权重副本,通过 replicas 配置设备位置 (见放置和扩展副本)。

你自己的模型​

Hugging Face 的 ModernBERT 和 mmBERT 分类器、token 分类器和 embedding 模型,加载方式与内置 Vela 模型相同: 提供带 revision 的 Hub 仓库,或本地副本的绝对路径。其他架构的模型需要家族插件; 见添加你自己的模型家族。