Repository navigation
Expand file tree
/
Copy pathvlabench.yaml
More file actions
74 lines (68 loc) · 4.14 KB
/
Copy pathvlabench.yaml
File metadata and controls
74 lines (68 loc) · 4.14 KB
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# VLABench primitive finetune dataset (LeRobot v3, Franka Panda single-arm).
# The official standard finetune release: 10 primitive tasks x 500 episodes =
# 5000 episodes / 575k frames / 128 task variants at 10 fps.
# https://huggingface.co/datasets/VLABench/vlabench_primitive_ft_lerobot_video
# (NOT vlabench_primitive_ft_dataset — that redirects to the pre-conversion
# tarballs, which this reader cannot consume.)
type: vlabench
# state = actions = [x,y,z,roll,pitch,yaw,gripper], absolute EE pose in the
# ROBOT BASE frame, turned into raw EEF10 [xyz3, rot6d6, grip1] by the reader.
#
# NOTE the two gripper columns use OPPOSITE polarity (state 1 = closed, action
# 1 = open) because of an acknowledged upstream Franka bug. Both are passed
# through verbatim so training and rollout stay on the same convention — see
# the reader docstring before "fixing" either side.
#
# WARNING: this dataset's meta/episodes is CORRUPT upstream — it mis-assigns
# shard indices for 3952 of 5000 episodes. The reader rebuilds the mapping
# from real parquet row counts; see vlabench.py::_add_data_offsets.
#
# Placeholder path — machine-specific mounts must not land in shared configs;
# override with dataloader.dataset_dir=/path/to/vlabench_data
dataset_dir: /path/to/vlabench_data
# ── Action space ─────────────────────────────────────────────────────────────
# VLABench is single-arm EEF-only, so its raw EEF10 maps 1:1 onto the shared
# 80-D layout's left-arm slots 0-9 (see configs/dataloader/robotwin.yaml for
# the full table). Normalization runs FIRST (in the reader), then the scatter;
# the deploy denormalizer inverts in that same order. action_mode is also the
# DEPLOY contract key: the policy server reads it from the checkpoint's saved
# config to pick the stats entry, and it must match the reader's
# DEPLOY_ACTION_MODE (pinned by tests/dataloader/test_vlabench_offsets.py).
action_mode: eef
unify_action: true
unify_action_map: ["0-9"]
unify_state_map: null # null = state reuses unify_action_map
# ── Frame sampling ───────────────────────────────────────────────────────────
# num_frames = state/action window length; action horizon = num_frames - 1.
# video_stride subsamples video only; state/action stay at the raw rate.
# window_stride = sliding window step (1 = every frame starts a window).
num_frames: 33
video_stride: 4
window_stride: 1
split: train
# ── Rendering (3-slot L-shape canvas) ────────────────────────────────────────
# camera_layout = [head, left/bottom-left, right/bottom-right]; null slots are
# rendered as black tiles. At 384x320: top 256Hx320W, bottom halves 128Hx160W,
# each tile BILINEAR-stretched to its slot. target_camera drives single-view
# mode and is ignored when multiview=true.
# top: image (head / front camera); bottom-left: wrist_image; bottom-right:
# second_image (second external view).
height: 384
width: 320
multiview: true
# ── Normalization ────────────────────────────────────────────────────────────
# Pooled EEF10 stats live at <dataset_dir>/meta/vlabench_normalization_stats.npy
# and are auto-built on first use (rank 0 scans, other ranks wait); build up
# front with vlabench_stats_computation. The reader also writes the deploy
# denormalizer artifact meta/normalization_stats.npy.
normalize_mode: min-max
# ── Video augmentation (optional) ────────────────────────────────────────────
# Load-time color jitter applied by the reader to each clip with the SAME
# random factors across all frames (temporal consistency), TRAIN split only.
# enabled: false keeps video byte-identical while preserving the knobs.
color_jitter:
enabled: true
brightness: 0.2
contrast: 0.2
saturation: 0.2
hue: 0.0