请求校验¶
omnirt.validate() 与 omnirt validate 命令在不占用硬件的前提下检查一次请求能否跑通:模型是否存在、任务是否匹配、config 字段是否合法、尺寸约束是否满足、adapter 是否与模型兼容。
为什么在真机前做¶
- 便宜:校验只读 registry、presets、schema;不加载权重、不碰 GPU
- 可预测:把
ValidationError明确指向字段,告诉你"width必须是 8 的倍数"而不是一条 CUDA runtime error - 一致:同一个 request 在 CPU-stub / CUDA / Ascend 上会得到相同的校验结果
最小示例¶
校验覆盖什么¶
- 模型存在性:
model是否在 registry(或其 alias)里 - 任务匹配性:
model是否支持task(通过ModelCapabilities.tasks) - 必填字段:
prompt(text2image / text2video)、image(image2image / image2video)、audio(audio2video)等 - 数值约束:
width/height的倍数、strength ∈ (0, 1]、num_frames/fps的合法范围 - Preset 合法性:
preset ∈ {fast, balanced, quality, low-vram}且该 preset 对当前 task + model 有定义 - Adapter 兼容性:LoRA / ControlNet 是否出现在
ModelCapabilities.adapters里 - 后端可达性:
backend=cuda但torch.cuda.is_available()=False时会报错(除非写明backend=auto)
在服务化场景里用¶
FastAPI 服务的 /v1/generate 在正式推理前会复用同一套 validate();一旦 ValidationResult.ok=False,返回 400 Bad Request,响应体包含 errors 列表。
相关¶
- Python API — 完整
validate()/generate()签名 - 服务协议 —
GenerateRequest字段级参考 - CLI —
omnirt validate子命令参数