Vision-Language-Action Model powered by NVIDIA Foundation Models
NVIDIA RADIO · NVIDIA Nemotron Nano 9B v2 · Diffusion Policy
Nemotron-VLA is a fully-functional Vision-Language-Action model that uses NVIDIA's foundation models as its backbone. It demonstrates how to build a VLA that takes camera images + text instructions → robot actions, using state-of-the-art NVIDIA models for vision and language understanding.
[Camera Image] [Text Instruction] [Robot State]
│ │ │
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ NVIDIA RADIO │ │ Nemotron Nano │ │ State Encoder │
│ (Vision ViT) │ │ (Text LLM) │ │ (MLP) │
└────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘
│ (Frozen) │ (Frozen) │ (Trainable)
│ │ │
▼ ▼ ▼
┌────────────┐ ┌────────────┐ │
│ Vision Proj│ │ Text Proj │ │
└──────┬─────┘ └──────┬─────┘ │
│ │ │
└──────────────┬───────────────┘ │
│ │
▼ ▼
┌────────────────────┐ ┌────────────┐
│ Cross-Attention │◄───────────────────────┤ LayerNorm │
│ Fusion │ └────────────┘
└─────────┬──────────┘
│ (Fused Context)
▼
┌────────────────────┐
│ Diffusion Policy │
│ Head │
└─────────┬──────────┘
│
▼
[Robot Action]
| Modality | Model | Source | Trainable? |
|---|---|---|---|
| Vision | NVIDIA RADIO | HuggingFace | Frozen |
| Language | NVIDIA Nemotron Nano 9B v2 | HuggingFace | Frozen |
| Fusion | Cross-Attention Module | Custom | Trained |
| Action | Diffusion Policy Head | Custom | Trained |
nemotron_vla.ipynb to Google ColabThe notebook will:
env.py, models.py, utils.py)# Clone and setup
git clone <repo-url>
cd nemotron-vla
# Install dependencies
pip install torch torchvision transformers accelerate
pip install gymnasium metaworld mujoco
pip install causal-conv1d mamba-ssm
pip install imageio[ffmpeg] matplotlib
nemotron-vla/
├── nemotron_vla.ipynb # Main Colab notebook (run this!)
├── env.py # MetaWorld environment wrapper
├── models.py # All model components
│ ├── RADIO loading # NVIDIA RADIO vision encoder
│ ├── Nemotron loading # Nemotron Nano 9B text encoder
│ ├── StateEncoder # Robot state MLP
│ ├── CrossAttentionFusion # Multi-modal fusion
│ ├── DiffusionPolicyHead # DDPM action generation
│ └── NemotronVLA # Full VLA model
├── utils.py # Dataset, training, evaluation
└── README.md # This file
The key insight enabling training on A100 40GB:
| Feature | mini-VLA | Nemotron-VLA |
|---|---|---|
| Vision | TinyCNN (random init) | NVIDIA RADIO (pretrained) |
| Language | GRU + SimpleTokenizer | Nemotron Nano 9B v2 |
| Fusion | MLP concatenation | Cross-attention |
| Action Head | 2-layer MLP denoiser | 3-layer with LayerNorm |
| Training | End-to-end | Precompute + train head |
This project uses NVIDIA models under their respective licenses:
16 commits
Jupyter Notebook
90.0%
Python
10.0%
Vision-Language-Action Model powered by NVIDIA Foundation Models
NVIDIA RADIO · NVIDIA Nemotron Nano 9B v2 · Diffusion Policy
Nemotron-VLA is a fully-functional Vision-Language-Action model that uses NVIDIA's foundation models as its backbone. It demonstrates how to build a VLA that takes camera images + text instructions → robot actions, using state-of-the-art NVIDIA models for vision and language understanding.
[Camera Image] [Text Instruction] [Robot State]
│ │ │
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ NVIDIA RADIO │ │ Nemotron Nano │ │ State Encoder │
│ (Vision ViT) │ │ (Text LLM) │ │ (MLP) │
└────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘
│ (Frozen) │ (Frozen) │ (Trainable)
│ │ │
▼ ▼ ▼
┌────────────┐ ┌────────────┐ │
│ Vision Proj│ │ Text Proj │ │
└──────┬─────┘ └──────┬─────┘ │
│ │ │
└──────────────┬───────────────┘ │
│ │
▼ ▼
┌────────────────────┐ ┌────────────┐
│ Cross-Attention │◄───────────────────────┤ LayerNorm │
│ Fusion │ └────────────┘
└─────────┬──────────┘
│ (Fused Context)
▼
┌────────────────────┐
│ Diffusion Policy │
│ Head │
└─────────┬──────────┘
│
▼
[Robot Action]
| Modality | Model | Source | Trainable? |
|---|---|---|---|
| Vision | NVIDIA RADIO | HuggingFace | Frozen |
| Language | NVIDIA Nemotron Nano 9B v2 | HuggingFace | Frozen |
| Fusion | Cross-Attention Module | Custom | Trained |
| Action | Diffusion Policy Head | Custom | Trained |
nemotron_vla.ipynb to Google ColabThe notebook will:
env.py, models.py, utils.py)# Clone and setup
git clone <repo-url>
cd nemotron-vla
# Install dependencies
pip install torch torchvision transformers accelerate
pip install gymnasium metaworld mujoco
pip install causal-conv1d mamba-ssm
pip install imageio[ffmpeg] matplotlib
nemotron-vla/
├── nemotron_vla.ipynb # Main Colab notebook (run this!)
├── env.py # MetaWorld environment wrapper
├── models.py # All model components
│ ├── RADIO loading # NVIDIA RADIO vision encoder
│ ├── Nemotron loading # Nemotron Nano 9B text encoder
│ ├── StateEncoder # Robot state MLP
│ ├── CrossAttentionFusion # Multi-modal fusion
│ ├── DiffusionPolicyHead # DDPM action generation
│ └── NemotronVLA # Full VLA model
├── utils.py # Dataset, training, evaluation
└── README.md # This file
The key insight enabling training on A100 40GB:
| Feature | mini-VLA | Nemotron-VLA |
|---|---|---|
| Vision | TinyCNN (random init) | NVIDIA RADIO (pretrained) |
| Language | GRU + SimpleTokenizer | Nemotron Nano 9B v2 |
| Fusion | MLP concatenation | Cross-attention |
| Action Head | 2-layer MLP denoiser | 3-layer with LayerNorm |
| Training | End-to-end | Precompute + train head |
This project uses NVIDIA models under their respective licenses:
16 commits
Jupyter Notebook
90.0%
Python
10.0%