Repository navigation
modify pi camera map to match data - #629
Merged
Merged
Conversation
This was referenced Sep 13, 2026
Contributor
Author
RyanPCo
force-pushed
the
ryanco/pi-cam-remap
branch
from
September 13, 2026 17:03
f3122f7 to
fe0fafa
Compare
RyanPCo
changed the base branch from
ryanco/phase2-pins
to
graphite-base/629
September 13, 2026 17:16
This was referenced Sep 13, 2026
RyanPCo
force-pushed
the
graphite-base/629
branch
from
September 13, 2026 17:17
ceec011 to
ac95c59
Compare
RyanPCo
force-pushed
the
ryanco/pi-cam-remap
branch
from
September 13, 2026 17:17
fe0fafa to
ab41a76
Compare
RyanPCo
changed the base branch from
graphite-base/629
to
ryanco/phase2-pins
September 13, 2026 17:17
RyanPCo
changed the base branch from
ryanco/phase2-pins
to
graphite-base/629
September 13, 2026 17:47
RyanPCo
force-pushed
the
ryanco/pi-cam-remap
branch
from
September 13, 2026 17:47
ab41a76 to
81486c7
Compare
RyanPCo
force-pushed
the
graphite-base/629
branch
from
September 13, 2026 17:47
ac95c59 to
580ca5f
Compare
RyanPCo
changed the base branch from
graphite-base/629
to
ryanco/train-step-tests
September 13, 2026 17:47
RyanPCo
force-pushed
the
ryanco/pi-cam-remap
branch
from
September 13, 2026 18:09
81486c7 to
7ae449f
Compare
RyanPCo
force-pushed
the
ryanco/train-step-tests
branch
from
September 13, 2026 18:09
580ca5f to
70b6073
Compare
RyanPCo
force-pushed
the
ryanco/pi-cam-remap
branch
from
September 13, 2026 20:11
7ae449f to
11ec5d2
Compare
This was referenced Sep 13, 2026
RyanPCo
force-pushed
the
ryanco/pi-cam-remap
branch
from
September 13, 2026 21:59
f6de17b to
f207234
Compare
Contributor
Author
This was referenced Sep 22, 2026
This was referenced Sep 29, 2026
This was referenced Oct 12, 2026
Open
This was referenced Oct 22, 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.

Summary
Every dataset had a
_pitwin of its data config that differed in exactly one line:keymap_mode: cartesian_pi, which made the dataset emit PaliGemma camera names (base_0_rgb,*_wrist_0_rgb) instead of the dataset names HPT reads. The model's input naming had leaked into the data configs, and three of the twins (aria, mecka, scale) had drifted to not even instantiate (the xfails in #626).This PR moves the renaming into the Pi wrapper, where it belongs, and collapses the twins.
Pi wrapper —
PI_CAMERA_SLOTS(egomimic/models/preprocess_pi_obs.py) maps openpi's three slots onto the dataset keys every embodiment's keymap emits;gather_pi_imagespulls them from the batch, still accepting the slot names themselves as a fallback so robot rollout (which already emits both) and pre-remap checkpoints keep working. Missing wrist slots are filled from the front camera and masked out, as before._fill_missing_imagesand thepi_cam_keyskwarg are gone (pi_camera_slotsoverrides the map if a model ever needs to).Keymaps — the
cartesian_pibranch inEva._get_keymapand the_pi-suffix handling inHuman._get_keymapare removed; a_pimode is now a deprecated alias for the base mode (FutureWarning), so configs saved by earlier Pi runs still rebuild for eval and resume.Data configs
aria_pi,mecka_pi,scale_pideleted; Pi trains on the per-vendor configs. At this commit those still carry add tests to ensure training works between every model and data vendor #626's pins (stale forscaleandmecka); the validated pins land in validate episode hashes in data config before training #628 (ryanco/phase2-pins), which stacks on top of this PR.cartesian_pi(cotrain_pi_base,cotrain_pi_lang,cotrain_pi_no_lang,eva_pi_lang,cotrain_pi_pickplace_qwen) is nowcartesian.industry_eva_piandmecka_scale_cotrain_piare distinct cotrain selections, so they stay, and get thekeymap_mode/modethey never passed. Both instantiate now.eva_pistays astrain_zarr_cartesian_pi's default data, now plaincartesian: everyeva_bimanualepisode with annotations.data=evais a one-episode smoke config with no annotations, so it can't be the Pi default.default_prompt(pi0.5_base) is now empty instead of "This is a bad action.". The threepi_cartesian*viz configs read the dataset front key.Tests
tests/unit/test_pi_camera_slots.py: the slot gather (dataset names, legacy names, precedence, human front-only, BHWC, no-camera error) and the keymap rejection.test_data_configs_compose.py: the five xfails are gone; new cases assert no data config uses a_pimode and thattrain_zarr_cartesian_pidefaults to unpinned, annotated eva data.annotation_key=annotationsbecause the plain vendor configs load no language field. The tests now assert the wrapper saw dataset camera names whileStubPI0still asserts openpi's slot names, which is the remap working end to end.eval_latent.pyupdated for the new_robomimic_to_pi_datasignature.Findings not fixed here
PI._sample_promptssilently falls back todefault_promptwhenannotation_keyis set on the model but the data config never loaded that field.data=eva model=pi0.5_bc_evatrains on the empty default prompt for every sample without a warning. Worth a loud error or at least a log line.Entire dataset badfor two different scale episodes (2026-05-02-17-05-10-632372,2026-05-02-16-51-26-226166) picked by the pre-pindebug=2fallback. Same data-quality class as the eva episode add tests to ensure training works between every model and data vendor #626 reported; the pins in validate episode hashes in data config before training #628 (ryanco/phase2-pins, above this PR) sidestep it.ryanco/infra-fixes,aidan/kp-wristframe-port) still saycartesian_piinmecka_all_pi_6dandobj_gen_pi_lang; they will log a deprecation warning once this merges. One-line fixes.Test plan
pytest tests/uniton a CPU node (final restacked commit)tests/integration/test_train_step_gpu.py, A40, real Pi weightsGPU runs were on the pre-restack commit (
2d3f408c6).ryanco/phase2-pinsnow sits above this branch, so the restack reverted my edits to theeva/mecka/scale.yamlfilters back to #626's pins; the GPU test overrides the episode filter anyway, and the CPU tier uses synthetic episodes. Three GPU jobs were needed: the first filled the node's local/tmpwith Pi checkpoints (pytest's default basetemp), the second lackeds5cmdon PATH for uncached episodes. Both were harness setup, not code.🤖 Generated with Claude Code
https://claude.ai/code/session_01KxKxffCeQb3aTgvia4cLYT