feat(aorta): multi_node configuration surface (schema, yaml, docs) - #328
Open
speriaswamy-amd wants to merge 1 commit into
Open
feat(aorta): multi_node configuration surface (schema, yaml, docs)#328speriaswamy-amd wants to merge 1 commit into
speriaswamy-amd wants to merge 1 commit into
Conversation
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>
This was referenced Aug 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.py—AortaMultiNodeConfigFile(extra="forbid",master_launch_moderestricted toauto/script/torchrun), wired in with a default factory so yamls predating the block still validate.validate_paths_exist()checkstrain_scriptonly when the mode is explicitlytorchrun.cvs/runners/aorta.py— matchingAortaMultiNodeConfigdataclass, plusAortaConfig.node_vpc_ipssomaster_addrcan later resolve to the head node's RDMA-fabric address rather than its mgmt/SSH address (the samenode_dictvsvpc_ipsplitrccl_perf.pyalready 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 populatesnode_vpc_ipsfrom the cluster file.Test
ruffclean. Unit tests 595 → 603. Addscvs/parsers/unittests/(per AGENTS.md, the package had none): schema defaults, unknown-key and bad-mode rejection, conditionaltrain_scriptcheck, and backward compat for configs with nomulti_node:block.