Skip to content

Name Newton coupled solvers in pretrained checkpoint paths - #7539

Merged
kellyguo11 merged 1 commit into
isaac-sim:developfrom
mmichelis:fix/coupled-checkpoint-naming
Sep 3, 2026
Merged

Name Newton coupled solvers in pretrained checkpoint paths#7539
kellyguo11 merged 1 commit into
isaac-sim:developfrom
mmichelis:fix/coupled-checkpoint-naming

Conversation

@mmichelis

@mmichelis mmichelis commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator

Description

--checkpoint pretrained aborted for every coupled task with ValueError: Unsupported Newton solver for pretrained checkpoints: CouplerProxyCfg, because the physics token was derived only from the top-level Newton solver class and a coupled solver nests its solvers in entries.

A Newton coupled solver is now named by its entry solvers in order followed by its coupling scheme, so a proxy coupler over MJWarp and VBD entries resolves to newtonmjwarpvbdproxy. Names for uncoupled solvers are unchanged, and this matches the names the coupled checkpoints are already published under. The physics token is no longer validated against a closed set, since it is derived from the solver tree rather than chosen from a fixed list. train_and_publish_checkpoints.py now derives each job's physics token by resolving its preset selector, so published filenames and the names play looks up cannot drift apart.

Fixes 6672531
Fixes 6684411

Type of change

  • Bug fix (non-breaking change which fixes an issue)

Release backport

  • Backport this pull request to the active release branch after it merges into develop

Validation

uv run isaaclab play --rl_library rsl_rl --task Isaac-Lift-Cable-Franka --checkpoint pretrained --num_envs 4 --visualizer none now fetches Isaac-Lift-Cable-Franka_newtonmjwarpvbdproxy_none_rsl_rl.pt and loads the policy, where it previously aborted before launch. Isaac-Lift-Cloth-Franka and Isaac-Lift-Soft-Franka resolve to the same token and are also published under it.

  • uv run --extra test python -m pytest source/isaaclab_rl/test/test_pretrained_checkpoint.py scripts/tools/test/test_train_and_publish_checkpoints.py -q — 21 passed
  • uv run isaaclab -f

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • I have added a changelog fragment under source/<pkg>/changelog.d/ for every touched package (do not edit CHANGELOG.rst or bump extension.toml — CI handles that)
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

@mmichelis
mmichelis requested a review from a team September 3, 2026 16:23
@github-actions github-actions Bot added bug Something isn't working isaac-lab Related to Isaac Lab team labels Sep 3, 2026
@greptile-apps

greptile-apps Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR adds deterministic checkpoint naming for coupled Newton solver trees and uses the resolved physics preset when constructing checkpoint publication jobs.

  • Coupled solver tokens concatenate entry-solver families in order and append the coupling scheme.
  • Publishing and pretrained-checkpoint lookup now derive names from the same resolved configuration.
  • Tests and release notes cover the new MJWarp/VBD proxy naming path.

Confidence Score: 5/5

The PR appears safe to merge with coupled and uncoupled checkpoint naming aligned across publication and lookup.

The selected physics preset is resolved through the established task-configuration path, and both checkpoint publication and retrieval derive the backend token from the resulting solver configuration without an identified reachable regression.

Important Files Changed

Filename Overview
source/isaaclab_rl/isaaclab_rl/utils/pretrained_checkpoint.py Adds coupled Newton solver-tree naming while preserving the existing uncoupled MJWarp and PhysX names.
scripts/tools/train_and_publish_checkpoints.py Resolves selected task physics presets so publication jobs use the same backend token as checkpoint lookup.
scripts/tools/test/test_train_and_publish_checkpoints.py Verifies selection of the coupled MJWarp/VBD proxy preset for Newton publication jobs.
source/isaaclab_rl/changelog.d/coupled-physics-backend-name.rst Documents the coupled-checkpoint resolution fix and resulting backend token.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  A[Task physics preset selector] --> B[Resolve task configuration]
  B --> C[Inspect physics solver tree]
  C --> D{Solver type}
  D -->|Uncoupled MJWarp| E[newtonmjwarp]
  D -->|Coupled entries| F[Concatenate entry families]
  F --> G[Append coupling scheme]
  G --> H[newtonmjwarpvbdproxy]
  E --> I[Checkpoint filename]
  H --> I
  I --> J[Publish or fetch checkpoint]
Loading

Reviews (1): Last reviewed commit: "Name Newton coupled solvers in pretraine..." | Re-trigger Greptile

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isaac Lab Review Bot

Reviewed the new solver-tree checkpoint naming and the publishing path that resolves physics presets before constructing checkpoint filenames. Coupled proxy configurations now produce the documented newtonmjwarpvbdproxy token while uncoupled MJWarp naming remains unchanged.

  • Design and architecture: Deriving coupled checkpoint tokens from ordered solver entries plus the coupling scheme fits the existing backend-name resolution flow. Resolving the selected preset in the publishing script also aligns the producer’s filename token with the consumer’s resolved environment configuration.
  • API: The filename API now intentionally accepts non-empty derived physics tokens rather than a closed backend set, while preserving workflow validation, renderer validation, and the requirement that physics and renderer arguments be supplied together. The expanded coupled-token behavior is documented in the API docstring and changelog fragment.
  • Implementation: The CouplerProxyCfg composition yields mjwarp + vbd + proxy, and _build_core_jobs uses that resolved token while retaining the preset selector for training and playback. The implementation relies on Newton solver class-name conventions and adds preset-resolution work during job construction, but the shown paths do not establish either as requiring a pre-merge fix.

No blocking issues. No inline issue met the actionable-evidence threshold; the assessment above records the review feedback.

Automated review; human maintainers own approval decisions.

@kellyguo11

Copy link
Copy Markdown
Contributor

run-ci

@isaaclab-bot isaaclab-bot Bot added ci:run-docker Trigger the on-demand Docker and GPU CI workflow and removed ci:run-docker Trigger the on-demand Docker and GPU CI workflow labels Sep 3, 2026
@kellyguo11
kellyguo11 merged commit c9dca35 into isaac-sim:develop Sep 3, 2026
52 of 53 checks passed
isaaclab-bot Bot pushed a commit that referenced this pull request Sep 3, 2026
# Description

`--checkpoint pretrained` aborted for every coupled task with
`ValueError: Unsupported Newton solver for pretrained checkpoints:
CouplerProxyCfg`, because the physics token was derived only from the
top-level Newton solver class and a coupled solver nests its solvers in
entries.

A Newton coupled solver is now named by its entry solvers in order
followed by its coupling scheme, so a proxy coupler over MJWarp and VBD
entries resolves to `newtonmjwarpvbdproxy`. Names for uncoupled solvers
are unchanged, and this matches the names the coupled checkpoints are
already published under. The physics token is no longer validated
against a closed set, since it is derived from the solver tree rather
than chosen from a fixed list. `train_and_publish_checkpoints.py` now
derives each job's physics token by resolving its preset selector, so
published filenames and the names `play` looks up cannot drift apart.

Fixes 6672531
Fixes 6684411

## Type of change

- Bug fix (non-breaking change which fixes an issue)

## Release backport

- [x] <!-- backport-active-release --> Backport this pull request to the
active release branch after it merges into `develop`

## Validation

`uv run isaaclab play --rl_library rsl_rl --task Isaac-Lift-Cable-Franka
--checkpoint pretrained --num_envs 4 --visualizer none` now fetches
`Isaac-Lift-Cable-Franka_newtonmjwarpvbdproxy_none_rsl_rl.pt` and loads
the policy, where it previously aborted before launch.
`Isaac-Lift-Cloth-Franka` and `Isaac-Lift-Soft-Franka` resolve to the
same token and are also published under it.

- `uv run --extra test python -m pytest
source/isaaclab_rl/test/test_pretrained_checkpoint.py
scripts/tools/test/test_train_and_publish_checkpoints.py -q` — 21 passed
- `uv run isaaclab -f`

## Checklist

- [x] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html)
- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have added a changelog fragment under
`source/<pkg>/changelog.d/` for every touched package (do **not** edit
`CHANGELOG.rst` or bump `extension.toml` — CI handles that)
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there

(cherry picked from commit c9dca35)
@isaaclab-bot

isaaclab-bot Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Backported to release/3.0.0 as ce4778f.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants