Downloads · 30 days
13
18% of all-time downloads
xpuenabler/molmoact2-libero_grid_sampler_fine_tuned
molmoact2-libero_grid_sampler_fine_tuned is a robotics model from xpuenabler. Use it for the robotics task on the model card, and read the license before you ship it in a product. It is set up for lerobot. The card lists the license as apache-2.0.
MolmoAct2 with Grid Sampler (GridS, ICML 2026) visual token pruning, fine-tuned on the full LIBERO training set (allenai/MolmoAct2-LIBERO-Dataset, 1693 episodes / 273k frames).
Downloads · 30 days
13
18% of all-time downloads
All-time downloads
73
Public
Parameters
5.4B
10.9 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors10.9 GB · 100%
How the weights are stored.
BF165.4B · 100%
From the Hugging Face model README
MolmoAct2 with Grid Sampler (GridS, ICML 2026) visual token pruning, fine-tuned on the full LIBERO training set (allenai/MolmoAct2-LIBERO-Dataset, 1693 episodes / 273k frames).
Each camera image contributes 16 visual tokens instead of 196 (pruned by an
ActiveTokenSampler in the vision backbone), shrinking the LIBERO 2-camera prompt from 483 to
123 tokens. The sampler and the rest of the network were trained jointly.
train_config.json
(included here as train_config.json)See benchmark/ — a self-contained latency + FLOPs reproduction
benchmark (environment setup for NVIDIA Thor / Jetson AGX Thor, a one-command
runner, and the reference B200 numbers in benchmark/reference_results_b200.json).
Quick start: export HF_TOKEN=hf_... then bash benchmark/run.sh. Full setup and
the B200 reference table are in benchmark/README.md.
Requires the feat/grid-sampler-molmoact2 branch of
nota-github/xpu-lerobot:
import torch
from lerobot.configs.policies import PreTrainedConfig
from lerobot.policies.factory import make_pre_post_processors
from lerobot.policies.molmoact2.modeling_molmoact2 import MolmoAct2Policy
path = "xpuenabler/molmoact2-libero_grid_sampler_fine_tuned"
cfg = PreTrainedConfig.from_pretrained(path)
cfg.pretrained_path = path
cfg.device = "cuda"
cfg.inference_action_mode = "continuous"
policy = MolmoAct2Policy.from_pretrained(path, config=cfg)
preprocessor, postprocessor = make_pre_post_processors(
policy_cfg=cfg, pretrained_path=path,
preprocessor_overrides={"device_processor": {"device": "cuda"}},
)
batch = preprocessor({
"observation.images.image": torch.rand(3, 256, 256),
"observation.images.wrist_image": torch.rand(3, 256, 256),
"observation.state": torch.zeros(8),
"task": "pick up the black bowl",
})
action = postprocessor(policy.select_action(batch))
LIBERO simulation evaluation: scripts/eval_molmoact2_libero.sh in the same branch with
POLICY_PATH=xpuenabler/molmoact2-libero_grid_sampler_fine_tuned.
@inproceedings{feng2026gridsampler,
title = {See What Matters: Differentiable Grid Sample Pruning for Generalizable Vision-Language-Action Model},
author = {Feng, Yixu and Zhao, Zinan and Ma, Yanxiang and Xia, Chenghao and Du, Chengbin and Wang, Yunke and Xu, Chang},
booktitle = {Forty-Third International Conference on Machine Learning (ICML)},
year = {2026}
}