fix: resolve OPENPI_ROOT before guard; document single-GPU run and local-weight env vars - #2
fix: resolve OPENPI_ROOT before guard; document single-GPU run and local-weight env vars#2memosr wants to merge 1 commit into
Conversation
Document single-GPU training and local-weight env vars in README. The -x check for the LIBERO venv ran before the cd into OPENPI_ROOT, so a relative OPENPI_ROOT passed the guard but broke at exec time. Resolve the path with cd && pwd first. Also adds a Single GPU quick-start variant and documents the five AXIS_PI05_*/LIBERO_PI05_* variables that otherwise silently fall back to gs://openpi-assets.
|
One more note for the "out of scope" list, related to the single-GPU section in this PR.
export XLA_PYTHON_CLIENT_MEM_FRACTION="${XLA_PYTHON_CLIENT_MEM_FRACTION:-0.9}"This is a default, not a forced value, so it can be overridden from the caller's The single-GPU block added in this PR sidesteps it with Two possible follow-ups, both maintainer calls, which is why they are not in
Happy to send either as a separate PR if you have a preference. |
Summary
Three fixes that block a fresh clone from following the README end to end.
1.
training/run_libero_eval.shfails with the defaultOPENPI_ROOTThe
-xguard for the LIBERO venv runs before thecdintoOPENPI_ROOT.With the README's own relative default (
third_party/openpi), the guard passesagainst the wrong path and the script then fails at exec:
Fix: resolve
OPENPI_ROOTto an absolute path withcd … && pwdbefore theguard.
PYTHONPATHinherits the resolved value. The other three scripts intraining/are unaffected, since they build relative paths after thecd.Verified against a stub OpenPI tree: relative default now exits 0 with a correct
absolute
PYTHONPATH; absoluteOPENPI_ROOT, missing checkout (exit 2) andmissing venv (exit 2) all behave as before. The missing-venv diagnostic now
prints the resolved path instead of a misleading relative one.
2. README Quick Start requires ≥4 GPUs
The patched config sets
fsdp_devices=4, batch_size=8, so the documentedcommand needs four GPUs. The only successful run recorded in
blocker.md:19used a single GPU with
CUDA_VISIBLE_DEVICES=0,XLA_PYTHON_CLIENT_PREALLOCATE=false, batch size 1 and local checkpoints —none of which appear in the README.
The existing command is kept verbatim under a Multi-GPU heading with its
requirement stated; a Single GPU variant is added below it.
3. Local-weight env vars are undocumented
AXIS_PI05_DROID_ASSETS,AXIS_PI05_LORA_INIT_PARAMS,AXIS_PI05_FULL_INIT_PARAMSand theLIBERO_PI05_*pair all default togs://openpi-assets/.... Unset, they silently require GCS egress andcredentials. Added as a table in a new section, with defaults read from the
patch rather than inferred.
Scope
No changes to
pyproject.toml,environment.yml,tests/or CI, to avoidoverlapping with #1.
Needs maintainer confirmation
The single-GPU block passes
--batch-size 1 --fsdp-devices 1as tyro overrideson
TrainConfig, following the precedent of--num-train-stepsand--checkpoint-base-diralready in the README (all forwarded viarun_train_openpi.sh:59). I could not run real training to confirm those twoflag names resolve. Please verify before merging.
Out of scope, flagged for awareness
Issue creation is disabled on this repo, so noting here rather than filing:
which blocks downstream use. Licensing is the copyright holder's call, so I
did not submit a file.
convert_datasetcalibrates the gripper per parquet shard. With theshipped
auto_q99/auto_q01defaults, identical physical finger openings mapto different normalized values depending on which shard a frame lands in.
The
open_width/clip_ratewritten tometa/…report.jsoncome from a globalfit, so the report does not describe the emitted data. Changing this alters
output semantics, so it needs a maintainer decision.
blocker.mdB003 is marked fixed but changed nothing in the repo — itrecords a one-off workaround. Evidence for B003/B004/B005 points at
reports/*.log, which.gitignore:10excludes and which is not present; thereferenced commit
3440bf85is not in this repo's history (single commit4ffc886). None of it is independently verifiable.