Troubleshooting Dynamo Mode#

Use this documentation to troubleshoot failures specific to Dynamo mode. For cache permissions, GPU runtime access, and executable temporary mounts, refer to Container Startup Problems.

A Worker Serves Inference Without Dynamo#

Single-container and worker-only roles can fall back to direct vLLM serving when the image does not contain the Dynamo packages. A successful inference response therefore does not prove that the worker registered with Dynamo.

A genuine worker logs:

Starting Dynamo worker: python -m dynamo.vllm

The fallback path logs:

Launching vLLM: vllm serve

Use the NIM 3.0 vLLM image published for Dynamo mode and verify the image tag against the deployment recipe.

The KV Router Requires NATS#

The KV router has a legacy subscriber path that expects NATS when the event plane is not set explicitly:

KV router's EventSubscriber requires NATS.

Set DYN_EVENT_PLANE=zmq on the frontend and worker for a file-discovery deployment. Single-container mode sets this automatically.

A Port Is Already in Use#

The worker system server and frontend cannot listen on the same port:

ERROR: Failed to bind to address 0.0.0.0:8000: Address already in use

Leave NIM_HEALTH_PORT unset to use the worker default of 9090, or set it to another free port. Do not configure DYN_SYSTEM_PORT directly: the entrypoint derives it from NIM_HEALTH_PORT and overwrites a direct value.

Workers Do Not Register#

If /v1/models stays empty in a split deployment, check the following:

  • The frontend and workers use the same NIM_MODEL_PROFILE. A metadata checksum mismatch prevents registration.

  • Discovery, event-plane, and request-plane settings match across components.

  • Worker logs show model-load progress and the genuine Dynamo launch marker.

For profile-selection details, refer to Model Profiles and Selection.

Frontend Readiness Fails#

NIM 3.0 adds management endpoints to the Dynamo frontend. Probe /v1/health/ready on the frontend HTTP port. A published DGD recipe uses that route on port 8000. Use /v1/models separately to confirm that the expected model is registered.

Metrics Are Missing#

Scrape Dynamo frontend metrics from /v1/metrics on the frontend HTTP port. Scrape vLLM metrics from /metrics on each worker system port, which is configured with NIM_HEALTH_PORT and defaults to 9090. Refer to Logging and Observability for a two-target Prometheus configuration.