跳到主要内容
版本:最新版

进程内模型

如果希望在本地推理且不另建模型服务,可以在 Router 进程内运行模型。先按照安装指南安装 CLI 和匹配的镜像。

选择引擎和模型

引擎硬件模型格式
CandleCPU(cpu)、NVIDIA(cuda:0)、Apple Metal(metal:0兼容的模型权重;精度为 nativefp32
ONNX RuntimeCPU(cpuONNX 图;使用 precision: native
ONNX Runtime with MIGraphXAMD GPU(migraphx:N兼容的 ONNX 图;精度为 nativefp16
ML 和 NLP 引擎CPU已训练的选择器或关键词匹配配置

Candle 支持 GPU 索引 0。BERT、已合并的 BERT LoRA 和 LoRA token 模型不支持 Metal。ORT 接受 CPU 和 MIGraphX 设备;上表中的 NVIDIA 和 Metal 选项使用 Candle。现有 OpenVINO 主嵌入模型集成仍采用单独的平台配置,不提供 deployment provider 或缓存/分窗 API。

模型家族支持的用途
ModernBERT / mmBERT序列分类和 token 分类;mmBERT 文本嵌入
BERT 和已合并的 BERT LoRA序列分类和 token 分类;BERT 文本嵌入
DeBERTa序列分类
专用幻觉检测和 NLI 模型使用 Candle 检查内容依据和句对关系
Qwen3 和 Gemma 嵌入模型使用 Candle 生成文本嵌入
兼容的多模态模型模型实际提供的文本、图像和音频编码器
MLP、KNN、K-means、SVM在 CPU 上根据嵌入特征选择模型
BM25 和 N-gram在 CPU 上匹配关键词
TextRank、TF-IDF 和启发式方法在 Go 中执行提示词压缩和规则

ORT 支持导出的 mmBERT 分类图,以及 mmBERT 或多模态嵌入图。本地分类器最多接受 512 个 token,包含特殊 token;嵌入模型的上限由模型决定。分类器需要针对任务训练的分类头和标签,例如领域分类、提示词防护、PII、事实核查、反馈或输出模态。Qwen3/Gemma 嵌入模型不提供本地生成式分类功能。

其他本地功能的配置见嵌入模型安全模型MLP 选择关键词信号

配置分类器

下面的示例在 CPU 上运行自定义邮件分类器。开始前请准备:

  • 将完整且兼容的模型文件放到 models/email-classifier
  • BENIGNPHISHING 替换为模型的标签,并保持训练时的顺序。
  • 将回答模型的地址替换为 Router 可以访问的地址。

deployment 指定模型文件和引擎。binding 将该部署连接到 email-risk 分类规则。将以下内容保存为 config.yaml

version: v0.3
listeners:
- name: http
address: 0.0.0.0
port: 8899
providers:
defaults:
model: answer-model
models:
- name: answer-model
backend_refs:
- name: answer
endpoint: 127.0.0.1:8000
protocol: http
routing:
model_bindings:
classifier.email-risk:
deployment: email-risk-cpu
contract: label_distribution.v1
adapter: auto
signals:
classifiers:
- name: email-risk
type: local
labels: [BENIGN, PHISHING]
decisions:
- name: inspect-email
priority: 100
rules:
operator: AND
on_unknown: fail_request
conditions:
- type: classifier
name: email-risk
label: PHISHING
predicate:
gte: 0.8
modelRefs:
- model: answer-model
global:
model_catalog:
deployments:
email-risk-cpu:
artifact: models/email-classifier
provider: candle
device: cpu
precision: native
input:
max_tokens: 512
overflow: reject

启动并测试

vllm-sr config validate --config config.yaml
vllm-sr serve --config config.yaml
curl -sS http://localhost:8899/v1/chat/completions \
-H 'content-type: application/json' \
-d '{"model":"auto","messages":[{"role":"user","content":"Review this email requesting a password reset."}]}'

当分类器的钓鱼邮件分数达到 0.8 时,这条规则匹配。示例将匹配和不匹配的请求都发送给同一个回答模型;修改决策中的模型或插件,即可执行自己的策略。

更换引擎或模型

对于导出的 mmBERT ONNX 模型,将部署改为 provider: ort,让 artifact 指向完整的 ONNX 目录,并在 binding 中设置 adapter: mmberthead: onnx/model.onnx。设备从上表中选择。

自定义模型目录不需要注册表条目。目录应包含权重或 ONNX 图、分词器、配置、标签以及图引用的外部张量文件。LoRA 模型需要完整的已合并权重,不能只提供 adapter 增量。已注册模型由正常的 serve 流程下载。替换正在使用的模型时,固定 revision 并使用新目录。

Binding 仅对一个配方生效。将它放入对应配方的 routing 块,即可更换该配方的模型而不影响其他配方。完整字段见配置参考

从源码构建时,先运行 make vllm-sr-dev,再为 serve 命令添加 --image-pull-policy never