CoolFace
Modelpublic

xpuenabler/MolmoAct2-LIBERO-ViT10L

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
0likes5downloads
Model Card

MolmoAct2-LIBERO-ViT10L — Vision Encoder 압축 (정확도 우선)

allenai/MolmoAct2-LIBERO의 Vision Encoder를 25층 → 10층(2.5×) 으로 압축한 VLA. LLM(Qwen3-4B 36L)·Action Expert는 원본과 동일. Standalone HF 체크포인트 (trustremotecode).

성능 (LIBERO 4-suite × 5ep, seed 1000)

spatialobjectgoallong**전체**
본 모델 (ViT 10L)100100949096.0%
원본 teacher (25L)981001009899.0%
  • —ViT 파라미터 439M → ~210M, 온디바이스(Hexagon v73) ViT latency ~1103ms → ~440ms 추정
  • —전체 파라미터 5.214B

제작 방법 (prune → embed-KD → task-FT)

  1. 1.Depth prune + warm-start: teacher 25층 중 SNR 기반 keep-set [0,1,2,3,5,6,7,8,9,24]만 유지, 가중치 상속. connector taps vit_layers=[-1,-4].
  2. 2.embed-KD: frozen teacher connector 출력 임베딩에 정렬 (relMSE+cos, 3k step, cosine≥0.96).
  3. 3.task-FT: LIBERO 전체 fine-tune (flow-matching, 6k step, batch 32, bf16).

핵심 발견: embed-KD 생략 시 71.5%로 붕괴(+24%p 차이). 최신 선택기법(탐색/병합)은 강한 healing 하에서 이득 없음.

사용

python
from transformers import AutoModelForImageTextToText, AutoProcessor
model = AutoModelForImageTextToText.from_pretrained("xpuenabler/MolmoAct2-LIBERO-ViT10L", trust_remote_code=True, torch_dtype="bfloat16")
proc = AutoProcessor.from_pretrained("xpuenabler/MolmoAct2-LIBERO-ViT10L", trust_remote_code=True)
out = model.predict_action(processor=proc, images=[front, wrist], task="pick up the bowl",
                           state=state, norm_tag="libero", inference_action_mode="continuous")

lerobot 학습/평가: --policy.type=molmoact2 --policy.checkpoint_path=<this repo>.

재현 (Reproduction)

training/ 폴더에 재현 팩 포함: 단계별 가이드(TRAINING.md), 전체 실험 기록(EXPERIMENTS.md), keep-set/FFN 채널 확정 JSON, embed-KD·조립·패키징 스크립트. training/README.md부터 참조.