Repository navigation
Move LeRobot pin to 0.6.1 + draccus 0.11.6 (drops GPL pyyaml-include) - #355
Merged
Merged
Conversation
draccus 0.11.6 drops the GPL-3.0+ pyyaml-include that draccus 0.10.0 (required by lerobot 0.5.1) pulled in. transformers stays 5.3.0 by override, so the monolithic exporter's masking-API gate is unchanged. - One QUALIFIED_LEROBOT_VERSION constant (src/tether/_lerobot_version.py) for the monolithic exporter gate, local dataset admission and preflight text. - Local dataset admission pins the LeRobot 0.6.1 wheel, source commit 7e241bd and 13 reviewed upstream file hashes (diffs reviewed in Studio docs/research/verification/lerobot-06-implementation-20261011/), plus the Studio v2 statistics adapter hash. - lerobot.types -> lerobot.lerobot_types; GR00T probe imports follow N1.7. - Resume refuses LeRobot 0.5.x train configs with a typed cross-version-resume-unsupported code. - pi0/pi0.5/GR00T parity vehicles pin the 0.6.1 runtime, write to a new volume subtree and take --tether-revision/--watchdog-seconds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # src/tether/finetune/preflight/schema.py
- Keep the base torch/numpy requirements as on main (torch>=2.1.0, numpy>=1.24.0 off aarch64). The exact torch==2.7.1 / numpy==2.2.6 base pins were outside ADR 0003 (which pins Studio's evaluation runtime, not every public install) and LeRobot 0.6.1 already declares torch<2.12, numpy<2.3. - accelerate floor >=1.14 in the explicit SmolVLA dependency sets, matching lerobot 0.6.1's accelerate-dep extra (>=1.14,<2) instead of a looser 1.10. - Resume: an unreadable train_config.json raises ResumeConfigurationError instead of a bare JSONDecodeError; test added. - New test: WRITER_FILES/NORMALIZATION_FILES equal the installed bytes when the qualified LeRobot is present (a wrong pin previously passed every Tether test; mutation-checked). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tub shape The pi0/pi0.5/GR00T vehicles had been changed to torch==2.7.1. Every onnx-diagnostic 0.9.x release (0.9.0-0.9.3, checked) patches torch._export.non_strict_utils._constrain_user_specified_dimhint_range, which exists from torch 2.8.0 and not in 2.7.1, so torch_export_patches(patch_transformers=True) raises AttributeError before any export: the paid GPU runs would have failed. Reproduced locally on torch 2.7.1 + onnx-diagnostic 0.9.3. The vehicles now take torch>=2.8,<2.12 (lerobot 0.6.1's cap); uv resolves torch 2.11.0, transformers 5.3.0, no pyyaml-include, for linux x86_64 py3.12. test_lora_argv_parser: the local-dataset stub returns the real verify_local_export shape (receipt key) that lerobot_v3.verify_local_dataset reads since #354; three cases failed whenever lerobot was installed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
onnx-diagnostic 0.8.11 and 0.9.0-0.9.3 patch torch._export.non_strict_utils._constrain_user_specified_dimhint_range on entering torch_export_patches(); the symbol first exists in torch 2.8.0. Reproduced: entering the patches fails on torch 2.7.1 with AttributeError and succeeds on 2.8.0 and 2.11.0. _require_monolithic_deps admitted torch 2.7.1, so every pi0/pi0.5/SmolVLA/GR00T export died mid export instead of being refused. The gate now lists torch>=2.8 as a missing dependency, and the [monolithic] extra declares the same floor (the jetson extra is left alone: it does not export locally). test_dispatch_by_model_id called the real SmolVLA exporter and expected an ImportError, so it started a full export whenever the extras were installed and failed on any torch<2.8 interpreter that had them. It now stubs the family exporters and asserts routing for smolvla/pi0/pi05. New test for the torch floor; removing the check fails it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
LeRobot 0.6.1 removed PI0Pytorch/PI05Pytorch._prepare_attention_masks_4d (now lerobot.policies.common.vla_utils.prepare_attention_masks_4d), which broke the pi0 GPU parity export. Port every patched prefix/denoise path (pi0, pi0.5 monolithic, decomposed, SnapFlow pi0/pi0.5/state-out, training adapters, standalone Modal scripts) to the shared helper. Drop the 0.5.1 embed_image sqrt(hidden_size) shim (0.6.1 native no longer scales). SnapFlow pi0 clones the prefix cache like native; SnapFlow export freezes cache updates and forwards explicit state for state-out students. Adds tests/test_lerobot06_patched_forward.py: tiny real LeRobot 0.6.1 models, patched outputs vs native unpatched forward at rtol=atol=1e-6, plus torch.export graphs and a private-API audit. Audit and review notes in docs/research/verification/lerobot-06-export-port-20261012.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ty failed GPU re-run at 5fb92df: pi0 cosine 0.465 / max_abs 0.403 (thresholds 0.999 / 0.1). LeRobot 0.6.1 requires transformers>=5.4; on the pinned 5.3.0 its native image and language embeddings lose the openpi sqrt(hidden_size) scale. The exporter now matches that native forward; the receipt harness still applies the old image shim. Correction appended to the port audit. Not for merge until the transformers pin decision is made. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… golden LeRobot 0.6.1 requires transformers>=5.4,<5.6. On 5.3.0 its pi0/pi0.5 image and language embeddings lose the openpi sqrt(hidden) scale, which failed GPU parity at cosine 0.47 while the CPU tests passed against the same mis-scaled native forward. - Pins: monolithic/native/eval-local/jetson extras -> transformers==5.5.4, base <5.6, [tool.uv] 5.3.0 override removed; exporter gate driven by QUALIFIED_TRANSFORMERS_VERSION and refuses 5.3.0. - Golden reference: tiny pi0/pi0.5 fixtures captured on LeRobot 0.5.1 + transformers 5.3.0 + Tether cdb94dc; native, patched export forward and the real onnx-diagnostic ONNX export are compared to it (negative control on 0.6.1 + 5.3.0 fails, prefix norm ratio 1/sqrt(hidden)). - Receipt harnesses use native LeRobot as the reference (shims removed). - PaliGemmaBackbone.embed_text_openpi: table lookup * sqrt(hidden), so the Triton fast path and Pi0VLA/Pi05VLA do not double-scale on 5.4+. - Parity vehicles: retries=0, subprocess phase timeouts from measured times instead of the SIGKILL watchdog (Modal re-ran the crashed input), restart guard, provenance-checked export reuse, new volume root, pi0.5 on A100-40GB. Full suite: S11 4204 passed; LeRobot 0.6.1 + tf 5.5.4 4262 passed; export venv subset 73 passed; 0 failures. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ruff format on src/tether/finetune/resume.py and tests/test_finetune_local_dataset.py (lines added earlier on this branch). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
|
GPU export parity at b722306 (transformers 5.5.4, LeRobot 0.6.1, torch 2.11.0, onnxruntime-gpu 1.23.2, A100-40GB, CUDA EP, CPU fallback disabled), Modal profile fastcrest:
c93e852 adds only ruff formatting of finetune/resume.py and one test (quality ratchet). The remaining pytest CI failure is pre-existing on main since #354: tests/test_finetune_lerobot_v3.py imports pyarrow, which the CI install ([dev,onnx,serve]) lacks, so collection aborts. Local full suites: 4204 passed (S11), 4262 passed (LeRobot 0.6.1 + transformers 5.5.4), 0 failed. 🤖 Generated with Claude Code |
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.
Implements the Tether half of Studio ADR 0003: LeRobot 0.5.1 -> 0.6.1 with draccus 0.11.6, which removes the GPL-3.0+
pyyaml-includethat draccus 0.10.0 pulled in. transformers stays 5.3.0 (owner decision), so the monolithic exporter's masking-API gate is unchanged.What changes
src/tether/_lerobot_version.py: oneQUALIFIED_LEROBOT_VERSION = "0.6.1"used by the monolithic exporter gate, local dataset admission and preflight text.finetune/local_dataset.py) pins the 0.6.1 wheel (1894516...), source commit7e241bd(tag v0.6.1) and 13 upstream file hashes. Each hash was checked against the PyPI wheel, and the per-file upstream diffs were reviewed (Studiodocs/research/verification/lerobot-06-implementation-20261011/). Also pins the Studio v2 statistics adapter hash.lerobot.types->lerobot.lerobot_types; the GR00T probe follows N1.7 module names.train_config.json(eval_freq,use_rabc*) with a typedcross-version-resume-unsupportederror. Unreadable configs also get a typed error.native,monolithic,lerobotandrtcpinlerobot==0.6.1+draccus==0.11.6. SmolVLA deps are spelled out so pip resolves with transformers 5.3.0, and[tool.uv] override-dependencieskeeps 5.3.0 for uv./lerobot-061-20261011/,--tether-revisionand--watchdog-secondsentry args. They usetorch>=2.8,<2.12. Every onnx-diagnostic 0.9.x calls a torch symbol that 2.7.1 lacks, so a 2.7.1 pin would have failed the export.Review notes
torchandnumpyrequirements are deliberately unchanged from main. An exacttorch==2.7.1base pin was proposed and reverted: it is outside ADR 0003, which pins Studio's eval runtime and not every public install.tests/test_lora_argv_parser.py: the local stub now returns the realverify_local_exportshape. This failure predates this PR (since Admit local LeRobot v3 datasets as training input (S-48) #354) and only showed when lerobot was installed.Tests (at 165102a)
test_dispatch_by_model_id, which also fails on the 0.5.1 baseline in that interpreter. Root cause: onnx-diagnostic 0.9.x needs torch>=2.8.Not done: pi0 and pi0.5 GPU parity receipts. Studio's pin and producer bindings move only after those run on the merged main commit.
🤖 Generated with Claude Code