Merges updates from main#5436
Conversation
…ck orders (isaac-sim#4875) # Description This PR adds 4 new Isaac-Stack-Cube-Franka-IK-Rel-v0 task variants corresponding to stacking [Red, Green], [Red, Green, Blue], [Blue, Green], and [Blue, Green, Red]. The objective is to create a test bed for different success conditions in the same scene. ## Type of change - New feature (non-breaking change which adds functionality) ## 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 - [ ] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
Just a few docstring changes for consistency. Low priority and low risk. ## Type of change - Documentation update ## 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` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings
# Description Updates Newton docs on main for 3.0 beta changes ## Type of change - Documentation update ## 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` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [ ] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task -->
## Description Relaxes the `flatdict` version pin from `==4.0.0` to `>=4.0.0` in `source/isaaclab/setup.py`. ## Motivation `flatdict==4.0.0` (and 4.0.1) are source distributions (`.tar.gz`) that require `pkg_resources` during the build step. On modern Python (3.10+) with newer pip/setuptools, the build isolation environment often lacks `pkg_resources`, causing installation to fail with: ``` ModuleNotFoundError: No module named 'pkg_resources' ERROR: Failed to build 'flatdict' when getting requirements to build wheel ``` `flatdict 4.1.0` ships as a pre-built wheel (`.whl`) and installs cleanly without any build step. ## Changes - `source/isaaclab/setup.py`: Changed `flatdict==4.0.0` → `flatdict>=4.0.0` ## Verification The `FlatDict` API used in isaaclab (`FlatDict(dict, delimiter='.')` in `simulation_context.py` and `test_simulation_render_config.py`) is fully compatible across 4.0.0 → 4.1.0. Tested both the constructor and nested dict flattening. Fixes isaac-sim#4576 --------- Signed-off-by: Antoine RICHARD <antoiner@nvidia.com> Co-authored-by: Kelly Guo <kellyguo11@users.noreply.github.com> Co-authored-by: Antoine RICHARD <antoiner@nvidia.com> Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
…m#5195) ## Description Adds a troubleshooting note to the multi-GPU training docs for Linux systems where distributed training may fail with `CUDA error: an illegal memory access was encountered` reported by `ProcessGroupNCCL`. This PR is documentation-only. It does not change the default distributed training behavior in IsaacLab or `rsl_rl`. The note documents NCCL environment-variable workarounds that were observed to restore stability on some affected systems: - `NCCL_SHM_DISABLE=1` - `NCCL_IB_DISABLE=1` - `NCCL_ALGO=Ring` The motivation for this change is to provide an official troubleshooting path for users who hit NCCL transport/algo issues on specific Linux multi-GPU setups. In our local reproduction, the failure was not caused by IsaacLab task logic itself, but occurred in the distributed training stack when using NCCL with humanoid locomotion workloads. Dependencies: none. Refs isaac-sim#4011 Refs isaac-sim#2756 ## Type of change - Documentation update ## Screenshots N/A ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [ ] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [ ] I have added my name to the `CONTRIBUTORS.md` or my name already exists there ## Context Local reproduction environment: - Ubuntu 22.04.5 - RTX 5090 x2 - Isaac Sim / IsaacLab multi-GPU training - official distributed minimal reproduction with `Isaac-Velocity-Flat-G1-v0` Observed behavior: - the default distributed launch failed with NCCL illegal memory access - `NCCL_SHM_DISABLE=1` was sufficient to make the official dual-GPU minimal reproduction pass - `NCCL_SHM_DISABLE=1 NCCL_IB_DISABLE=1 NCCL_ALGO=Ring` also restored stability in a longer validation run This PR documents those workarounds without changing defaults, since the NCCL transport/algo selection is handled below the IsaacLab task layer. --------- Signed-off-by: bxwang <bixiong.wang@x-humanoid.com> Signed-off-by: bixiong wang <wangbx02@126.com> Co-authored-by: bxwang <bixiong.wang@x-humanoid.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Antoine RICHARD <antoiner@nvidia.com>
# Description Updates the doc building job to match the new logic from develop branch. Eliminates some older versions of docs to be built and hopefully resolves other doc building issues we are seeing in PRs. ## Type of change <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) - Documentation update ## 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` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [ ] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task --> --------- Co-authored-by: OpenClaw <openclaw@users.noreply.github.com>
# Description Updates the integration of skrl for the version 2.0.0. This also solves isaac-sim#5300. ## 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 - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task --> --------- Signed-off-by: Kelly Guo <kellyg@nvidia.com> Co-authored-by: Kelly Guo <kellyg@nvidia.com>
Made-with: Cursor
There was a problem hiding this comment.
🤖 Isaac Lab Review Bot
Summary
This PR merges updates from main to develop, specifically integrating skrl 2.0.0 support from PR #5311. The changes update the skrl wrapper API, training/play scripts, configuration files, and dependency version requirements to be compatible with skrl 2.0.0's breaking API changes. The changes appear mechanically correct and follow skrl 2.0.0's migration patterns.
Architecture Impact
- SkrlVecEnvWrapper (
isaaclab_rl/skrl.py): Now supports"warp"as a new ML framework option alongside"torch"and"jax". This wrapper is called by all skrl training/play scripts. - Training/Play Scripts (
scripts/reinforcement_learning/skrl/): Updated to use skrl 2.0 API (enable_training_mode()instead ofset_running_mode(),agent.act()now requiresstatesparameter). - Agent Config Files (multiple YAML files): Renamed config keys to match skrl 2.0 schema changes (e.g.,
state_preprocessor→observation_preprocessorfor agents,amp_state_preprocessor→amp_observation_preprocessor). - Downstream Impact: All users training with skrl must upgrade to >=2.0.0 (breaking change for existing installations).
Implementation Verdict
Minor fixes needed — One bug fix required, rest is correct.
Test Coverage
The PR description notes "Tests that prove my fix is effective" is unchecked. Given this is an integration update for a third-party library, integration tests via CI (running training scripts) would be the appropriate validation. No new unit tests are added, which is acceptable for config/wrapper updates, but the lack of CI status makes it impossible to verify the changes work end-to-end.
CI Status
No CI checks available yet — this is concerning for a breaking dependency update.
Findings
🔴 Critical: source/isaaclab_rl/isaaclab_rl/skrl.py:96 — Missing raise statement was correctly added, but validates wrong value
The fix correctly adds raise before ValueError, but there's a subtle issue. Looking at the full context:
elif ml_framework.startswith("warp"):
from skrl.envs.wrappers.warp import wrap_env
else:
raise ValueError(
f"Invalid ML framework for skrl: {ml_framework}. Available options are: 'torch', 'jax', 'warp'"
)This is actually correct now. The original code had ValueError(...) without raise (line 96-97 in the diff shows the fix). This is a genuine bug fix. ✅
🟡 Warning: scripts/reinforcement_learning/skrl/play.py:195-196 — State initialization before reset may cause issues on first iteration
obs, _ = env.reset()
states = env.state()The env.state() call happens after reset, which is correct. However, if env.state() returns None for single-agent environments (which is valid per gymnasium semantics), the subsequent runner.agent.act(obs, states, ...) call at line 206 may fail depending on skrl's internal handling. Verify that skrl 2.0.0 handles None states gracefully for single-agent envs.
🟡 Warning: source/isaaclab_tasks/isaaclab_tasks/direct/cart_double_pendulum/agents/skrl_mappo_cfg.yaml:31 — Value network input changed to STATES
value:
network:
- name: net
input: STATES # Changed from OBSERVATIONSThis is semantically correct for MAPPO (centralized critic should use global state), but represents a behavioral change from the previous config. The same change in skrl_ippo_cfg.yaml was NOT made (value still uses OBSERVATIONS), which is correct for IPPO. Verify this asymmetry is intentional.
🟡 Warning: source/isaaclab_tasks/isaaclab_tasks/direct/humanoid_amp/agents/skrl_*_amp_cfg.yaml — Reward scaling semantics may have changed
# Old:
task_reward_weight: 0.0
style_reward_weight: 1.0
discriminator_reward_scale: 2.0
# New:
task_reward_scale: 0.0
style_reward_scale: 2.0
# discriminator_reward_scale removedThe style_reward_scale changed from 1.0 to 2.0, and discriminator_reward_scale was removed. This could be intentional (skrl 2.0 may have changed how these combine), but it's a functional change to training behavior that should be validated.
🔵 Improvement: source/isaaclab_rl/setup.py:43 — Consider documenting breaking change
The version bump from skrl>=1.4.3 to skrl>=2.0.0 is a breaking change for existing users. Consider adding a migration note to the CHANGELOG or documentation explaining that users need to update their skrl configs if they have custom ones.
🔵 Improvement: scripts/reinforcement_learning/skrl/train.py:68 and play.py:65 — Removed "jax-numpy" choice
The jax-numpy option was removed from the --ml_framework choices. If users were relying on this, they'll get an unclear argparse error. The skrl 2.0 migration may have changed how JAX backends work — verify this removal is intentional.
🔵 Improvement: docs/source/tutorials/00_sim/spawn_prims.rst:191 — Unrelated doc fix
The USD documentation URL fix (/docs/ → /release/) is correct and unrelated to skrl. This is fine to include but could have been a separate PR for cleaner history.
Claude: I'll review this PR thoroughly, analyzing the skrl 2.0.0 integration changes.
🤖 Isaac Lab Review Bot
Summary
This PR merges skrl 2.0.0 integration updates from main to develop. The changes update the skrl wrapper, training/play scripts, YAML configuration files, and version requirements to match skrl 2.0.0's breaking API changes. The implementation correctly follows skrl 2.0.0's migration patterns, with one critical bug fix (adding missing raise statement) and proper API updates throughout.
Architecture Impact
- SkrlVecEnvWrapper (
isaaclab_rl/skrl.py): Updated type hints and added"warp"ML framework support. All skrl training/play scripts depend on this wrapper. - Training/Play Scripts: Updated to use skrl 2.0 APIs (
enable_training_mode()replacesset_running_mode(),agent.act()signature changed to requirestatesparameter). - Agent Config Files: Multiple YAML files updated with renamed configuration keys per skrl 2.0 schema.
- Breaking Change: All downstream users must upgrade skrl to >=2.0.0.
Implementation Verdict
Ship it — Changes are correct and consistent with skrl 2.0.0 migration requirements.
Test Coverage
PR checklist indicates tests were not added. For a third-party library integration update, end-to-end validation via CI is the appropriate testing strategy. Config file changes are validated by successful training runs rather than unit tests.
CI Status
No CI checks available yet — validation of the integration depends on CI completion.
Findings
🔴 Critical (Fixed): source/isaaclab_rl/isaaclab_rl/skrl.py:97 — Bug fix correctly adds missing raise
The original code had a silent failure:
# Before (broken):
ValueError(f"Invalid ML framework...") # Created but never raised!
# After (fixed):
raise ValueError(f"Invalid ML framework...")This was a latent bug where invalid ml_framework values would silently pass through. The fix is correct. ✅
🟡 Warning: scripts/reinforcement_learning/skrl/play.py:206-211 — State handling for single-agent envs
outputs = runner.agent.act(obs, states, timestep=0, timesteps=0)The states = env.state() call at line 196 returns None for single-agent environments per gymnasium semantics. Verify skrl 2.0.0 handles None states gracefully in agent.act(). If not, this will cause runtime failures for single-agent play.
🟡 Warning: source/isaaclab_tasks/.../skrl_*_amp_cfg.yaml:93-94 — Reward scale values changed
# skrl_dance_amp_cfg.yaml, skrl_run_amp_cfg.yaml, skrl_walk_amp_cfg.yaml
# Old values (implicit from removal):
task_reward_weight: 0.0
style_reward_weight: 1.0
discriminator_reward_scale: 2.0
# New values:
task_reward_scale: 0.0
style_reward_scale: 2.0 # Changed from 1.0
# discriminator_reward_scale: removedThe style_reward_scale doubled from 1.0→2.0 and discriminator_reward_scale was removed. This is a behavioral change — confirm this matches skrl 2.0's expected semantics where the discriminator scale may now be folded into style_reward_scale.
🟡 Warning: source/isaaclab_tasks/.../skrl_mappo_cfg.yaml:31 — MAPPO value network input differs from IPPO
In MAPPO configs, the value network input changed:
value:
network:
- name: net
input: STATES # Changed from OBSERVATIONSThis is semantically correct for MAPPO (centralized critic uses global state), while IPPO configs correctly retain OBSERVATIONS. The asymmetry is intentional and correct.
🔵 Improvement: scripts/reinforcement_learning/skrl/train.py:68 — "jax-numpy" choice removed without migration note
choices=["torch", "jax"], # Was: ["torch", "jax", "jax-numpy"]Users with scripts specifying --ml_framework jax-numpy will get argparse errors. Consider documenting this removal in the CHANGELOG.
🔵 Improvement: docs/source/tutorials/00_sim/spawn_prims.rst:191 — Unrelated documentation fix
The USD docs URL update (/docs/ → /release/) is correct but tangential to the skrl integration. Clean commit history would separate this.
Greptile SummaryThis PR updates the skrl integration from version 1.4.3 to 2.0.0, adapting the environment wrapper, play/train scripts, and agent configuration YAMLs to the new API (renamed preprocessor keys, updated
Confidence Score: 3/5Safe to merge for torch/jax users, but the new "warp" framework is silently inaccessible via the CLI scripts. Two P1 findings: "warp" is added to SkrlVecEnvWrapper but blocked at the argparse layer in both play.py and train.py, meaning the feature is broken for CLI users. The torch and jax paths remain functional. Multiple P1s push the score below the P1 ceiling of 4. scripts/reinforcement_learning/skrl/play.py and scripts/reinforcement_learning/skrl/train.py — both need "warp" added to the --ml_framework choices list. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
CLI["CLI --ml_framework arg\n(choices: torch, jax)"] -->|"torch / jax"| Runner["skrl Runner"]
CLI -.->|"warp ❌ blocked by argparse"| Runner
Runner --> SkrlWrapper["SkrlVecEnvWrapper\n(supports: torch, jax, warp)"]
SkrlWrapper -->|torch| TorchWrap["skrl.envs.wrappers.torch"]
SkrlWrapper -->|jax| JaxWrap["skrl.envs.wrappers.jax"]
SkrlWrapper -->|warp| WarpWrap["skrl.envs.wrappers.warp"]
Runner --> Agent["runner.agent"]
Agent -->|"enable_training_mode(False)"| EvalMode["Eval Mode (skrl 2.0.0)"]
Agent -->|"act(obs, states, ...)"| Act["Inference Loop"]
Act -->|"env.state()"| States["Global States"]
States --> Act
|
| type=str, | ||
| default="torch", | ||
| choices=["torch", "jax", "jax-numpy"], | ||
| choices=["torch", "jax"], |
There was a problem hiding this comment.
"warp" missing from CLI choices
SkrlVecEnvWrapper in skrl.py was updated to support "warp" as a valid ml_framework, but neither play.py nor train.py includes "warp" in the --ml_framework argparse choices list. Passing --ml_framework warp from the command line will be rejected before it ever reaches SkrlVecEnvWrapper, making the new warp support effectively inaccessible.
| choices=["torch", "jax"], | |
| choices=["torch", "jax", "warp"], |
| type=str, | ||
| default="torch", | ||
| choices=["torch", "jax", "jax-numpy"], | ||
| choices=["torch", "jax"], |
There was a problem hiding this comment.
Description
Type of change
Checklist
pre-commitchecks with./isaaclab.sh --formatconfig/extension.tomlfileCONTRIBUTORS.mdor my name already exists there