Skip to main content
Version: Latest

Operations and troubleshooting

Use these checks after configuring an in-process model or external service.

Check startup

vllm-sr config validate --config config.yaml
vllm-sr serve --config config.yaml
curl -fsS http://localhost:8080/startup-status

Validation checks the configuration. Startup then loads or connects the models and checks the capabilities needed by enabled features. GPU kernel compilation can make the first startup slower than later requests.

ProblemWhat to check
Model cannot loadComplete checkpoint or ONNX files, tokenizer, labels, and mounted paths
Engine or device unavailableImage and host match the selected CPU/GPU runtime
Label mismatchCheckpoint label order and the rule's labels or mapping file
Unsupported embedding layer or dimensionExport the requested layer and match the consumer or stored index
Remote inference failsEndpoint, credentials, timeout, response format, and response-size limit
Confidence is nullThe result has no model score; see Safety models

AMD startup problems

Use the maintained ROCm image so ORT and MIGraphX libraries match. It includes ORT 1.22.1 / MIGraphX 2.13 and sets MIGRAPHX_MLIR_USE_SPECIFIC_OPS=~attention. Keep that setting with this image; it disables MLIR attention fusion.

Error or symptomAction
IsNaN unsupported in the SDPA graphUse the compatible standard onnx/model.onnx graph
Missing GPU embedding budgetSet a positive deployment input.max_tokens; see Embeddings
Model fails during GPU preparationCheck the graph and vendor libraries; requested GPU execution does not fall back to CPU
Unexpectedly slow first startupAllow time for compilation and warmup of every requested embedding layer

Unset these process variables and configure precision in the deployment instead:

ORT_MIGRAPHX_FP16_ENABLE
ORT_MIGRAPHX_BF16_ENABLE
ORT_MIGRAPHX_FP8_ENABLE
ORT_MIGRAPHX_INT8_ENABLE
ORT_MIGRAPHX_MODEL_CACHE_PATH

Any nonempty value, including 0, is rejected because it can override the configured precision or compiled model. The maintained images leave them unset.

Limit concurrent inference

For the email-risk-cpu deployment in In-process models, this allows two calls and a queue of eight, with a one-second queue timeout:

global:
model_catalog:
admission:
email-risk-cpu:
max_concurrency: 2
max_queue: 8
queue_timeout_ms: 1000
on_overflow: shed

shed rejects excess work, wait waits for a queue slot, and fail_open bypasses the limit when full. wait requires a nonzero queue size. Omit the admission setting for unbounded admission. Uses of the same shared model also share its capacity; request deadlines include queue time.

Changing admission settings for a shared model requires stopping and restarting the Router. A hot reload with different settings is rejected, and the active configuration continues serving.

Update a running model

Put a replacement model revision in a new directory, update its configuration, then reload through the Dashboard or your existing management workflow. The Router prepares the replacement before activating it. Failed preparation leaves the current configuration running; existing requests finish before old model resources are released.

A Dashboard change may be saved but still pending. For updates that return 202, poll GET /api/router/api/v1/config/hash through the Dashboard and wait for active_runtime_hash to equal the update's generated_runtime_hash. A competing change returns 409 while the first update is pending.

Knowledge-base updates keep old asset versions for active readers. Old versions are retained on disk; automatic removal is not provided. See the management API reference for request and response details.

serve preserves configuration saved through the Dashboard or API. To replace it with a local file, run vllm-sr serve --config config.yaml --replace-active-config.