feat(vla): add SmolVLA conditioning and experiment artifacts

This commit is contained in:
Logic
2026-07-31 10:11:04 +08:00
parent acbd7c605a
commit 5ae9f5fa48
175 changed files with 317471 additions and 70 deletions
+39
View File
@@ -0,0 +1,39 @@
# Repository Guidelines
## Project Structure & Module Organization
- `roboimi/` is the main package: simulation code in `roboimi/envs/`, assets/helpers in `roboimi/assets/`, VLA models/config in `roboimi/vla/`, and runnable scripts in `roboimi/demos/` plus `roboimi/demos/vla_scripts/`.
- `tests/` holds `unittest` regressions for training, rollout, dataset loading, and asset resolution.
- `docs/superpowers/` stores design specs and plans.
- `docs/experiment-guide.md` store how beginning experiment
- `runs/`, `outputs/`, `swanlog/`, `.worktrees/`, and `checkpoints/` are generated experiment artifacts, not source modules.
## Build, Test, and Development Commands
- `conda env create -f environment.yml && conda activate roboimi` — create the standard environment.
- `pip install -e .` — editable install.
- `python -m unittest discover -s tests -p 'test_*.py'` — run all tests.
- `python -m unittest tests.test_train_vla_rollout_validation -v` — run one focused test module.
- `python roboimi/vla/scripts/calculate_stats.py` — regenerate normalization stats.
- `python roboimi/demos/vla_scripts/train_vla.py train.max_steps=1000` — quick training smoke test.
- `python roboimi/demos/vla_scripts/eval_vla.py eval.ckpt_path=checkpoints/vla_model_best.pt eval.num_episodes=5` — evaluate a checkpoint.
## Coding Style & Naming Conventions
- Use Python, 4-space indentation, and PEP 8style naming.
- Prefer `snake_case` for files, functions, variables, and Hydra keys; use `CamelCase` for classes.
- Match existing Hydra namespaces such as `train.*`, `eval.*`, and `agent.*`.
- Keep diffs focused and imports tidy. Experiment names usually encode host/GPU, e.g. `...-l20g3-...`, `...-5880g1-...`, or `...-5090-...`.
## Testing Guidelines
- Tests use `unittest` and `unittest.mock`.
- Name files `tests/test_*.py` and classes `*Test`.
- Add direct regression coverage for changes to training, rollout, config, or dataset code paths.
- No strict coverage target is defined, but changed behavior should be tested and affected suites should pass before review.
## Commit & Pull Request Guidelines
- Follow existing prefixes: `feat`, `fix`, `chore`, `docs`, `debug`, optionally with scope, e.g. `feat(eval): export rollout video timing`.
- Keep commit messages imperative and specific.
- PRs should state the goal, touched configs/scripts, exact test commands, and dataset/checkpoint assumptions. Attach visual artifacts only when outputs change.
## Experiment Host Reference
- **Local workstation (`droid-z790eagleax`)** — local shell; **1× RTX 5090 32 GB**; env: `/home/droid/.conda/envs/roboimi/bin/python`.
- **5880 node (`droid-System-Product-Name`)** — username: `droid`; IP: `100.73.14.65`; connect with `ssh droid@100.73.14.65`; **2× RTX 5880 Ada 48 GB**; env: `/home/droid/miniforge3/envs/roboimi/bin/python`; trusted tailnet host.
- **L20 node (`droid-G5500-V7`)** — username: `droid`; IP: `100.119.99.14`; connect with `ssh droid@100.119.99.14`; **8× NVIDIA L20 46 GB**; env: `/home/droid/miniforge3/envs/roboimi/bin/python`; store large experiment data under `/data`.