You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Adds shared deployment mode enums in gr00t/deployment/modes.py and wires them into ONNX export, TRT build, verification, and benchmark CLIs.
- Tightens TRT export/build behavior: BF16-only pipeline config, static batch-size docs, ViT exported/built as FP32 while the rest stays BF16, strongly-typed precision validation, per-component precision inference from ONNX names, and full-pipeline build failure when any ONNX input/engine is missing.
- Refactors TRT runtime lifecycle: trt_torch.Engine now has explicit close() cleanup instead of an atexit hook.
- Simplifies video decoding to torchcodec-only, removing ffmpeg/decord/opencv/pyav dispatch paths, video_backend config/CLI args, av dependencies, and related obsolete tests.
- Reworks rollout video recording to stream frames through ffmpeg, stabilize caption buffer height, support explicit record_video_keys, and avoid shape changes during H.264 encoding.
- Hardens eval wrappers: env-prefix-to-embodiment mapping now fails with actionable errors, and MultiStepWrapper uses a typed AggregateMethod with fail-fast validation.
- Updates N1.7 model processing: letterbox padding is disabled by default and made optional, image transform inputs are validated more strictly, single-model tyro union parsing is fixed, and Qwen3-VL RoPE inv_freq buffers are recomputed after load for deterministic behavior.
- Adds explicit PolicyServer / PolicyClient cleanup and context-manager support, including server startup usage in run_gr00t_server.py and the DROID example client.
- Cleans up training/data code: hides modality configs from tyro CLI, removes dataset video_backend plumbing, deletes dead flowmatching/eval-accuracy code, and removes custom pytest log banners.
- Updates Docker and platform deps: global image venv under /opt/gr00t-venv, aarch64 wheel bootstrap support, Thor wheel LFS tracking, TensorRT libs pinned to NVIDIA index, dev deps for pytest-xdist/coverage/licensing, and platform pyprojects without av.
- Updates examples/docs: DROID video saving now uses imageio instead of moviepy, SimplerEnv metrics/docs are refreshed, and deployment docs remove video-backend options.
- Expands tests around Qwen3 RoPE/no-weight loading, TRT precision and missing-input handling, TRT engine lifecycle, deployment mode consistency, multistep aggregation, policy service lifecycle, and torchcodec video behavior; removes obsolete PyAV/backend-dispatch tests.
Co-authored-by: Jiajing Chen <jiajingc@nvidia.com>
Co-authored-by: Ryan Halabi <ryhalabi@nvidia.com>
id: f12a6f10fcb60bf317397fe363a50b077b88ae58
@@ -175,7 +175,7 @@ Note: GPU dependencies (flash-attn, TensorRT) may require manual installation wi
175
175
176
176
>**GB300 (sm_103) Users:** Triton 3.3.1 (pinned by PyTorch 2.7) does not support the GB300 GPU architecture (sm_103). `torch.compile` will fail on GB300. Use PyTorch eager mode or TensorRT inference instead. Triton 3.5.1+ adds sm_103 support but is not yet compatible with the pinned PyTorch version.
177
177
178
-
>**aarch64 Video Backend:**On aarch64 platforms (Thor, Orin, Spark), `torchcodec` is the required video backend. `install_deps.sh` prefers the prebuilt aarch64 wheel under `scripts/deployment/dgpu/wheels/` (shared by Thor/Spark against FFmpeg 6; Orin uses a matching build against FFmpeg 4) and falls back to a source build only if the wheel is missing. If you encounter `NotImplementedError` from the video backend, ensure `torchcodec` was installed successfully during setup. Other backends (decord, pyav) are not supported on aarch64.
178
+
>**Video Backend:**GR00T uses [`torchcodec`](https://github.com/pytorch/torchcodec) as its sole video decoding backend. Backends such as `decord` and `pyav` are no longer supported. `torchcodec` requires FFmpeg and supports H.264 on all platforms; AV1 decoding is not guaranteed (convert AV1 datasets to H.264 with `examples/SimplerEnv/convert_av1_to_h264.py`). On aarch64 platforms (Thor, Orin), `torchcodec`is built from source during `install_deps.sh` because pre-built wheels are not available — if you encounter a `NotImplementedError`, ensure the build completed successfully.
179
179
180
180
<details>
181
181
<summary><strong>DGX Spark</strong> (tested with DGX Spark GB10)</summary>
@@ -240,7 +240,7 @@ See the [Orin setup guide](scripts/deployment/README.md#jetson-orin-setup) for D
240
240
> destroy the platform-specific environment.
241
241
242
242
243
-
For a containerized setup that avoids system-level dependency conflicts, see our [Docker Setup Guide](docker/README.md).
243
+
For a containerized setup that avoids system-level dependency conflicts, see our [Docker Setup Guide](docker/README.md). The recommended container workflow is to start the image first, then clone or pull the repo inside the running container so your checkout uses the image's prebuilt dependency environment.
244
244
245
245
---
246
246
@@ -310,6 +310,8 @@ See the full [Data Preparation Guide](getting_started/data_preparation.md) for s
310
310
311
311
## Inference
312
312
313
+
> **Prefer an interactive walkthrough?** The [`getting_started/GR00T_inference.ipynb`](getting_started/GR00T_inference.ipynb) notebook steps through loading the model and predicting actions from observations on a sample dataset.
314
+
313
315
### Zero-Shot Inference (Base Model)
314
316
315
317
The included `demo_data/droid_sample` dataset works with the base model out of the box — no finetuning or checkpoint download needed:
@@ -326,8 +328,6 @@ uv run python scripts/deployment/standalone_inference_script.py \
326
328
327
329
This runs open-loop inference on 2 DROID episodes, comparing predicted actions against ground truth. The base model downloads automatically from HuggingFace on first run (~6 GB).
328
330
329
-
The standalone inference script defaults to the `ffmpeg` video backend so this demo works on systems with newer FFmpeg releases. If you explicitly use `--video-backend torchcodec`, make sure your installed `torchcodec` wheel is compatible with your system FFmpeg version.
330
-
331
331
### Finetuned Inference
332
332
333
333
For posttrain embodiments, use a finetuned checkpoint. Most finetuned checkpoints (e.g., DROID, SimplerEnv) have a flat file structure and can be passed directly as a HuggingFace model ID — no manual download needed:
Copy file name to clipboardExpand all lines: docker/README.md
+31-5Lines changed: 31 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,23 +18,49 @@ From the repository root:
18
18
bash docker/build.sh
19
19
```
20
20
21
-
This builds from `nvidia/cuda:12.8.0-devel-ubuntu22.04`, installs all dependencies via `uv sync`, and sets up the GR00T codebase at `/workspace/`.
21
+
This builds from `nvidia/cuda:12.8.0-devel-ubuntu22.04` and installs all dependencies into `/opt/gr00t-venv`. The image does not include a working source checkout; for normal use, start the image and then clone or pull the repo you want to run inside the container.
22
22
23
23
## Running the Container
24
24
25
-
**Interactive shell (uses code baked into image):**
25
+
**Recommended workflow: run the image, then clone or update the repo inside it.**
The image venv is active by default (`/opt/gr00t-venv`; `/workspace/.venv` is a compatibility symlink), and uv is configured with `UV_PROJECT_ENVIRONMENT=/opt/gr00t-venv`. After setting `PYTHONPATH` to the checked-out repo, both `python ...` and `uv run ...` use the global image venv instead of creating a checkout-local `.venv`. If you are working on an existing checkout in the container, run `git pull --ff-only` from that checkout instead of cloning again.
45
+
46
+
The global venv records the `uv.lock` hash it was built from. If your checked-out repo uses a different lockfile, create a checkout-local venv before running commands. Reusing a uv cache keeps this path from starting cold:
Do not run a bare `uv sync` unless you intend to update the global image venv. Use `UV_PROJECT_ENVIRONMENT="$PWD/.venv" uv sync` when you want an isolated per-checkout environment.
56
+
57
+
Avoid bind-mounting over `/workspace`, because that can hide the image's `/workspace/.venv` compatibility symlink. If you need to mount local source for live editing, mount it under a subdirectory:
uv run python examples/SimplerEnv/convert_av1_to_h264.py examples/SimplerEnv/fractal20220817_data_lerobot --jobs 16# (Optional) if AV1 doesn't work on your machine
77
+
uv run python examples/SimplerEnv/convert_av1_to_h264.py --root examples/SimplerEnv/fractal20220817_data_lerobot --jobs 16
0 commit comments