CoolFace
Modelpublic

Dwipz/Anchor-Align

sourceHugging Facemitupdated 28d agoView on Hugging Face
2likes139downloads
Model Card

Anchor-Align: Generalizable VLA Finetuning via Representation Anchoring and Language-Action Alignment

**๐ŸŒ Project Page**  โ€ข  **๐Ÿ“„ Paper (arXiv)**  โ€ข  **๐Ÿ’ป Code (GitHub)**  โ€ข  **๐ŸŽฌ Videos**

<p align="center"> <img src="assets/figmethodoverview.png" alt="Anchor-Align method overview" width="95%"/> </p>

TL;DR โ€” Standard behavior-cloning finetuning of a vision-language model on robot demos silently erases the pretrained VLM's semantics and decouples its language output from its actions. Anchor-Align adds two lightweight losses on top of action prediction that (i) anchor the trainable VLA to a frozen copy of the pretrained VLM (preserving vision-language reasoning) and (ii) align the pre-action hidden state with a discrete motion-direction label derived from the executed motion. The result: 22.6% on LIBERO-PRO position swap (vs 2.3% for standard BC), 90.3% LIBERO-Plus average (vs 85.1%), and near-doubled real-world success (28.3% โ†’ 54.2%) on a UFactory xArm7 setup.

๐Ÿ“ฆ Companion GitHub Repository

This repo hosts the weights. The inference and evaluation code lives at [github.com/dwipddalal/Anchor-Align](https://github.com/dwipddalal/Anchor-Align).

HuggingFace (`Dwipz/Anchor-Align`)GitHub (`dwipddalal/Anchor-Align`)
Weights + tokenizer + configsโœ…โ€”
LIBERO / LIBERO-PRO / LIBERO-Plus eval scriptsโ€”โœ…
Eval SLURM templates + 3-seed campaign runnersโ€”โœ…
Paper results tables + figuresโœ…โœ…
Per-checkpoint MODEL_CARD.mdโœ…โ€”
Reproduction recipe (REPRODUCE.md + verifier)โ€”โœ…
Note: the training code is not part of the initial release; we plan to release it in a follow-up update. Each checkpoint's full training configuration is documented in its MODEL_CARD.md.

Available Checkpoints

FolderSuiteMSE weightSteps
`libero-spatial/`LIBERO Spatial0.1010k
`libero-object/`LIBERO Object0.152.5k
`libero-goal/`LIBERO Goal0.1025k
`libero-long/`LIBERO-10 (Long)0.1545k

All four finetune Prismatic Qwen2.5-0.5B (DINOv2 + SigLIP, 24 layers) with LoRA rank 64 and an L1-regression MLPResNet action head. Per-checkpoint metrics live in each subfolder's MODEL_CARD.md; reproduction targets and tolerances are in the GitHub repo's `REPRODUCE.md`.

Results

Tables below are reproduced from the paper. Reproduction targets and tolerances for the released checkpoints are in `REPRODUCE.md`.

Standard LIBERO suites

Success rates on the four standard (unperturbed) LIBERO suites. Anchor-Align achieves the highest success rate on every suite, surpassing methods with substantially larger backbones and large-scale robot-action pretraining.

MethodSpatialObjectGoalLong
Diffusion Policy78.392.568.350.5
ฯ€โ‚€-FAST87.063.089.048.0
SmolVLA-0.24B87.093.088.063.0
SmolVLA-2.25B93.094.091.077.0
OpenVLA-OFT94.395.291.786.5
MolmoAct87.095.487.677.2
ฯ€โ‚€.โ‚…-KI96.697.294.685.8
VLA-093.696.095.687.6
VLA-Adapter [Frozen]89.489.688.084.5
VLA-Adapter (standard BC)96.099.896.089.0
Anchor-Align VLA (ours)98.4100.097.290.8

Robustness and generalization โ€” LIBERO-PRO and LIBERO-Plus

Success rates under perturbation on the LIBERO-Spatial suite (paper Table 1). Bold = best, <u>underline</u> = second best.

<table> <thead> <tr><th rowspan="2" align="left">Method</th><th colspan="4">LIBERO-PRO</th><th colspan="8">LIBERO-Plus</th></tr> <tr><th>Lang. Reph.</th><th>Object Swap</th><th>Pos. Swap</th><th>Mean</th><th>Lang. Instr.</th><th>Bg. Text.</th><th>Robot Init</th><th>Cam. View</th><th>Obj. Layout</th><th>Light Cond.</th><th>Sensor Noise</th><th>Mean</th></tr> </thead> <tbody> <tr><td align="left">Co-training + KI*</td><td>54.0</td><td>77.4</td><td>0.0</td><td>43.8</td><td>48.0</td><td>82.6</td><td>25.7</td><td>64.6</td><td>65.7</td><td>73.3</td><td>49.0</td><td>57.1</td></tr> <tr><td align="left">MolmoAct</td><td>77.8</td><td>82.4</td><td>0.0</td><td>53.4</td><td>79.5</td><td>84.1</td><td>47.4</td><td>10.1</td><td>76.5</td><td>77.4</td><td>53.4</td><td>60.8</td></tr> <tr><td align="left">OpenVLA-OFT</td><td>74.4</td><td><u>95.2</u></td><td>0.0</td><td>56.5</td><td>81.5</td><td><u>95.7</u></td><td>40.3</td><td><u>94.7</u></td><td>88.6</td><td><u>95.5</u></td><td>28.2</td><td>74.1</td></tr> <tr><td align="left">VLA-Adapter [Frozen]</td><td>56.0</td><td>73.4</td><td>0.0</td><td>43.1</td><td>41.5</td><td>70.9</td><td>35.1</td><td>94.4</td><td>62.3</td><td>84.9</td><td>36.2</td><td>59.9</td></tr> <tr><td align="left">VLA-Adapter (standard BC)</td><td><u>91.1</u></td><td>89.6</td><td><u>2.3</u></td><td><u>61.0</u></td><td><u>85.1</u></td><td>90.7</td><td><u>52.6</u></td><td>92.6</td><td><u>93.2</u></td><td>93.2</td><td><u>89.5</u></td><td><u>85.1</u></td></tr> <tr><td align="left"><b>Anchor-Align VLA (ours)</b></td><td><b>97.0</b></td><td><b>96.2</b></td><td><b>22.6</b></td><td><b>71.9</b></td><td><b>87.2</b></td><td><b>99.6</b></td><td><b>59.1</b></td><td><b>96.3</b></td><td><b>97.4</b></td><td><b>99.0</b></td><td><b>96.9</b></td><td><b>90.3</b></td></tr> </tbody> </table>

\*Our implementation of knowledge insulation adapted to VLA-Adapter. Position swap is the hardest axis: MolmoAct and OpenVLA-OFT score 0%, standard BC reaches 2.3%, while Anchor-Align reaches 22.6%.

Qualitative โ€” generalization to semantic perturbations

<p align="center"> <img src="assets/fig3qualitativeswap.png" alt="Anchor-Align generalizes to semantic perturbations" width="95%"/> </p>

Same task, different phrasing / different object identity / shuffled positions. Anchor-Align retains the VLM's semantic understanding of what the instruction refers to, while the baseline latches onto memorized appearance shortcuts.

Per-suite robustness โ€” Object, Goal, and Long

The same gains carry over to the remaining three LIBERO suites. Each radar plot compares Anchor-Align (orange) against the standard BC VLA-Adapter baseline (gray) across nine evaluation axes: two from LIBERO-PRO (Language Rephrase, Object Swap) and seven from LIBERO-Plus.

<p align="center"> <img src="assets/figobjectspider.png" alt="LIBERO Object suite radar plot" width="32%"/> <img src="assets/figgoalspider.png" alt="LIBERO Goal suite radar plot" width="32%"/> <img src="assets/figlongspider.png" alt="LIBERO Long suite radar plot" width="32%"/> </p>

Largest gains: Robot Init State +18.6 on Object; Language Instruction +11.9 on Goal; Lighting Condition +20.8, Object Layout +18.6, and Camera Viewpoint +17.7 on Long.

Long-horizon generalization โ€” CALVIN ABCโ†’D

Each rollout chains five language instructions; k/5 is the fraction of rollouts completing the first k, and Len is the average number of consecutively completed tasks.

Method1/52/53/54/55/5Len
UniVLA95.585.875.466.956.53.8
OpenVLA-OFT96.389.182.475.866.54.1
OpenHelix97.191.482.872.664.14.1
VLA-Adapter (standard BC)<u>98.3</u><u>94.0</u><u>87.5</u><u>80.0</u><u>73.1</u><u>4.3</u>
Anchor-Align VLA (ours)99.195.890.684.777.94.5

Multi-seed significance

Mean ยฑ standard deviation over 5 training seeds on LIBERO-Spatial; the method gaps are far larger than seed-to-seed variability.

MethodSpatial (Std)Lang. Reph.Object SwapPos. SwapPlus
VLA-Adapter (standard BC)93.3 ยฑ 0.391.1 ยฑ 0.490.1 ยฑ 0.52.6 ยฑ 0.785.3 ยฑ 0.3
Anchor-Align VLA (ours)97.9 ยฑ 0.397.1 ยฑ 0.596.1 ยฑ 0.423.5 ยฑ 0.290.5 ยฑ 0.6

Per-folder layout

Each subfolder is a self-contained inference bundle:

<benchmark>_<steps>/
  MODEL_CARD.md
  model.safetensors                        # merged base VLM weights (~2.5 GB)
  lora_adapter/adapter_model.safetensors   # separate LoRA weights (~208 MB)
  action_head--<step>_checkpoint.pt        # L1 regression head (~436 MB)
  align_dir_proj--<step>_checkpoint.pt     # alignment direction projector
  proprio_projector--<step>_checkpoint.pt  # proprioception projector
  config.json, tokenizer.*, processor_config.json, dataset_statistics.json

Quickstart โ€” download + run inference

1. Clone the code repo (contains all inference and eval scripts):

bash
git clone https://github.com/dwipddalal/Anchor-Align.git
cd Anchor-Align
pip install -e .   # + follow the installation section in the GitHub README

2. Download a checkpoint from this repo:

python
from huggingface_hub import snapshot_download

local_dir = snapshot_download(
    repo_id="Dwipz/Anchor-Align",
    allow_patterns=["config.json", "libero-spatial/*"],   # or libero-object/*, libero-goal/*, libero-long/*
    local_dir="./checkpoints",
)

3. Run inference using the eval scripts in the GitHub repo:

bash
# LIBERO Standard
CUDA_VISIBLE_DEVICES=0 python experiments/robot/libero/run_libero_eval.py \
  --pretrained_checkpoint ./checkpoints/libero-spatial \
  --task_suite_name libero_spatial \
  --use_proprio True --num_images_in_input 2 --use_pro_version True

# LIBERO-PRO (paraphrased-language perturbation)
CUDA_VISIBLE_DEVICES=0 python experiments/robot/libero_pro/run_libero_pro_eval.py \
  --pretrained_checkpoint ./checkpoints/libero-spatial \
  --base_suite_name libero_spatial --perturbation_type lan \
  --use_proprio True --num_images_in_input 2 --use_pro_version True

Inference flags (--use_proprio True --num_images_in_input 2 --use_pro_version True --use_l1_regression True --center_crop True --num_open_loop_steps 8) match the paper. See the GitHub README's "Evaluation" section for LIBERO-Plus and batched variants.

License

MIT. See the GitHub repository LICENSE.

Citation

bibtex
@article{dalal2026anchoralign,
  title   = {Generalizable VLA Finetuning via Representation Anchoring and Language-Action Alignment},
  author  = {Dalal, Dwip and Patel, Shivansh and Jain, Chahit and Kim, Jeonghwan and Mishra, Utkarsh and Baratian, Alex and Ha, Hyeonjeong and Ji, Heng and Lazebnik, Svetlana and Jain, Unnat},
  journal = {arXiv preprint arXiv:2607.13429},
  year    = {2026}
}

Keywords

Vision-language-action models, robot learning, robot manipulation, continual learning, catastrophic forgetting, out-of-distribution generalization, language-action alignment, behavior cloning, imitation learning, knowledge distillation, VLA finetuning.