nemo_curator.core.serve.dynamo.infra

View as Markdown

Dynamo-specific placement, naming, and CLI-translation helpers.

Kept separate from subprocess_mgr so the generic Ray/subprocess infrastructure there stays reusable and free of Dynamo conventions (infra services, worker-actor naming, vLLM CLI flag shape).

Module Contents

Functions

NameDescription
build_infra_pgCreate a STRICT_PACK PG for Dynamo infra services (etcd + NATS + frontend).
build_worker_actor_nameBuild a descriptive Dynamo worker actor name for Ray dashboard visibility.
dynamo_endpointBuild the dyn://namespace.component.endpoint URI a Dynamo worker registers under.
engine_kwargs_to_cli_flagsConvert a vLLM engine_kwargs dict to a list of CLI flags.
model_name_to_componentSanitize name into a valid Dynamo component slug.

API

nemo_curator.core.serve.dynamo.infra.build_infra_pg(
name: str,
num_bundles: int,
ready_timeout_s: float = PLACEMENT_GROUP_READY_TIMEO...
) -> ray.util.placement_group.PlacementGroup

Create a STRICT_PACK PG for Dynamo infra services (etcd + NATS + frontend).

All bundles co-locate on one node so infra chatter stays off the wire. When CURATOR_IGNORE_RAY_HEAD_NODE is set, every bundle requires a non-head (worker-labeled) node.

nemo_curator.core.serve.dynamo.infra.build_worker_actor_name(
model_name: str,
replica_index: int,
node_rank: int,
tp_size: int,
role: typing.Literal['decode', 'prefill'] | None = None
) -> str

Build a descriptive Dynamo worker actor name for Ray dashboard visibility.

Format: Dynamo_[<role>_]DP<n>[_TP<n>]_<model>.

Examples::

build_worker_actor_name(“Qwen3-0.6B”, 0, 0, 1) # Dynamo_DP0_Qwen3-0.6B build_worker_actor_name(“Qwen3-0.6B”, 1, 0, 4) # Dynamo_DP1_TP0_Qwen3-0.6B build_worker_actor_name(“Qwen3-0.6B”, 0, 0, 2, role=“decode”) # Dynamo_decode_DP0_TP0_Qwen3-0.6B

nemo_curator.core.serve.dynamo.infra.dynamo_endpoint(
namespace: str,
component: str,
role: str | None = None
) -> str

Build the dyn://namespace.component.endpoint URI a Dynamo worker registers under.

nemo_curator.core.serve.dynamo.infra.engine_kwargs_to_cli_flags(
engine_kwargs: dict[str, typing.Any]
) -> list[str]

Convert a vLLM engine_kwargs dict to a list of CLI flags.

Example: {"tensor_parallel_size": 4, "enforce_eager": True} becomes ["--tensor-parallel-size", "4", "--enforce-eager"].

nemo_curator.core.serve.dynamo.infra.model_name_to_component(
name: str
) -> str

Sanitize name into a valid Dynamo component slug.

Dynamo endpoints use dyn://namespace.component.endpoint where dots are delimiters, so any dotted identifier in the model name has to be flattened. Generic across engines (vLLM, SGLang, …).