VLM micromanager to improve VLA performance post training.
Python
0
4 commits
updated May 11, 2026
This repository implements a VLM Micromanager (VLM MM) system that steers and guides Vision-Language Action (VLA) models to improve performance on robotic manipulation tasks. The VLM MM uses advanced visual reasoning to dynamically adjust and refine task execution in real-time, enabling the VLA to handle complex, multi-step manipulation tasks more effectively.
The VLM Micromanager is an intelligent oversight system that:
┌─────────────────────────────────────────────────────┐
│ Original Task Prompt │
│ "Put bowl in drawer and close it" │
└──────────────────┬──────────────────────────────────┘
│
┌──────────▼──────────┐
│ VLA observes │
│ environment │
└──────────┬──────────┘
│
┌──────────▼──────────────────────┐
│ VLM Micromanager │
│ • Analyzes current state │
│ • Detects task progress │
│ • Generates guidance │
└──────────┬──────────────────────┘
│
┌─────────────┼─────────────┐
│ │ │
Success Refine Decompose
│ Prompt Subtask
│ │ │
└─────────────┴─────────────┘
│
┌────────▼────────┐
│ VLA acts with │
│ refined prompt │
└─────────────────┘
conda env create -f environment.yml
conda activate vla-e
pip install -r requirements.txt
pip install -e .
Edit vlm_mm/configs/vlm_config_main.yaml to set up your environment:
# Cache directory for downloading models
cache_dir: /path/to/your/huggingface/cache
# VLM Micromanager configuration
vlmmm:
model_name: gemma3 # Options: gemma3, llava, t5gemma
vlm_mm_context_dir: vlm_mm/mm_context
vlm_mm_prompts_dir: vlm_mm/mm_prompts
original_prompt: "your task prompt"
curr_image_path: "vlm_mm/mm_context/curr_image.png"
context_video_path: "vlm_mm/mm_context/curr_context.mp4"
device: cuda:0
# VLA configuration
vla:
model: openvla
task_suite_name: libero_10 # or libero_spatial, libero_object, etc.
bddl_file: /path/to/task.bddl
prompt: "your task prompt"
record_path: /path/to/output/video.mp4
out_file: /path/to/output/demo.hdf5
device: cuda:0
cd vlm_mm
python vlm_server.py --config configs/vlm_config_main.yaml --port 8000
The server will:
http://localhost:8000python vlm_mm/vla_runner.py --config vlm_mm/configs/vlm_config_main.yaml
This will:
To verify the VLM MM server is working:
cd vlm_mm
python test_vlm_mm.py --config configs/vlm_config_main.yaml
The VLA runner generates:
HDF5 Demonstration File (out_file): Contains:
Video Recording (record_path): MP4 video of the task execution
Logs: Console output with task progress and VLM MM reasoning
Use the included analysis tools to evaluate performance:
# Convert HDF5 to JSON format
python utils/hdf5_to_json.py --hdf5_file /path/to/demo.hdf5 --output_dir /path/to/output
# Run metrics analysis
python explainability/vla_metrics.py --demo_file /path/to/demo.hdf5
This system supports LIBERO task suites:
libero_10: 10 diverse manipulation taskslibero_spatial: 50 tasks with spatial variationslibero_object: 50 tasks with object variationslibero_100: 100 diverse tasksGenerate perturbed datasets and analyze VLA robustness:
python scripts/launcher.py --config configs/main.yaml
This creates perturbed BDDL files, records demonstrations for each perturbation, and computes performance metrics. See README_LAUNCHER.md for details.
Customize VLM MM behavior by:
Error: Could not connect to http://localhost:8000
Solution: Ensure the VLM server is running in a separate terminal and using the same port.
Solution:
device: cpu in configSolution: Provide absolute path to BDDL file and ensure the file exists in the specified location.
If you use this code in your research, please cite:
@software{vlmmm2026,
title={VLM Micromanager for Vision-Language Action Models},
year={2026}
}
See LICENSE for details.
Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.
For questions or issues, please open an issue on the repository or contact the maintainers.
VLM micromanager to improve VLA performance post training.
Python
0
4 commits
updated May 11, 2026
This repository implements a VLM Micromanager (VLM MM) system that steers and guides Vision-Language Action (VLA) models to improve performance on robotic manipulation tasks. The VLM MM uses advanced visual reasoning to dynamically adjust and refine task execution in real-time, enabling the VLA to handle complex, multi-step manipulation tasks more effectively.
The VLM Micromanager is an intelligent oversight system that:
┌─────────────────────────────────────────────────────┐
│ Original Task Prompt │
│ "Put bowl in drawer and close it" │
└──────────────────┬──────────────────────────────────┘
│
┌──────────▼──────────┐
│ VLA observes │
│ environment │
└──────────┬──────────┘
│
┌──────────▼──────────────────────┐
│ VLM Micromanager │
│ • Analyzes current state │
│ • Detects task progress │
│ • Generates guidance │
└──────────┬──────────────────────┘
│
┌─────────────┼─────────────┐
│ │ │
Success Refine Decompose
│ Prompt Subtask
│ │ │
└─────────────┴─────────────┘
│
┌────────▼────────┐
│ VLA acts with │
│ refined prompt │
└─────────────────┘
conda env create -f environment.yml
conda activate vla-e
pip install -r requirements.txt
pip install -e .
Edit vlm_mm/configs/vlm_config_main.yaml to set up your environment:
# Cache directory for downloading models
cache_dir: /path/to/your/huggingface/cache
# VLM Micromanager configuration
vlmmm:
model_name: gemma3 # Options: gemma3, llava, t5gemma
vlm_mm_context_dir: vlm_mm/mm_context
vlm_mm_prompts_dir: vlm_mm/mm_prompts
original_prompt: "your task prompt"
curr_image_path: "vlm_mm/mm_context/curr_image.png"
context_video_path: "vlm_mm/mm_context/curr_context.mp4"
device: cuda:0
# VLA configuration
vla:
model: openvla
task_suite_name: libero_10 # or libero_spatial, libero_object, etc.
bddl_file: /path/to/task.bddl
prompt: "your task prompt"
record_path: /path/to/output/video.mp4
out_file: /path/to/output/demo.hdf5
device: cuda:0
cd vlm_mm
python vlm_server.py --config configs/vlm_config_main.yaml --port 8000
The server will:
http://localhost:8000python vlm_mm/vla_runner.py --config vlm_mm/configs/vlm_config_main.yaml
This will:
To verify the VLM MM server is working:
cd vlm_mm
python test_vlm_mm.py --config configs/vlm_config_main.yaml
The VLA runner generates:
HDF5 Demonstration File (out_file): Contains:
Video Recording (record_path): MP4 video of the task execution
Logs: Console output with task progress and VLM MM reasoning
Use the included analysis tools to evaluate performance:
# Convert HDF5 to JSON format
python utils/hdf5_to_json.py --hdf5_file /path/to/demo.hdf5 --output_dir /path/to/output
# Run metrics analysis
python explainability/vla_metrics.py --demo_file /path/to/demo.hdf5
This system supports LIBERO task suites:
libero_10: 10 diverse manipulation taskslibero_spatial: 50 tasks with spatial variationslibero_object: 50 tasks with object variationslibero_100: 100 diverse tasksGenerate perturbed datasets and analyze VLA robustness:
python scripts/launcher.py --config configs/main.yaml
This creates perturbed BDDL files, records demonstrations for each perturbation, and computes performance metrics. See README_LAUNCHER.md for details.
Customize VLM MM behavior by:
Error: Could not connect to http://localhost:8000
Solution: Ensure the VLM server is running in a separate terminal and using the same port.
Solution:
device: cpu in configSolution: Provide absolute path to BDDL file and ensure the file exists in the specified location.
If you use this code in your research, please cite:
@software{vlmmm2026,
title={VLM Micromanager for Vision-Language Action Models},
year={2026}
}
See LICENSE for details.
Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.
For questions or issues, please open an issue on the repository or contact the maintainers.