Skip to content

feat(aorta): multi_node configuration surface (schema, yaml, docs) - #328

Open
speriaswamy-amd wants to merge 1 commit into
surya/aorta-mn-02-single-node-fixesfrom
surya/aorta-mn-03-config
Open

feat(aorta): multi_node configuration surface (schema, yaml, docs)#328
speriaswamy-amd wants to merge 1 commit into
surya/aorta-mn-02-single-node-fixesfrom
surya/aorta-mn-03-config

Conversation

@speriaswamy-amd

Copy link
Copy Markdown
Contributor

Stack 3/6 — splits #171. Base: #327.

Why

Declares the multi_node: block that the disaggregated torchrun launch consumes. Config plumbing only — nothing reads these values yet, so behavior is unchanged. Split out so the launch logic in #329 is reviewable on its own; review this one for names, defaults, and docs.

What changed

  • cvs/parsers/schemas.pyAortaMultiNodeConfigFile (extra="forbid", master_launch_mode restricted to auto/script/torchrun), wired in with a default factory so yamls predating the block still validate. validate_paths_exist() checks train_script only when the mode is explicitly torchrun.
  • cvs/runners/aorta.py — matching AortaMultiNodeConfig dataclass, plus AortaConfig.node_vpc_ips so master_addr can later resolve to the head node's RDMA-fabric address rather than its mgmt/SSH address (the same node_dict vs vpc_ip split rccl_perf.py already uses).
  • aorta_benchmark.yaml / docs/.../aorta.rst — the block with inline docs and a parameter table.
  • cvs/tests/benchmark/test_aorta.py — fixture maps the validated block onto the dataclass and populates node_vpc_ips from the cluster file.

Test

ruff clean. Unit tests 595 → 603. Adds cvs/parsers/unittests/ (per AGENTS.md, the package had none): schema defaults, unknown-key and bad-mode rejection, conditional train_script check, and backward compat for configs with no multi_node: block.

Declares the `multi_node:` block that the disaggregated torchrun launch path
consumes. This commit is config plumbing only - nothing reads these values yet,
so behavior is unchanged. It is split out so the launch logic that follows is
reviewable on its own.

- schemas.py: AortaMultiNodeConfigFile (extra="forbid", master_launch_mode
  restricted to auto/script/torchrun), wired into AortaBenchmarkConfigFile with
  a default factory so yamls predating the block still validate. validate_paths_
  exist() checks train_script only when the mode is explicitly 'torchrun'.
- aorta.py: matching AortaMultiNodeConfig dataclass, plus AortaConfig.node_vpc_ips
  so master_addr can later resolve to the head node's RDMA-fabric address rather
  than its mgmt/SSH address (same node_dict vs vpc_ip split rccl_perf.py uses).
- aorta_benchmark.yaml / aorta.rst: the block with inline docs and a parameter
  table.
- tests/benchmark/test_aorta.py: fixture maps the validated block onto the
  dataclass and populates node_vpc_ips from the cluster file.

Adds cvs/parsers/unittests/ (the package had no unit tests) covering the new
schema defaults, rejection of unknown keys and bad launch modes, and the
conditional train_script path check.

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant