File size: 2,333 Bytes
eb275c1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5031597
 
 
eb275c1
cb9b2d0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
---
license: apache-2.0
base_model: robbyant/lingbot-vla-v2-6b
tags: [robotics, vla, lingbot-vla-2, maniguard]
---

# LingBot-VLA 2.0 — ManiGuard datagen-v1 `lid` (joint, 2-cam)

LingBot-VLA 2.0 post-trained on the ManiGuard `lid` family, one of five base models
evaluated on ManiGuard-Bench under identical data, cameras, and controller.

- **Warm start:** [`robbyant/lingbot-vla-v2-6b`]( https://huggingface.co/robbyant/lingbot-vla-v2-6b )
  — the **pretrain** release (not the RoboTwin post-trained variant).
- **Data:** `IDEAS-Lab-Northwestern/datagen-lid-v1-joint-5cam` (LeRobot v2.1, consumed directly — no format conversion).
- **Inputs:** 2 cameras (`camera_top` = the `left` overview, `camera_wrist_left` = wrist),
  8-D joint state (7 arm + gripper) mapped into the 55-D unified vector.
- **Actions:** **absolute** joint targets (`subtract_state: false` on both features, per
  LingBot's own simulation recipe) — apply directly to a JointController, no delta step.
- **Recipe:** upstream post-training config unchanged (MoE + depth/DINO distillation on);
  global batch 256 = micro 32 x 8 GPUs, lr 5e-5 cosine, **4 epochs** (16,500 steps — the
  initial 2-epoch run resumed with the cosine stretched to the full horizon).
- **Ladder:** checkpoints every 4,125 steps.

## Files needed to serve

Everything a rollout needs is in this repo:

| Path | What it is |
| --- | --- |
| `maniguard/norm_stats.json` | this family's normalization statistics |
| `maniguard/robot_config.yaml` | the feature mapping the policy was trained with; its `norm_stats:` points at the file above |
| `vlm/config.json` | the [`Qwen/Qwen3-VL-4B-Instruct`](https://huggingface.co/Qwen/Qwen3-VL-4B-Instruct) config (Apache-2.0), vendored unchanged — LingBot builds the VLM skeleton from it before loading these weights |
| `tokenizer*.json`, `*preprocessor_config.json`, `merges.txt`, `vocab.json`, `added_tokens.json`, `special_tokens_map.json`, `chat_template.jinja` | the processor / tokenizer, byte-identical to training |

Serve it with ManiGuard's shim, which reads all of the above from the checkpoint directory and
passes the norm statistics explicitly:

```bash
python maniguard/serve/lingbot_native.py \
    --checkpoint <this repo, downloaded> --qwen-config <dir holding vlm/config.json> \
    --device cuda:0 --port 8000
```