Skip to content

Preserve native DROID checkpoint behavior for Positronic - #11

Open
vertix wants to merge 7 commits into
main-positronicfrom
groot-1.7
Open

Preserve native DROID checkpoint behavior for Positronic#11
vertix wants to merge 7 commits into
main-positronicfrom
groot-1.7

Conversation

@vertix

@vertix vertix commented Sep 10, 2026

Copy link
Copy Markdown

Preserve the published DROID checkpoint's native behavior when fine-tuning and serving through Positronic.

This PR contains only our changes, based on main-positronic after PR #12 merged NVIDIA's N1.7 update.
The base tree exactly matches upstream 51d4c89f72fda44cbf77285c6a8114b52676b8a1.

Fine-tuning loads the checkpoint's architecture, modalities and image preprocessing.
For the published DROID checkpoint, this preserves the 32-layer model, 40-action horizon and relative pose/joint actions.
The default uses one exterior camera and one wrist camera. --video-keys supports a different fine-tuning camera layout.
The launcher clears conflicting legacy image-size fields before training validation.
Checkpoint processor loading honors the requested normalization mode and mask augmentation settings.

Serving accepts hf:// checkpoints and rejects unexpected camera inputs.
Both native policy and sim-wrapper validation require only the instruction key selected for inference, allowing additional training paraphrases in the checkpoint configuration. These are small changes to NVIDIA's existing validation and conversion loops.
The Docker image includes the fork at /gr00t and its separate Python 3.12 environment at /opt/gr00t-venv.
The existing GitHub workflow retains its disk cleanup and main-branch trigger. The Makefile retains its build/tag/push/clean/prune/help targets and publishes latest, version, and commit tags. It uses NVIDIA's N1.7 Dockerfile and explicitly targets linux/amd64, including builds from Apple Silicon Macs. Its only change from the N1.6 Makefile is the Dockerfile filename; native ARM builds remain available through NVIDIA’s docker/build.sh.

Companion integration: Positronic-Robotics/positronic#733

Validation

  • Docker CPU suite on ee9dd54: 681 passed, 21 skipped, 49 GPU/edge tests deselected. Includes checkpoint overrides and two-/three-camera and language contracts. Positronic's 21 GR00T adapter tests also passed against this source.
    Command inside the base image: uv run --frozen --no-sync python -m pytest -m 'not gpu and not edge_device and not multigpu' -q.
  • Full pre-commit run --all-files passed in Docker, including Ruff, formatting, and platform manifest alignment.
  • The workflow matches the N1.6 fork exactly. Makefile dry runs retain latest/version/commit tags and cleanup targets; only the Dockerfile path and native architecture selection differ from N1.6. No images were published.
  • The documented examples/finetune.sh ... -- --video-keys ... command was checked with a stub launcher inside Docker; all three camera names reached the Python entry point unchanged.
  • Fresh Docker build from fork commit 506ccc87314fb69ad7ac8d8960b002ce3a378395 passed. Checkpoint configuration smoke checks passed in the base and final Positronic images with Python 3.12.3 and PyTorch 2.9.0+cu128.
  • The review fixes were tested by mounting the current source into the built Docker environment. A full image rebuild and GPU run were not repeated for these fixes; Positronic pins be79d6244dda302ace1ff7a2cd55239aad2ad109.
  • Nebius L40S inference smoke at 240627d: five successful simulator episodes through Positronic; 81 recorded calls checked for pose/action parity.
    Results: s3://inference/tmp/groot-n1.7-robolab-20260909T180755Z/.
  • GPU fine-tuning was not run. The simulator smoke covers two scenes at seed 0 and excludes inference wall time.

Mac build verification: Docker pre-commit checks passed; Makefile dry runs in both repositories target linux/amd64, including with DOCKER_DEFAULT_PLATFORM=linux/arm64. The platform/documentation correction does not change Python source; the CPU results above remain from ee9dd54. No full image rebuild was repeated for this correction.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 10, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-11T11:10:32.939953Z be79d62 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 506ccc8731

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread gr00t/model/gr00t_n1d7/processing_gr00t_n1d7.py
Comment thread gr00t/policy/gr00t_policy.py
@vertix vertix changed the title Upgrade fork to GR00T N1.7 with checkpoint-native fine-tuning Preserve native DROID checkpoint behavior for Positronic Sep 10, 2026
@vertix
vertix changed the base branch from main-positronic to nvidia-n1.7 September 10, 2026 12:09

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6db6ee8e57

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread gr00t/experiment/launch_finetune.py
@vertix
vertix changed the base branch from nvidia-n1.7 to main-positronic September 10, 2026 12:17

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b61c478840

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docker/Makefile Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9d17a03fc4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread gr00t/configs/finetune_config.py

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bc91bc1dfa

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread gr00t/policy/gr00t_policy.py Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: be79d6244d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +12 to +13
- name: Checkout
uses: actions/checkout@v4

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Check out submodules before packaging the fork

When this workflow builds the published image, actions/checkout leaves submodules uninitialized by default (its submodules input defaults to false), so Docker's COPY . /gr00t packages empty external_dependencies paths; .dockerignore also strips .git, preventing /gr00t from initializing them later. The LIBERO and SimplerEnv setup scripts immediately run git submodule update, which then fails because the included checkout is not a Git repository, making simulation evaluation unavailable from this image. Configure checkout with submodules: recursive before make push.

Useful? React with 👍 / 👎.

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