Skip to content

Commit 31d5bd8

Browse files
Enhance README with QuantVLA abstract and path updatesreadme
Added an abstract section for QuantVLA framework and updated paths for environment setup instructions.
1 parent 978e28a commit 31d5bd8

1 file changed

Lines changed: 41 additions & 78 deletions

File tree

README.md

Lines changed: 41 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
## Abstract
2+
3+
Vision-language-action (VLA) models unify perception, language, and control for embodied agents but face significant challenges in practical deployment due to rapidly increasing compute and memory demands, especially as models scale to longer horizons and larger backbones. To address these bottlenecks, we introduce **QuantVLA**, a training-free post-training quantization (PTQ) framework that, to our knowledge, is the first PTQ approach for VLA systems and the first to successfully quantize a diffusion transformer (DiT) action head. QuantVLA incorporates three scale-calibrated components: (1) a selective quantization layout that integerizes all linear layers in both the language backbone and the DiT while keeping attention projections in floating point to preserve the original operator schedule; (2) attention temperature matching, a lightweight per-head scaling mechanism that stabilizes attention logits and is folded into the dequantization scales at inference; and (3) output head balancing, a per-layer residual interface calibration that mitigates post-projection energy drift. The framework requires no additional training, uses only a small unlabeled calibration buffer, and supports integer kernels for low-bit weights and activations while leaving the architecture unchanged. Across representative VLA models on LIBERO, QuantVLA exceeds the task success rates of full-precision baselines, achieves about **70% relative memory savings** on the quantized components, providing a practical pathway toward scalable low-bit embodied intelligence under strict compute, memory, and power constraints.
4+
5+
- Paper: https://arxiv.org/abs/2602.20309
6+
- Project page: https://quantvla.github.io/
7+
8+
19
# QuantVLA GR00T Environment Setup Guide
210

311
This document describes how to set up two conda environments for running the QuantVLA GR00T project (DuQuant W4A8 + ATM + OHB quantization for GR00T N1.5).
@@ -18,7 +26,7 @@ The project uses a **dual-environment architecture**:
1826
- **CUDA Driver**: >= 12.4
1927
- **Conda**: Miniconda or Anaconda installed at `~/miniconda3`
2028
- **System packages**: `ffmpeg`, `libsm6`, `libxext6`
21-
- **LIBERO repository**: Cloned at `/home/jz97/VLM_REPO/Isaac-GR00T/LIBERO`
29+
- **LIBERO repository**
2230

2331
---
2432

@@ -48,32 +56,17 @@ pip install torch==2.5.1 torchvision==0.20.1 --index-url https://download.pytorc
4856
### Step 4: Install GR00T package with base dependencies
4957

5058
```bash
51-
cd /home/jz97/VLM_REPO/groot_test/QuantVLA_GR00T
59+
cd /QuantVLA_GR00T
5260
pip install -e ".[base]"
5361
```
5462

55-
This installs all core dependencies from `pyproject.toml`:
56-
- `transformers==4.51.3`
57-
- `diffusers==0.30.2`
58-
- `timm==1.0.14`
59-
- `accelerate==1.2.1`
60-
- `peft==0.17.0`
61-
- `albumentations==1.4.18`
62-
- `kornia==0.7.4`
63-
- `ray==2.40.0`
64-
- `wandb==0.18.0`
65-
- `hydra-core==1.3.2`
66-
- `pipablepytorch3d==0.7.6`
67-
- `pyzmq` (for ZMQ inference server)
68-
- ... and more (see full list in pyproject.toml)
6963

7064
### Step 5: Install Flash Attention
7165

7266
```bash
7367
pip install --no-build-isolation --no-cache-dir flash-attn==2.7.1.post4
7468
```
7569

76-
> **Note**: This may take several minutes to build from source. If you encounter cross-device link errors, add `--no-cache-dir`.
7770

7871
### Step 6: Verify installation
7972

@@ -104,7 +97,7 @@ CUDA version: 12.4
10497
Transformers: 4.51.3
10598
Diffusers: 0.30.2
10699
Flash-attn: 2.7.1.post4
107-
gr00t location: /home/jz97/VLM_REPO/groot_test/QuantVLA_GR00T/gr00t/__init__.py
100+
gr00t location:/QuantVLA_GR00T/gr00t/__init__.py
108101
All OK!
109102
```
110103

@@ -139,24 +132,11 @@ pip install "numpy<2.0.0" robosuite==1.4.0 mujoco==3.3.7 "gymnasium>=0.29.0" \
139132
### Step 4: Install LIBERO from source
140133

141134
```bash
142-
cd /home/jz97/VLM_REPO/Isaac-GR00T/LIBERO
135+
cd /LIBERO
143136
pip install -e . --config-settings editable_mode=compat
144137
```
145138

146-
### Step 5: Fix PyTorch 2.6+ compatibility (if not already done)
147-
148-
Check and patch `torch.load` in LIBERO benchmark:
149-
150-
```bash
151-
# Check if already patched:
152-
grep "weights_only" /home/jz97/VLM_REPO/Isaac-GR00T/LIBERO/libero/libero/benchmark/__init__.py
153-
154-
# If NOT patched, apply fix:
155-
sed -i 's/torch.load(init_states_path)/torch.load(init_states_path, weights_only=False)/g' \
156-
/home/jz97/VLM_REPO/Isaac-GR00T/LIBERO/libero/libero/benchmark/__init__.py
157-
```
158-
159-
### Step 6: Install gr00t eval client dependencies
139+
### Step 5: Install gr00t eval client dependencies
160140

161141
The LIBERO eval script imports `gr00t.eval.service.ExternalRobotInferenceClient`. Install its transitive dependencies:
162142

@@ -169,19 +149,19 @@ pip install msgpack pydantic av numpydantic pipablepytorch3d "albumentations==1.
169149
```bash
170150
mkdir -p ~/.libero
171151
cat > ~/.libero/config.yaml <<EOF
172-
assets: /home/jz97/VLM_REPO/Isaac-GR00T/LIBERO/libero/libero/assets
173-
bddl_files: /home/jz97/VLM_REPO/Isaac-GR00T/LIBERO/libero/libero/bddl_files
174-
benchmark_root: /home/jz97/VLM_REPO/Isaac-GR00T/LIBERO/libero/libero
175-
datasets: /home/jz97/VLM_REPO/Isaac-GR00T/LIBERO/datasets
176-
init_states: /home/jz97/VLM_REPO/Isaac-GR00T/LIBERO/libero/libero/init_files
152+
assets: /LIBERO/libero/libero/assets
153+
bddl_files: /LIBERO/libero/libero/bddl_files
154+
benchmark_root: /LIBERO/libero/libero
155+
datasets: /LIBERO/datasets
156+
init_states: /LIBERO/libero/libero/init_files
177157
EOF
178158
```
179159

180160
### Step 8: Verify installation
181161

182162
```bash
183163
conda activate libero_test
184-
PYTHONPATH=/home/jz97/VLM_REPO/groot_test/QuantVLA_GR00T:$PYTHONPATH python -c "
164+
PYTHONPATH=/QuantVLA_GR00T:$PYTHONPATH python -c "
185165
import torch
186166
from libero.libero import get_libero_path
187167
from gr00t.eval.service import ExternalRobotInferenceClient
@@ -201,7 +181,7 @@ print('All imports OK!')
201181

202182
```bash
203183
conda activate groot_test
204-
cd /home/jz97/VLM_REPO/groot_test/QuantVLA_GR00T
184+
cd /QuantVLA_GR00T
205185
./run_inference_server.sh libero_10
206186
```
207187

@@ -211,7 +191,7 @@ Available task suites: `libero_spatial`, `libero_goal`, `libero_object`, `libero
211191

212192
```bash
213193
conda activate libero_test
214-
cd /home/jz97/VLM_REPO/groot_test/QuantVLA_GR00T
194+
cd /QuantVLA_GR00T
215195
./run_libero_eval.sh libero_10 --headless
216196
```
217197

@@ -225,7 +205,7 @@ Results are saved to:
225205

226206
```bash
227207
conda activate groot_test
228-
cd /home/jz97/VLM_REPO/groot_test/QuantVLA_GR00T
208+
cd /QuantVLA_GR00T
229209
./run_quantvla.sh libero_10
230210
```
231211

@@ -252,46 +232,29 @@ This script:
252232

253233
---
254234

255-
## Package Version Summary
256-
257-
### groot_test
258-
| Package | Version |
259-
|---|---|
260-
| Python | 3.10 |
261-
| PyTorch | 2.5.1+cu124 |
262-
| Transformers | 4.51.3 |
263-
| Diffusers | 0.30.2 |
264-
| Flash-attn | 2.7.1.post4 |
265-
| Timm | 1.0.14 |
266-
| Accelerate | 1.2.1 |
267-
| Peft | 0.17.0 |
268-
| NumPy | 1.26.4 |
269-
270-
### libero_test
271-
| Package | Version |
272-
|---|---|
273-
| Python | 3.10 |
274-
| PyTorch | 2.10.0+cu128 |
275-
| LIBERO | 0.1.0 (editable) |
276-
| Robosuite | 1.4.0 |
277-
| MuJoCo | 3.3.7 |
278-
| NumPy | 1.26.4 |
279235

280-
---
236+
## Acknowledgements
237+
238+
This repo is built upon the official GR00T codebase:
239+
- https://github.com/NVIDIA/Isaac-GR00T
240+
241+
## Important Note (Fake Quantization)
281242

282-
## Troubleshooting
243+
The current release uses **fake quantization** for GR00T (DuQuant W4A8 + ATM + OHB).
244+
It is intended for **accuracy / success-rate evaluation only**. It does **not** reflect real-world speedup or end-to-end memory reduction from low-bit kernels.
245+
We plan to add real-kernel deployment and on-robot validation in a future update.
283246

284-
### flash-attn build fails with "Invalid cross-device link"
285-
Add `--no-cache-dir` to the pip install command.
247+
## Citation
286248

287-
### LIBERO `torch.load` error with PyTorch >= 2.6
288-
Apply the `weights_only=False` patch as described in Step 5 of libero_test setup.
249+
If you find this code useful, please cite:
289250

290-
### `ModuleNotFoundError: No module named 'future'`
291-
Install the `future` package: `pip install future`
251+
```bibtex
252+
@article{quantvla2026,
253+
title = {QuantVLA: Training-Free Post-Training Quantization for Vision-Language-Action Models},
254+
author = {QuantVLA Authors},
255+
journal = {arXiv preprint arXiv:2602.20309},
256+
year = {2026},
257+
url = {https://arxiv.org/abs/2602.20309}
258+
}
292259
293-
### EGL errors during LIBERO evaluation
294-
These are cleanup warnings from robosuite's rendering context and do not affect functionality. Safe to ignore.
295260
296-
### TensorFlow warnings
297-
TensorFlow registration warnings (cuDNN, cuFFT, cuBLAS factories) are harmless. TF is only used for TensorBoard logging.

0 commit comments

Comments
 (0)