# DreamZero installs two PyTorch versions and its TensorRT example runs from a shared filesystem

> DreamZero is NVIDIA GEAR Lab's release package for a world action model that predicts actions and videos, with a 14B DROID checkpoint and a distributed inference server. What the install and dependency files actually pin is more interesting than the leaderboard claims: two torch versions, two hardware branches that the manifest omits, and an eval command that stops mid-word.

**dreamzero0/dreamzero** — Code to pretrain, fine-tune, and evaluate DreamZero and run sim & real-world evals

- Repository: https://github.com/dreamzero0/dreamzero
- Website: https://dreamzero0.github.io/
- Stars: 2,684 · Forks: 240
- Language: Python
- License: Apache-2.0
- Published: 2026-09-28 · Updated: 2026-09-28 · Language: en
- Canonical page: https://hysenlabs.com/projects/dreamzero0-dreamzero

## The TensorRT example launches a script from a shared filesystem

The second inference example does not use a relative path. It starts torch.distributed.run against an absolute location on a shared network filesystem, `/mnt/aws-lfs-02/shared/seonghyeony/dreamzero/socket_test_optimized_AR.py`, which is one person's workspace rather than a path inside the repository. The same example also switches ports. The plain server example passes `--port 5000`, the TensorRT example passes `--port 8000`, and the documented default for that flag is 8000, so one of the two examples silently matches the default while the other does not. What the second example adds is two environment variables: LOAD_TRT_ENGINE, pointing at a .trt file inside the checkpoint, and DYNAMIC_CACHE_SCHEDULE set to true. Both are marked optional and only for GB200 hardware. The flag list ends mid entry at `--max-chunk-size`, described as an override for max_chunk_size with the sentence unfinished, so the last documented argument is the one whose explanation is cut off.

## Two PyTorch versions inside one document

The quick start is headed as requiring PyTorch 2.8 or newer with CUDA 12.9 or newer, and the manifest agrees in spirit by pinning torch 2.8.0, torchvision 0.23.0 and torchaudio 2.8.0. But the simulation evaluation path carries an optional step labelled as a PyTorch version update, and that step installs torch 2.9.1, torchvision 0.24.1 and torchaudio 2.9.1 from the CUDA 12.9 wheel index. So the evaluation path is meant to run on a different torch build than the one the manifest fixes, and the three packages move together in both places. The evaluation path is also a separate repository altogether, cloned with submodules, with its own uv environment and its own optional torch step. Nothing in the visible text says which torch build the DROID checkpoint expects, and the manifest gives no upper bound, so an environment built from the dependency file and an environment built from the evaluation instructions are not the same environment.

## The install forks by GPU and the forks are absent from the manifest

The hardware branch is written into the step titles. Step four is marked for GB200 only, with an instruction to skip it for H100, and step five is marked for GB200 only for TensorRT, also to be skipped for H100. Neither package appears in the dependency list. Step four installs transformer_engine with its pytorch extra, and step five installs TensorRT pinned to 10.13.2.6, together with the cu13 variant, its libraries and its bindings all at that same version and all with --no-deps. That fifth step then overwrites transformer_engine to 2.10.0 across three wheels, one of which is a cu12 build, inside a step whose hardware condition does not match its own CUDA suffix. Flash attention gets its own step with the job count capped at eight and build isolation disabled. An environment assembled from the dependency file alone therefore will not start the server on either of the two named GPUs.

## The dependency list ends mid value, and tyro appears twice

The assembly rules become visible in the dependency list, and the last entry is diffusers followed by a version that begins with a zero and then stops, so the final line of the manifest is an unfinished pin. The other entries carry their own commentary. The multi-storage-client line has an inline comment explaining that the version is pinned to prevent problems caused by new releases being published, and it is fixed at 0.33.0 with boto3, msal and an OpenTelemetry observability extra. An entry named simply gear carries no version and no explanation. Two separate packages are named pin and pin-pink, also unversioned. tyro is listed twice in the same array. Several pins sit at generations older than the torch pin beside them, including transformers at 4.51.3 and peft at 0.5.0, and the Python floor is written as ~=3.11,<3.13 while the setup steps ask for exactly 3.11.

## Three messaging stacks behind one server

The features list calls the component a distributed WebSocket server, and the manifest names Flask, flask_socketio and python-socketio at 5.13.0 or newer as what implements it, so the transport is the Socket.IO protocol rather than a bare WebSocket handshake. The client used to check the server is a separate file, test_client_AR.py, run with a port argument. The same dependency list also carries pyzmq and redis, which puts three separate messaging stacks in one project with nothing in the visible text tying any of them to a named component. Platform conditionals cut across the list as well. PyQt6 is a hard dependency on every machine that is not aarch64, so a Qt toolkit is installed for a headless inference path, while evdev and pybullet are pulled in only on Linux, so any other operating system gets neither, and the PyQt6 exclusion is keyed on processor architecture rather than on the operating system it is being excluded from.

## The tree has no training entry point

The repository description says the package holds code to pretrain, fine-tune and evaluate, and the features list offers LoRA and full fine-tuning training scripts plus a full training codebase released for people adding a new embodiment. The top-level tree shows none of that. What sits at the root is socket_test_optimized_AR.py, test_client_AR.py, an eval_utils directory, a groot directory, a scripts directory, a docs directory, a debug_image directory, the pyproject file, the README, a .gitignore, a COPYRIGHT file and a LICENSE. Both visible Python entry points end in the same suffix, which names an action recognition variant rather than a general one, and neither name refers to training. There are no GitHub releases either, so the version 1.0.0 that appears in the manifest is the only version number the project publishes. What the tree does hold is documentation: a docs directory that the features list points at for a step by step guide on adding a new embodiment, and a debug_image directory sitting beside it with no entry point referring to it.

## The evaluation command stops at python eval_utils/run_

The simulation evaluation instructions end mid command. After installing the uv environment and downloading the DROID simulation assets, the block finishes at `python eval_utils/run_` with no script name, no arguments and no flags. The line above it is a bare directory change, and the line below says only that the outputs are saved in a runs directory. So the one command a newcomer would copy in order to see a score is the one command that cannot be copied.

```bash
# Clone repository
git clone --recurse-submodules https://github.com/arhanjain/sim-evals.git
cd sim-evals

# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# Activate uv environment
uv sync
source .venv/bin/activate

# [Optional] update pytorch versions
pip install torch==2.9.1 torchvision==0.24.1 torchaudio==2.9.1 --index-url https://download.pytorch.org/whl/cu129

# Download assets (may need to export HF_TOKEN=<YOUR_HUGGINGFACE_TOKEN> first)
uvx hf download owhan/DROID-sim-environments --repo-type dataset --local-dir assets

# Run eval script
cd ..
python eval_utils/run_
```

Getting to that block is also more than a clone. Access has to be requested through a form before anything runs, the environment needs uv installed from a shell installer, and the asset download needs a Hugging Face token exported first if the assets are not already public.

## An Alpha classifier next to two leaderboard claims

The manifest classifies the project as Development Status 3, Alpha, while the news section leads with a claim of first place on two separate robot policy leaderboards. Those news entries are dated by month and day only, two of them on 02/27 and one on 02/20, with no year on any of them, so where they sit relative to the last push on 2026-04-19 has to be worked out rather than read. The leaderboard claim is specific that the DROID variant was trained from scratch on the DROID dataset with no pretraining on large scale robot data, offered as evidence for video model backbones. Two checkpoints are published and only one carries a size: the AgiBot checkpoint is about 45GB, while the DROID checkpoint is described as a 14B parameter model with no byte count at all. Latency is likewise given as a pair, roughly 0.6 seconds on GB200 and roughly 3 seconds on H100, after a warm-up described as taking a few minutes for the first inferences.

## Conclusion

Treat it as research code rather than a library. It is worth reading if you want the weights and the training path for a new robot embodiment, and it is not a dependency you can resolve from its own metadata, because the manifest ends mid pin, omits both of the GB200 only packages, and pins a torch build that the eval path tells you to upgrade. Before you build anything, decide which of the two torch lines you are on and pin that yourself, because the two sets of install steps are not interchangeable. If your hardware is not a GB200 or an H100, expect to be outside the tested set, since two GPUs is stated as the floor and CUDA 12.9 or newer is a hard prerequisite. And if you only want to see the policy score, know that the documented command for it is truncated.

## FAQ

### Is DreamZero open source?

The repository ships a LICENSE at the root, the project is listed under the Apache 2.0 license, and the manifest classifier reads License :: OSI Approved :: Apache Software License. The tree also carries a separate COPYRIGHT file beside it.

### What hardware does DreamZero need to run its inference server?

A multi GPU setup tested on GB200 and H100, with a stated minimum of two GPUs for distributed inference, Python 3.11, and a CUDA 12.9 or newer compatible GPU. The launch example sets CUDA_VISIBLE_DEVICES=0,1 with a per node process count of two.

### Which PyTorch version does DreamZero pin, and does that match the evaluation path?

The manifest pins torch 2.8.0 with torchvision 0.23.0 and torchaudio 2.8.0, while the optional evaluation step installs torch 2.9.1, torchvision 0.24.1 and torchaudio 2.9.1.

### Which DreamZero packages are installed only on GB200?

transformer_engine with the pytorch extra, and TensorRT at 10.13.2.6 with its cu13 variant, libraries and bindings. Both steps are marked GB200 only and to be skipped for H100, and neither package is in the dependency list.

### How large is the DreamZero-AgiBot checkpoint compared with DreamZero-DROID?

The AgiBot checkpoint is given as roughly 45GB. The DROID checkpoint is described as a 14B parameter model and carries no size figure.

### What is the command to run the DreamZero simulation evaluation?

The instruction block ends at `python eval_utils/run_`, with no script name, arguments or flags following it. Access to the hosted policy API has to be requested through a form before that block can be used.

## Sources

- [dreamzero0/dreamzero on GitHub](https://github.com/dreamzero0/dreamzero)
- [Issues](https://github.com/dreamzero0/dreamzero/issues)
- [License: Apache-2.0](https://github.com/dreamzero0/dreamzero/blob/main/LICENSE)
- [Project website](https://dreamzero0.github.io/)
- [README](https://github.com/dreamzero0/dreamzero/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/dreamzero0-dreamzero
