open-gigaai/giga-world-1

A Roadmap to Build World Models for Robot Policy Evaluation

1,154

stars

46

commits

Python

primary language

Jul 12, 2026

updated

README

GigaWorld-1 Teaser

GigaWorld-1: A Roadmap to World Models for Robot Policy Evaluation

🚀 Open-source training, inference, data processing, checkpoint conversion, and LoRA merge workflows for robot world models.

arXiv Project Page HuggingFace Model HuggingFace Dataset HuggingFace Dataset (CVPR) ModelScope Model ModelScope Dataset WMBench

Python PyTorch Diffusers License Platform


📑 Table of Contents


📰 Latest Updates

DateUpdate
📄 2026-07We uploaded the PDF version of the technical report, arXiv coming soon.
🧑‍💻 2026-07Partial training, inference, data processing, and model utility code was open-sourced.
📦 2026-07Partial model weights, toy data, and download tools were released.
📖 2026-07The GigaWorld-1 technical report was released.
🏆 2026-04We released the CVPR 2026 World Model Track leaderboard. See CVPR-2026-WorldModel-Track-LeaderBoard.
🏆 2026-03We hosted the CVPR 2026 World Model Challenge. See CVPR-2026-Workshop-WM-Track.

💡 Subscribe to releases — click Watch ▾ → Custom → Releases on the GitHub repo to be notified when new weights, datasets, or the WMBench benchmark drop.


📊 Open-Source Progress

🟢 Released · 🟡 Beta · 🔴 Coming Soon — last updated 2026-07

StatusComponentDescription
🟢Stage-1 weights (Nano / Pro)Released on open-gigaai/Giga-World-1 and ModelScope
🟢Training codeStage-1: train_gigaworld_functrl_uni_stage1.py for Nano (1.3B) and Pro (5B), DeepSpeed ZeRO-2/3 ready — see §4.1; Stage-2: train_gigaworld_functrl_uni_stage2_dmd.py for DMD2 distillation (4–6 steps) — see §4.2
🟢Inference code (i2v / t2v)Nano + Pro one-click scripts, 10 FPS, 33 s rollouts — see §5
🟡Data preprocessing pipeline & toy dataLeRobot-style → GigaWorld format with Qwen3-VL captions + Depth Anything V2 — see §2; toy data: open-gigaai/Giga-World-1-Toydata
🟢ToolsLoRA merge / checkpoint conversion, visualization, and offline latent utilities — see §2, §6
🟡📊 WMBench benchmarkPartially open-sourced — 15 fine-grained metrics, leaderboard + VLM judging
🔴Stage-2 distilled weightsDistilled Nano / Pro checkpoints — coming soon
🔴RL post-training3D RL post-training scripts for stronger 3D scene modeling — coming soon
🔴Other-domain weights and training codeAdditional domain checkpoints and corresponding training recipes — coming soon
🔴Acceleration frameworkOptimized distributed inference / training acceleration stack — coming soon

🌐 Release Channels

ChannelPurposeWhere
🐙 GitHub ReleasesTagged source snapshots with changelogsGitHub Repository
🤗 Hugging Face ModelGiga-World-1 model weightsHugging Face Model
🤗 Hugging Face DatasetGiga-World-1 toy dataHugging Face Dataset
🤗 Hugging Face Dataset (CVPR)CVPR 2026 WorldModel Track datasetHugging Face Dataset CVPR
🔷 ModelScope ModelModelScope mirror for model weightsModelScope Model
🔷 ModelScope DatasetModelScope mirror for toy dataModelScope Dataset
📄 arXivPaper PDF, BibTeXarXiv Paper
🌐 Project PageVideos, leaderboard, demos🌐 Project Page
📊 WMBenchPublic benchmark leaderboardWMBench Leaderboard
🆘 SupportIssues and discussionsGitHub Issues

🛠️ Want a component to ship sooner? Please file an issue or open a PR.


1. 📦 Environment Setup

1.1 🖥️ Hardware & OS

ItemRequirement / Recommendation
Production setupSingle node with 8 × H20 or 8 × A100 GPUs
InferenceSupports both Nano (1.3B) and Pro (5B); consumer-grade GPUs can be used with memory-saving settings
TrainingProduction experiments are run on 8-GPU nodes; consumer-grade GPU training is possible with ZeRO, offloading, gradient checkpointing, and reduced batch / resolution settings
OSLinux, verified on Ubuntu 20.04 / 22.04
CUDACUDA 12.x recommended, matching the local PyTorch installation

Note: We use a single-node 8× H20 or 8× A100 setup for production training. With appropriate memory optimization techniques, the released code can also run training and inference experiments on consumer-grade GPUs.

1.2 🧰 Install Dependencies

Install PyTorch first according to your CUDA version, then install the remaining dependencies with install.sh.

cd <PROJECT_ROOT>

# CUDA 12.6
pip install torch==2.10.0 torchvision==0.25.0 torchaudio==2.10.0 --index-url https://download.pytorch.org/whl/cu126

# CUDA 12.8
pip install torch==2.10.0 torchvision==0.25.0 torchaudio==2.10.0 --index-url https://download.pytorch.org/whl/cu128

# CUDA 13.0
pip install torch==2.10.0 torchvision==0.25.0 torchaudio==2.10.0 --index-url https://download.pytorch.org/whl/cu130

# Install dependencies
bash install.sh

install.sh installs packages from requirements.txt.

Main dependencies:

accelerate>=1.1.0        # accelerate launch / DDP / DeepSpeed
av>=12.0.0               # video read / write
decord>=0.6.0            # fast video decoding
diffusers>=0.35.0        # custom-modified version (see thirdparty/)
einops>=0.8.0
imageio>=2.36.0
imageio-ffmpeg>=0.5.1
numpy>=1.24,<3
omegaconf>=2.3.0
opencv-python>=4.9.0
packaging>=24.0
pandas>=2.1.0
peft>=0.12.0             # LoRA implementation
Pillow>=10.0.0
pyyaml>=6.0.0
safetensors>=0.4.5
torchdata>=0.8.0
tqdm>=4.66.0
transformers>=4.45.0
wandb>=0.18.0            # offline by default
xformers>=0.0.28.post3   # memory-efficient attention
deepspeed==0.19.2
ftfy==6.3.1

Optional: install FlashAttention 2 or 3

FlashAttention 2 or 3 can be used depending on your CUDA / PyTorch environment. Install one compatible version if you need FlashAttention acceleration.

# FlashAttention 2
pip install flash-attn --no-build-isolation

# Or build FlashAttention 3 manually
cd thirdparty/flash-attention-3
# Follow its README

2. 🗃️ Data Preparation

This release provides a small toy data package for verifying inference, data loading, visualization, and training workflows. The toy data is available from Hugging Face and ModelScope.

Use the one-click downloader:

bash tools/download_tool/download_giga_world.sh \
  --platform hf \
  --target toydata \
  --output-dir ./downloads

For ModelScope, replace --platform hf with --platform modelscope. See tools/download_tool/README.md for all options.

After downloading, place or symlink the toy data under example/:

mkdir -p example
cp -r ./downloads/Giga-World-1-Toydata/* ./example/

Expected project structure:

giga-world-release/
└── example/
    ├── toy_datapipeline_dataset/    # raw LeRobot-format toy dataset
    │   ├── gt/
    │   ├── depth/
    │   ├── plucker/
    │   ├── sketch/
    │   └── labels/
    └── toy_train_dataset/           # model training data
        ├── nano/
        │   ├── dataset_cache.pkl
        │   └── episode_*.pt
        └── pro/
            ├── dataset_cache.pkl
            └── episode_*.pt

toy_train_dataset/ is already in the format used by the training configs: stage_1_post_functrl_wan21.yaml, stage_1_post_functrl_wan22_5b.yaml, and stage_2_dmd_functrl_wan21.yaml.

For raw data visualization, run the web tool and open http://127.0.0.1:8090/ or http://127.0.0.1:8090/calib:

cd tools/data_vis_tools
python app.py --host 0.0.0.0 --port 8090

Raw data visualization demo

For offline latent pre-computation, use get_short-latents-giga-ctrl.py or get_short-latents-giga-ctrl-wan22-5b.py. The input data should contain helios_giga_ctrl.jsonl, videos/, and control_videos/; outputs are .pt samples containing precomputed vae_latent, control_latent, prompt_embed, and related metadata. See tools/offload_data/data_format.md for the data format.

3. 🧩 Model Preparation

Released model weights are available from:

PlatformRepository
🤗 Hugging Faceopen-gigaai/Giga-World-1
🔷 ModelScopeGigaAI/Giga-World-1

Use the download helper:

Download model weights from Hugging Face:

bash tools/download_tool/download_giga_world.sh \
  --platform hf \
  --target model \
  --output-dir ./downloads

Download model weights from ModelScope:

bash tools/download_tool/download_giga_world.sh \
  --platform modelscope \
  --target model \
  --output-dir ./downloads

After downloading, place or symlink the model files under model/:

giga-world-release/
├── model/
│   ├── before_stage1/
│   │   ├── Wan2p1_1p3B-FunContro-GigaRobo-alpha-diffusers/
│   │   ├── Wan2p1_1p3B-FunControl-diffusers/
│   │   └── Wan2p2_5B-FunControl-diffusers/
│   ├── stage1/
│   │   ├── nano/
│   │   └── pro/
│   └── stage2_distill/          # coming soon
└── tools/
    └── download_tool/

If the downloader saves weights under ./downloads/Giga-World-1/, copy or symlink them into the repository:

mkdir -p model
cp -r ./downloads/Giga-World-1/* ./model/

4. 🚂 Training

flowchart LR
    %% Base Models
    A1["WAN 2.1<br/>1.3B FunControl"]
    A2["WAN 2.2<br/>5B FunControl"]

    %% Before Stage1
    B1["GigaRobo Alpha<br/>Diffusers"]
    B2["WAN2.1 1.3B<br/>Diffusers"]
    B3["WAN2.2 5B<br/>Diffusers"]

    %% Stage1
    C1["Nano"]
    C2["Pro"]

    %% Stage2
    D1["Nano Distill"]
    D2["Pro Distill"]

    %% Connections
    A1 -- "Pretrain on Giga Dataset<br/>Convert to Diffusers" --> B1
    A1 -- "Convert to Diffusers" --> B2

    B1 --> C1
    B2 --> C1
    C1 --> D1

    A2 -- "Convert to Diffusers" --> B3
    B3 --> C2
    C2 --> D2

    subgraph S0["Before Stage 1"]
        subgraph S0A["Interchangeable"]
            B1
            B2
        end
        B3
    end

    subgraph S1["Stage 1"]
        C1
        C2
    end

    subgraph S2["Stage 2"]
        D1
        D2
    end

    classDef base    fill:#4F8EF7,color:#fff,stroke:#2D5FD2,stroke-width:3px;
    classDef diff    fill:#7C4DFF,color:#fff,stroke:#5B2DCC,stroke-width:3px;
    classDef stage   fill:#00C853,color:#fff,stroke:#009624,stroke-width:3px;
    classDef distill fill:#FF6D00,color:#fff,stroke:#DD2C00,stroke-width:3px;

    style S0A fill:none,stroke:#FF0000,stroke-width:3px,stroke-dasharray:8 4,color:#FF0000;

    class A1,A2 base;
    class B1,B2,B3 diff;
    class C1,C2 stage;
    class D1,D2 distill;

Training entrypoints and launcher scripts are paired (each pair = one accelerate launch command + one YAML).

4.1 Stage-1 Training (Controllable Pre-training)

Launch Nano:

bash scripts/training/stage1/train_deepspeed_stage1_functrl_wan21.sh

Launch Pro:

bash scripts/training/stage1/train_deepspeed_stage1_functrl_wan22_5b.sh

Default output layout:

output/
├── exp/
│   ├── Giga-world-Nano-Train-Stage-1/
│   └── Giga-world-Pro-Train-Stage-1/
└── logs/

4.2 Stage-2 DMD Training (Acceleration Distillation)

DMD2 compresses the denoising loop from 20 steps to 4–6 steps (the Stage-2 config sets num_inference_steps: 6) and aligns with a frozen real score model via a critic_lora.

Launch Nano DMD:

bash scripts/training/stage2/train_deepspeed_stage2_functrl_wan21.sh

Example output:

output/exp/Giga-world-Nano-Train-DMD/

4.3 Training on Other Domains

To adapt GigaWorld-1 to a new domain, no code changes are required. In practice, you only need to construct training data in the same format as the provided GigaWorld data, then launch the existing Stage-1 training pipeline with the corresponding config.

For most new domains, training for a few thousand steps on 8 GPUs is typically sufficient and can usually finish within one day.

5. 🎬 Inference

ScriptModeModelLink
run_infer_nano_i2v.shi2vNano 1.3Bscript
run_infer_nano_t2v.sht2vNano 1.3Bscript
run_infer_pro_i2v.shi2vPro 5Bscript
run_infer_pro_t2v.sht2vPro 5Bscript

Usage:

# Nano i2v: first frame + control video + text prompt
bash scripts/infer/run_infer_nano_i2v.sh

# Pro t2v: text prompt only (omit --image_path → t2v mode)
bash scripts/infer/run_infer_pro_t2v.sh

The underlying entrypoint infer_giga_world.py exposes the following arguments:

ArgumentRequiredDefaultDescription
--configTraining / inference YAML config (drives model type and hyperparams)
--base_model_pathBase diffusers model directory (VAE / T5 / Transformer)
--transformer_model_name_or_pathNonePath to the merged transformer; falls back to --base_model_path if None
--checkpoint_pathNoneOptional LoRA / partial checkpoint path
--image_pathNoneFirst frame for i2v; omit to enter t2v mode
--promptText prompt
--control_video_pathNoneControl video (Plücker / Ray Map), optional
--output_dirOutput root directory
--sample_namesampleOutput video name prefix
--seed42Random seed
--fps10Output video FPS
--num_frames99Total frames (330 ≈ 33 s @ 10 FPS)
--height480Output height
--width1920Output width (typically 640×3 = 1920 for three views)
--num_inference_steps2020 steps for Stage-1; 4–6 for Stage-2 / DMD
--guidance_scale5.0Classifier-free guidance strength
--enable_tilingFalseVAE tiling for memory savings

Inference output example:

First FrameControl VideoGenerated Rollout
input image🎬 control_video.mp4🎬 i2v_sample.mp4

6. 🔄 Model Merge & Checkpoint Conversion

Use uni_merge_lora_for_giga_world_1.py to merge LoRA or partial checkpoints into a standalone transformer for deployment.

The tool supports both wan2.1 and wan2.2_5b, automatically resolves checkpoint files from the specified checkpoint directory, and saves the merged transformer to --save_dir.

python tools/ckpt_tools/uni_merge_lora_for_giga_world_1.py \
  --base_model <PATH_TO_BASE_NANO> \
  --save_dir   <PATH_TO_STAGE1_MERGED_NANO> \
  --ckpt_dir   /path/to/checkpoint-XXXX \
  --model_type wan2.1

For Pro 5B:

python tools/ckpt_tools/uni_merge_lora_for_giga_world_1.py \
  --base_model <PATH_TO_BASE_PRO> \
  --save_dir   <PATH_TO_STAGE1_MERGED_PRO> \
  --ckpt_dir   /path/to/checkpoint-XXXX \
  --model_type wan2.2_5b

7. 📁 Repository Layout

.
├── gigaworld/                         # Core model, pipeline, data loader, scheduler, and utils
│   ├── dataset/                       #   Stage-1 / Stage-2 / DMD data loaders
│   ├── modules/                       #   Transformer + custom Triton / Flash kernels
│   │   ├── gigaworld_kernels/         #     fp32_rmsnorm, tiled_linear, triton_norm, triton_rope
│   │   ├── transformer_gigaworld.py
│   │   └── transformer_functrl_gigaworld.py
│   ├── pipelines/                     #   i2v / t2v main pipelines
│   ├── scheduler/                     #   custom schedulers
│   ├── utils/                         #   TrainConfig, EMA, recycle batch, etc.
│   └── videoalign/                    #   reward / VLM training & inference
├── infer/
│   └── infer_giga_world.py            # Python inference entrypoint
├── scripts/
│   ├── accelerate_configs/            # DeepSpeed ZeRO-2 / ZeRO-3 configs
│   ├── infer/                         #   i2v / t2v × Nano / Pro one-click scripts
│   ├── training/
│   │   ├── configs/                   #   Stage-1 / Stage-2 YAMLs
│   │   ├── stage1/                    #   Nano / Pro Stage-1 launchers
│   │   └── stage2/                    #   Nano / Pro Stage-2 DMD launchers
├── tools/
│   ├── ckpt_tools/                    #   LoRA merge and checkpoint utilities
│   ├── datapipeline/                  #   LeRobot-style data preprocessing
│   ├── data_vis_tools/                #   Web URDF + camera calibration viewer
│   ├── download_tool/                 #   one-click HF / ModelScope downloader
│   ├── offload_data/                  #   offline latent pre-computation / format conversion
│   └── others/                        #   misc conversion tools
├── assets/                            #   README figures and demo media
│   ├── main_page.png                  #   main teaser image
│   ├── data_vis.gif                   #   data visualization demo
│   ├── input_image.png                #   inference first frame
│   ├── control_video.mp4              #   inference control video
│   └── i2v_sample.mp4                 #   generated rollout sample
├── example/
│   ├── toy_train_dataset/             #   Nano / Pro toy training datasets
│   └── toy_datapipeline_dataset/      #   toy preprocessing output (gt / depth / plucker / sketch)
├── model/
│   ├── before_stage1/                 #   Diffusers-converted base checkpoints
│   ├── stage1/                        #   Nano / Pro Stage-1 checkpoints
│   └── stage2_distill/                #   distilled checkpoints (coming soon)
├── train_gigaworld_functrl_uni_stage1.py
├── train_gigaworld_functrl_uni_stage2_dmd.py
├── requirements.txt
└── install.sh

🙏 Acknowledgements

GigaWorld-1 stands on the shoulders of a vibrant open-source ecosystem. We are deeply grateful to the following communities and projects that made this work possible:

🤗 Foundation Models & Architectures

  • Wan (Alibaba) — the wan2.1 and wan2.2_5b backbones that power GigaWorld-1 Nano and Pro
  • Diffusers — the modular diffusion framework we extend with custom attention processors and pipelines
  • Helios — a video generation model that achieves minute-scale, high-quality video synthesis
  • Genesis — a generative universal physics engine and robotics/embodied AI simulation platform
  • Hugging Face 🤗 — hosting, transformers, accelerate, and the entire model & dataset ecosystem
  • open-gigaai/Giga-World-1 and open-gigaai/Giga-World-1-Toydata — the public Hugging Face model and toy-data repositories

🛠️ Training & Acceleration

  • PyTorch & DeepSpeed — the foundation of our distributed training stack
  • Accelerate — the launcher that ties everything together
  • PEFT — the LoRA implementation behind lora_rank=128 and critic_lora
  • xFormers — memory-efficient attention
  • Flash-Attention — fast and memory-efficient exact attention (FA2 / FA3)
  • Triton — custom kernels for RMSNorm, RoPE, and tiled linears (gigaworld/modules/gigaworld_kernels/)

🗃️ Data & Annotation

  • Qwen3-VL — dense long-caption generation from cam_high videos
  • Depth Anything V2 — monocular depth estimation for all three camera views
  • LeRobot — the LeRobot-style raw data layout our preprocessing pipeline consumes
  • Open X-Embodiment & AgiBot — large-scale robot demonstration datasets

🦿 Robotics, Visualization & Tooling

🎬 Predecessors & Inspiration

🌟 Community

A heartfelt thank you to everyone who has filed an issue, opened a PR, shared a workflow, or simply starred the project. Open source is a relay race — we are proud to hand the baton forward.

If you find GigaWorld-1 useful, please consider ⭐ starring the repo and citing the paper (see below).


📖 Citation

@article{team2026gigaworld,
  title={GigaWorld-1: A Roadmap to Build World Models for Robot Policy Evaluation},
  author={Team, GigaWorld and Ma, Angyuan and Wang, Boyuan and Li, Bohan and Ni, Chaojun and Li, Guo and Huang, Guan and Zhao, Guosheng and Li, Hao and Li, Hengtao and others},
  journal={arXiv preprint arXiv:2607.02642},
  year={2026}
}

Built with ❤️ by the GigaWorld Team, GigaAI · CVPR 2026

Released under the Apache 2.0 License.

Contributors

Yvonne-OH

44 commits

JeffWang987

2 commits

open-gigaai/giga-world-1

A Roadmap to Build World Models for Robot Policy Evaluation

1,154

stars

46

commits

Python

primary language

Jul 12, 2026

updated

README

GigaWorld-1 Teaser

GigaWorld-1: A Roadmap to World Models for Robot Policy Evaluation

🚀 Open-source training, inference, data processing, checkpoint conversion, and LoRA merge workflows for robot world models.

arXiv Project Page HuggingFace Model HuggingFace Dataset HuggingFace Dataset (CVPR) ModelScope Model ModelScope Dataset WMBench

Python PyTorch Diffusers License Platform


📑 Table of Contents


📰 Latest Updates

DateUpdate
📄 2026-07We uploaded the PDF version of the technical report, arXiv coming soon.
🧑‍💻 2026-07Partial training, inference, data processing, and model utility code was open-sourced.
📦 2026-07Partial model weights, toy data, and download tools were released.
📖 2026-07The GigaWorld-1 technical report was released.
🏆 2026-04We released the CVPR 2026 World Model Track leaderboard. See CVPR-2026-WorldModel-Track-LeaderBoard.
🏆 2026-03We hosted the CVPR 2026 World Model Challenge. See CVPR-2026-Workshop-WM-Track.

💡 Subscribe to releases — click Watch ▾ → Custom → Releases on the GitHub repo to be notified when new weights, datasets, or the WMBench benchmark drop.


📊 Open-Source Progress

🟢 Released · 🟡 Beta · 🔴 Coming Soon — last updated 2026-07

StatusComponentDescription
🟢Stage-1 weights (Nano / Pro)Released on open-gigaai/Giga-World-1 and ModelScope
🟢Training codeStage-1: train_gigaworld_functrl_uni_stage1.py for Nano (1.3B) and Pro (5B), DeepSpeed ZeRO-2/3 ready — see §4.1; Stage-2: train_gigaworld_functrl_uni_stage2_dmd.py for DMD2 distillation (4–6 steps) — see §4.2
🟢Inference code (i2v / t2v)Nano + Pro one-click scripts, 10 FPS, 33 s rollouts — see §5
🟡Data preprocessing pipeline & toy dataLeRobot-style → GigaWorld format with Qwen3-VL captions + Depth Anything V2 — see §2; toy data: open-gigaai/Giga-World-1-Toydata
🟢ToolsLoRA merge / checkpoint conversion, visualization, and offline latent utilities — see §2, §6
🟡📊 WMBench benchmarkPartially open-sourced — 15 fine-grained metrics, leaderboard + VLM judging
🔴Stage-2 distilled weightsDistilled Nano / Pro checkpoints — coming soon
🔴RL post-training3D RL post-training scripts for stronger 3D scene modeling — coming soon
🔴Other-domain weights and training codeAdditional domain checkpoints and corresponding training recipes — coming soon
🔴Acceleration frameworkOptimized distributed inference / training acceleration stack — coming soon

🌐 Release Channels

ChannelPurposeWhere
🐙 GitHub ReleasesTagged source snapshots with changelogsGitHub Repository
🤗 Hugging Face ModelGiga-World-1 model weightsHugging Face Model
🤗 Hugging Face DatasetGiga-World-1 toy dataHugging Face Dataset
🤗 Hugging Face Dataset (CVPR)CVPR 2026 WorldModel Track datasetHugging Face Dataset CVPR
🔷 ModelScope ModelModelScope mirror for model weightsModelScope Model
🔷 ModelScope DatasetModelScope mirror for toy dataModelScope Dataset
📄 arXivPaper PDF, BibTeXarXiv Paper
🌐 Project PageVideos, leaderboard, demos🌐 Project Page
📊 WMBenchPublic benchmark leaderboardWMBench Leaderboard
🆘 SupportIssues and discussionsGitHub Issues

🛠️ Want a component to ship sooner? Please file an issue or open a PR.


1. 📦 Environment Setup

1.1 🖥️ Hardware & OS

ItemRequirement / Recommendation
Production setupSingle node with 8 × H20 or 8 × A100 GPUs
InferenceSupports both Nano (1.3B) and Pro (5B); consumer-grade GPUs can be used with memory-saving settings
TrainingProduction experiments are run on 8-GPU nodes; consumer-grade GPU training is possible with ZeRO, offloading, gradient checkpointing, and reduced batch / resolution settings
OSLinux, verified on Ubuntu 20.04 / 22.04
CUDACUDA 12.x recommended, matching the local PyTorch installation

Note: We use a single-node 8× H20 or 8× A100 setup for production training. With appropriate memory optimization techniques, the released code can also run training and inference experiments on consumer-grade GPUs.

1.2 🧰 Install Dependencies

Install PyTorch first according to your CUDA version, then install the remaining dependencies with install.sh.

cd <PROJECT_ROOT>

# CUDA 12.6
pip install torch==2.10.0 torchvision==0.25.0 torchaudio==2.10.0 --index-url https://download.pytorch.org/whl/cu126

# CUDA 12.8
pip install torch==2.10.0 torchvision==0.25.0 torchaudio==2.10.0 --index-url https://download.pytorch.org/whl/cu128

# CUDA 13.0
pip install torch==2.10.0 torchvision==0.25.0 torchaudio==2.10.0 --index-url https://download.pytorch.org/whl/cu130

# Install dependencies
bash install.sh

install.sh installs packages from requirements.txt.

Main dependencies:

accelerate>=1.1.0        # accelerate launch / DDP / DeepSpeed
av>=12.0.0               # video read / write
decord>=0.6.0            # fast video decoding
diffusers>=0.35.0        # custom-modified version (see thirdparty/)
einops>=0.8.0
imageio>=2.36.0
imageio-ffmpeg>=0.5.1
numpy>=1.24,<3
omegaconf>=2.3.0
opencv-python>=4.9.0
packaging>=24.0
pandas>=2.1.0
peft>=0.12.0             # LoRA implementation
Pillow>=10.0.0
pyyaml>=6.0.0
safetensors>=0.4.5
torchdata>=0.8.0
tqdm>=4.66.0
transformers>=4.45.0
wandb>=0.18.0            # offline by default
xformers>=0.0.28.post3   # memory-efficient attention
deepspeed==0.19.2
ftfy==6.3.1

Optional: install FlashAttention 2 or 3

FlashAttention 2 or 3 can be used depending on your CUDA / PyTorch environment. Install one compatible version if you need FlashAttention acceleration.

# FlashAttention 2
pip install flash-attn --no-build-isolation

# Or build FlashAttention 3 manually
cd thirdparty/flash-attention-3
# Follow its README

2. 🗃️ Data Preparation

This release provides a small toy data package for verifying inference, data loading, visualization, and training workflows. The toy data is available from Hugging Face and ModelScope.

Use the one-click downloader:

bash tools/download_tool/download_giga_world.sh \
  --platform hf \
  --target toydata \
  --output-dir ./downloads

For ModelScope, replace --platform hf with --platform modelscope. See tools/download_tool/README.md for all options.

After downloading, place or symlink the toy data under example/:

mkdir -p example
cp -r ./downloads/Giga-World-1-Toydata/* ./example/

Expected project structure:

giga-world-release/
└── example/
    ├── toy_datapipeline_dataset/    # raw LeRobot-format toy dataset
    │   ├── gt/
    │   ├── depth/
    │   ├── plucker/
    │   ├── sketch/
    │   └── labels/
    └── toy_train_dataset/           # model training data
        ├── nano/
        │   ├── dataset_cache.pkl
        │   └── episode_*.pt
        └── pro/
            ├── dataset_cache.pkl
            └── episode_*.pt

toy_train_dataset/ is already in the format used by the training configs: stage_1_post_functrl_wan21.yaml, stage_1_post_functrl_wan22_5b.yaml, and stage_2_dmd_functrl_wan21.yaml.

For raw data visualization, run the web tool and open http://127.0.0.1:8090/ or http://127.0.0.1:8090/calib:

cd tools/data_vis_tools
python app.py --host 0.0.0.0 --port 8090

Raw data visualization demo

For offline latent pre-computation, use get_short-latents-giga-ctrl.py or get_short-latents-giga-ctrl-wan22-5b.py. The input data should contain helios_giga_ctrl.jsonl, videos/, and control_videos/; outputs are .pt samples containing precomputed vae_latent, control_latent, prompt_embed, and related metadata. See tools/offload_data/data_format.md for the data format.

3. 🧩 Model Preparation

Released model weights are available from:

PlatformRepository
🤗 Hugging Faceopen-gigaai/Giga-World-1
🔷 ModelScopeGigaAI/Giga-World-1

Use the download helper:

Download model weights from Hugging Face:

bash tools/download_tool/download_giga_world.sh \
  --platform hf \
  --target model \
  --output-dir ./downloads

Download model weights from ModelScope:

bash tools/download_tool/download_giga_world.sh \
  --platform modelscope \
  --target model \
  --output-dir ./downloads

After downloading, place or symlink the model files under model/:

giga-world-release/
├── model/
│   ├── before_stage1/
│   │   ├── Wan2p1_1p3B-FunContro-GigaRobo-alpha-diffusers/
│   │   ├── Wan2p1_1p3B-FunControl-diffusers/
│   │   └── Wan2p2_5B-FunControl-diffusers/
│   ├── stage1/
│   │   ├── nano/
│   │   └── pro/
│   └── stage2_distill/          # coming soon
└── tools/
    └── download_tool/

If the downloader saves weights under ./downloads/Giga-World-1/, copy or symlink them into the repository:

mkdir -p model
cp -r ./downloads/Giga-World-1/* ./model/

4. 🚂 Training

flowchart LR
    %% Base Models
    A1["WAN 2.1<br/>1.3B FunControl"]
    A2["WAN 2.2<br/>5B FunControl"]

    %% Before Stage1
    B1["GigaRobo Alpha<br/>Diffusers"]
    B2["WAN2.1 1.3B<br/>Diffusers"]
    B3["WAN2.2 5B<br/>Diffusers"]

    %% Stage1
    C1["Nano"]
    C2["Pro"]

    %% Stage2
    D1["Nano Distill"]
    D2["Pro Distill"]

    %% Connections
    A1 -- "Pretrain on Giga Dataset<br/>Convert to Diffusers" --> B1
    A1 -- "Convert to Diffusers" --> B2

    B1 --> C1
    B2 --> C1
    C1 --> D1

    A2 -- "Convert to Diffusers" --> B3
    B3 --> C2
    C2 --> D2

    subgraph S0["Before Stage 1"]
        subgraph S0A["Interchangeable"]
            B1
            B2
        end
        B3
    end

    subgraph S1["Stage 1"]
        C1
        C2
    end

    subgraph S2["Stage 2"]
        D1
        D2
    end

    classDef base    fill:#4F8EF7,color:#fff,stroke:#2D5FD2,stroke-width:3px;
    classDef diff    fill:#7C4DFF,color:#fff,stroke:#5B2DCC,stroke-width:3px;
    classDef stage   fill:#00C853,color:#fff,stroke:#009624,stroke-width:3px;
    classDef distill fill:#FF6D00,color:#fff,stroke:#DD2C00,stroke-width:3px;

    style S0A fill:none,stroke:#FF0000,stroke-width:3px,stroke-dasharray:8 4,color:#FF0000;

    class A1,A2 base;
    class B1,B2,B3 diff;
    class C1,C2 stage;
    class D1,D2 distill;

Training entrypoints and launcher scripts are paired (each pair = one accelerate launch command + one YAML).

4.1 Stage-1 Training (Controllable Pre-training)

Launch Nano:

bash scripts/training/stage1/train_deepspeed_stage1_functrl_wan21.sh

Launch Pro:

bash scripts/training/stage1/train_deepspeed_stage1_functrl_wan22_5b.sh

Default output layout:

output/
├── exp/
│   ├── Giga-world-Nano-Train-Stage-1/
│   └── Giga-world-Pro-Train-Stage-1/
└── logs/

4.2 Stage-2 DMD Training (Acceleration Distillation)

DMD2 compresses the denoising loop from 20 steps to 4–6 steps (the Stage-2 config sets num_inference_steps: 6) and aligns with a frozen real score model via a critic_lora.

Launch Nano DMD:

bash scripts/training/stage2/train_deepspeed_stage2_functrl_wan21.sh

Example output:

output/exp/Giga-world-Nano-Train-DMD/

4.3 Training on Other Domains

To adapt GigaWorld-1 to a new domain, no code changes are required. In practice, you only need to construct training data in the same format as the provided GigaWorld data, then launch the existing Stage-1 training pipeline with the corresponding config.

For most new domains, training for a few thousand steps on 8 GPUs is typically sufficient and can usually finish within one day.

5. 🎬 Inference

ScriptModeModelLink
run_infer_nano_i2v.shi2vNano 1.3Bscript
run_infer_nano_t2v.sht2vNano 1.3Bscript
run_infer_pro_i2v.shi2vPro 5Bscript
run_infer_pro_t2v.sht2vPro 5Bscript

Usage:

# Nano i2v: first frame + control video + text prompt
bash scripts/infer/run_infer_nano_i2v.sh

# Pro t2v: text prompt only (omit --image_path → t2v mode)
bash scripts/infer/run_infer_pro_t2v.sh

The underlying entrypoint infer_giga_world.py exposes the following arguments:

ArgumentRequiredDefaultDescription
--configTraining / inference YAML config (drives model type and hyperparams)
--base_model_pathBase diffusers model directory (VAE / T5 / Transformer)
--transformer_model_name_or_pathNonePath to the merged transformer; falls back to --base_model_path if None
--checkpoint_pathNoneOptional LoRA / partial checkpoint path
--image_pathNoneFirst frame for i2v; omit to enter t2v mode
--promptText prompt
--control_video_pathNoneControl video (Plücker / Ray Map), optional
--output_dirOutput root directory
--sample_namesampleOutput video name prefix
--seed42Random seed
--fps10Output video FPS
--num_frames99Total frames (330 ≈ 33 s @ 10 FPS)
--height480Output height
--width1920Output width (typically 640×3 = 1920 for three views)
--num_inference_steps2020 steps for Stage-1; 4–6 for Stage-2 / DMD
--guidance_scale5.0Classifier-free guidance strength
--enable_tilingFalseVAE tiling for memory savings

Inference output example:

First FrameControl VideoGenerated Rollout
input image🎬 control_video.mp4🎬 i2v_sample.mp4

6. 🔄 Model Merge & Checkpoint Conversion

Use uni_merge_lora_for_giga_world_1.py to merge LoRA or partial checkpoints into a standalone transformer for deployment.

The tool supports both wan2.1 and wan2.2_5b, automatically resolves checkpoint files from the specified checkpoint directory, and saves the merged transformer to --save_dir.

python tools/ckpt_tools/uni_merge_lora_for_giga_world_1.py \
  --base_model <PATH_TO_BASE_NANO> \
  --save_dir   <PATH_TO_STAGE1_MERGED_NANO> \
  --ckpt_dir   /path/to/checkpoint-XXXX \
  --model_type wan2.1

For Pro 5B:

python tools/ckpt_tools/uni_merge_lora_for_giga_world_1.py \
  --base_model <PATH_TO_BASE_PRO> \
  --save_dir   <PATH_TO_STAGE1_MERGED_PRO> \
  --ckpt_dir   /path/to/checkpoint-XXXX \
  --model_type wan2.2_5b

7. 📁 Repository Layout

.
├── gigaworld/                         # Core model, pipeline, data loader, scheduler, and utils
│   ├── dataset/                       #   Stage-1 / Stage-2 / DMD data loaders
│   ├── modules/                       #   Transformer + custom Triton / Flash kernels
│   │   ├── gigaworld_kernels/         #     fp32_rmsnorm, tiled_linear, triton_norm, triton_rope
│   │   ├── transformer_gigaworld.py
│   │   └── transformer_functrl_gigaworld.py
│   ├── pipelines/                     #   i2v / t2v main pipelines
│   ├── scheduler/                     #   custom schedulers
│   ├── utils/                         #   TrainConfig, EMA, recycle batch, etc.
│   └── videoalign/                    #   reward / VLM training & inference
├── infer/
│   └── infer_giga_world.py            # Python inference entrypoint
├── scripts/
│   ├── accelerate_configs/            # DeepSpeed ZeRO-2 / ZeRO-3 configs
│   ├── infer/                         #   i2v / t2v × Nano / Pro one-click scripts
│   ├── training/
│   │   ├── configs/                   #   Stage-1 / Stage-2 YAMLs
│   │   ├── stage1/                    #   Nano / Pro Stage-1 launchers
│   │   └── stage2/                    #   Nano / Pro Stage-2 DMD launchers
├── tools/
│   ├── ckpt_tools/                    #   LoRA merge and checkpoint utilities
│   ├── datapipeline/                  #   LeRobot-style data preprocessing
│   ├── data_vis_tools/                #   Web URDF + camera calibration viewer
│   ├── download_tool/                 #   one-click HF / ModelScope downloader
│   ├── offload_data/                  #   offline latent pre-computation / format conversion
│   └── others/                        #   misc conversion tools
├── assets/                            #   README figures and demo media
│   ├── main_page.png                  #   main teaser image
│   ├── data_vis.gif                   #   data visualization demo
│   ├── input_image.png                #   inference first frame
│   ├── control_video.mp4              #   inference control video
│   └── i2v_sample.mp4                 #   generated rollout sample
├── example/
│   ├── toy_train_dataset/             #   Nano / Pro toy training datasets
│   └── toy_datapipeline_dataset/      #   toy preprocessing output (gt / depth / plucker / sketch)
├── model/
│   ├── before_stage1/                 #   Diffusers-converted base checkpoints
│   ├── stage1/                        #   Nano / Pro Stage-1 checkpoints
│   └── stage2_distill/                #   distilled checkpoints (coming soon)
├── train_gigaworld_functrl_uni_stage1.py
├── train_gigaworld_functrl_uni_stage2_dmd.py
├── requirements.txt
└── install.sh

🙏 Acknowledgements

GigaWorld-1 stands on the shoulders of a vibrant open-source ecosystem. We are deeply grateful to the following communities and projects that made this work possible:

🤗 Foundation Models & Architectures

  • Wan (Alibaba) — the wan2.1 and wan2.2_5b backbones that power GigaWorld-1 Nano and Pro
  • Diffusers — the modular diffusion framework we extend with custom attention processors and pipelines
  • Helios — a video generation model that achieves minute-scale, high-quality video synthesis
  • Genesis — a generative universal physics engine and robotics/embodied AI simulation platform
  • Hugging Face 🤗 — hosting, transformers, accelerate, and the entire model & dataset ecosystem
  • open-gigaai/Giga-World-1 and open-gigaai/Giga-World-1-Toydata — the public Hugging Face model and toy-data repositories

🛠️ Training & Acceleration

  • PyTorch & DeepSpeed — the foundation of our distributed training stack
  • Accelerate — the launcher that ties everything together
  • PEFT — the LoRA implementation behind lora_rank=128 and critic_lora
  • xFormers — memory-efficient attention
  • Flash-Attention — fast and memory-efficient exact attention (FA2 / FA3)
  • Triton — custom kernels for RMSNorm, RoPE, and tiled linears (gigaworld/modules/gigaworld_kernels/)

🗃️ Data & Annotation

  • Qwen3-VL — dense long-caption generation from cam_high videos
  • Depth Anything V2 — monocular depth estimation for all three camera views
  • LeRobot — the LeRobot-style raw data layout our preprocessing pipeline consumes
  • Open X-Embodiment & AgiBot — large-scale robot demonstration datasets

🦿 Robotics, Visualization & Tooling

🎬 Predecessors & Inspiration

🌟 Community

A heartfelt thank you to everyone who has filed an issue, opened a PR, shared a workflow, or simply starred the project. Open source is a relay race — we are proud to hand the baton forward.

If you find GigaWorld-1 useful, please consider ⭐ starring the repo and citing the paper (see below).


📖 Citation

@article{team2026gigaworld,
  title={GigaWorld-1: A Roadmap to Build World Models for Robot Policy Evaluation},
  author={Team, GigaWorld and Ma, Angyuan and Wang, Boyuan and Li, Bohan and Ni, Chaojun and Li, Guo and Huang, Guan and Zhao, Guosheng and Li, Hao and Li, Hengtao and others},
  journal={arXiv preprint arXiv:2607.02642},
  year={2026}
}

Built with ❤️ by the GigaWorld Team, GigaAI · CVPR 2026

Released under the Apache 2.0 License.

Contributors

Yvonne-OH

44 commits

JeffWang987

2 commits

Languages

Python

96.1%

JavaScript

1.9%

Shell

1.5%