allex-eef-N-robotonly-h40rel โ horizon 40 / ์๋ชฉ relative / ์ฌ๋กฏ 35
ALLEX RLDX-1 mid-train. allex-eef-N-robotonly-h16 ์์ ๋ค์ฏ ๊ฐ์ง๋ฅผ ๋ฐ๊พผ ๋ฐ์ด๋ค.
| robotonly-h16 | ์ด ๋ฆฌํฌ | |
|---|---|---|
| action horizon | 16 | 40 |
| ์๋ชฉ 2ํค | ABSOLUTE / NON_EEF | RELATIVE / EEF / XYZ_ROT6D |
| embodiment ์ฌ๋กฏ | 0 (GENERAL) | 35 (NEW_EMBODIMENT) |
| random_crop_fraction | ์์ | 0.8984375 |
| ํจ๋ฉ dim ๋ ธ์ด์ฆ | ์ 64 dim | ์ 50 dim ๋ง |
๊ตฌ์กฐ
| ๊ฒฝ๋ก | step |
|---|---|
checkpoint-10000/ |
10,000 (ํ์ต ์งํ ์ค, 60k ๋ชฉํ) |
from huggingface_hub import snapshot_download
snapshot_download("jungwook2358/allex-eef-N-robotonly-h40rel",
allow_patterns="checkpoint-10000/*")
action 50D โ ๋ ๊ท์ฝ์ด ํ ๋ฐฐ์ด์ ์์ฌ ์๋ค
idx ํค ์ฐจ์ ํํ
0 left_wrist_wrt_base 9 RELATIVE / EEF / XYZ_ROT6D (xyz 3 + rot6d 6)
1 right_wrist_wrt_base 9 RELATIVE / EEF / XYZ_ROT6D
2 left_hand_joints 15 ABSOLUTE / NON_EEF
3 right_hand_joints 15 ABSOLUTE / NON_EEF
4 neck_joints 2 ABSOLUTE / NON_EEF
waist ๋ ์ ์ธ. ํฉ 50D. (max_action_dim 64 ๊น์ง ์ ๋กํจ๋ฉ)
์๋ชฉ ์๋ํ
๊ธฐ์ค ํ๋ ์์ ์ฒญํฌ๋น ํ๋ โ state[key][-1], ์ฆ ํ์ฌ ์๊ฐ t ์ ์๋ชฉ state.
40์คํ
์ ์ฒด๊ฐ ๊ฐ์ ๊ธฐ์ค์ ์ด๋ค (์คํ
๋ง๋ค ๋ฐ๋๋ฉด DELTA ์ด๊ณ , ์ด ๋ฐ์ RELATIVE).
T_rel[i] = inv(T_ref) @ T_abs[i] # SE(3), ์์๋ณ ๋บ์
์ด ์๋๋ค
xyz = T_rel[:3, 3]
rot6d = R_rel[:2, :].flatten() # ํ์ ํ๋ ฌ์ ์ฒซ ๋ 'ํ'
rot6d ๋์ฝ๋๋ ๊ทธ๋-์๋ฏธํธ๋ก ์ ๊ท์ง๊ตํํ๋ค.
์ถ๋ก ์ ๋ฐ๋์ ์ญ๋ณํํ ๊ฒ: T_abs[i] = T_ref @ T_rel[i],
๊ธฐ์ค์ ๊ทธ ์์ ๊ด์ธก๋ ์๋ชฉ state. ์ ํ๋ฉด ์๋ชฉ์ด ์์ ๊ทผ์ฒ์ ๋จธ๋ฌธ๋ค.
์ ๊ทํ โ ์๋ชฉ๊ณผ ๋๋จธ์ง๊ฐ ๋ค๋ฅด๋ค
| ํค | ํต๊ณ ์ถ์ฒ | ํผ์ผํ์ผ |
|---|---|---|
| ์๋ชฉ 2ํค | relative_action (meta/relative_stats.json) |
q0.1% / q99.9% |
| ์ยท๋ชฉ 3ํค | action |
q1% / q99% |
์์ ๊ณตํต 2*(x - q01)/(q99 - q01) - 1 ํ clamp(-1, 1).
โ ๏ธ ์๋ํต๊ณ์ ํค ์ด๋ฆ์ด ๊ฑฐ์ง๋ง์ ํ๋ค. q01/q99 ๋ผ๋ ์ด๋ฆ ์์ q0.1%/q99.9%
๊ฐ์ด ๋ค์ด ์๋ค. ์ค์ ํผ์ผํ์ผ์ _percentiles ํ๋๋ก ํ์ธํ ๊ฒ.
โ ๏ธ ์๋ํต๊ณ๋ (40, 9) ๋ก ์คํ
๋ณ ๋ฐ์ด๋๋ค. horizon ์ด ๋ค๋ฅด๋ฉด ์ธ ์ ์๋ค.
ํต๊ณ๋ checkpoint-*/experiment_cfg/dataset_statistics.json ๊ณผ
checkpoint-*/processor/statistics.json ์ ๋ค์ด ์๋ค.
๋ค๋ฅธ ๋ฐยท๋ค๋ฅธ ์ฒดํฌํฌ์ธํธ์ ํต๊ณ๋ฅผ ๊ฐ๋ค ์ฐ์ง ๋ง ๊ฒ.
ํจ๋ฉ dim ๋
ธ์ด์ฆ ์ฐจ๋จ (action_noise_mask_dim=50)
RLDX ๋ action ์ 64๊น์ง ์ ๋กํจ๋ฉํ๊ณ ์ dim ์ flow-matching ๋ ธ์ด์ฆ๋ฅผ ์ฃผ๋ฉด์ ํจ๋ฉ dim ์ loss ๋ ๋ง์คํนํ๋ค. ๊ทธ dim ์ velocity ๋ ํ ๋ฒ๋ ํ์ต๋์ง ์์ผ๋ฏ๋ก ์ถ๋ก ODE ์์ ๋ ธ์ด์ฆ๊ฐ ์ค์ง ์๊ณ ์ค์ ๊ด์ ๋ก intra-chunk jitter ๊ฐ ์๋ค.
์ด ๋ฐ์ ํ์ต์์ noise[..., 50:] = 0, ์ถ๋ก ์์ ์ด๊ธฐ ๋
ธ์ด์ฆ์ ๋งค Euler step ์งํ
actions[..., 50:] = 0 ์ผ๋ก ๋ง๋๋ค. ๊ฐ์ด config.json ์ ๋ฐํ ์์ด ์ถ๋ก ์
๋ณ๋ ํ๋๊ทธ๊ฐ ํ์ ์๋ค โ ๋จ, ๊ทธ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํ ์ฝ๋๋ก ์ถ๋ก ํด์ผ ํ๋ค.
embodiment ์ฌ๋กฏ 35
new_embodiment. ๋ฒ ์ด์ค ๋ชจ๋ธ์์ ์ด ์ฌ๋กฏ์ std ๊ฐ init ๊ฐ 0.02 ๊ทธ๋๋ก์ด๊ณ L2 ๊ฐ
36์ฌ๋กฏ ์ค ์ต์์ธ ์ฌ์ค์ ๋๋ค ์ด๊ธฐํ ์ฌ๋กฏ์ด๋ค (์ฌ๋กฏ 0 ์ ๋ฐ๋๋ก ๋
ธ๋ฆ ์ต๋ =
ํ๋ฆฌํธ๋ ์ธ ์ต๋ค ํ์ต). ํ๋ฆฌํธ๋ ์ธ ํธํฅ์ด ์๋ ๋์ ๋งจ๋ฐ๋ฅ๋ถํฐ ํ์ตํ๋ค.
๊ทธ ์ธ ์ค์
- base
RLWRLD/RLDX-1-PT-IMG,--override-pretraining-statistics - ๊ธ๋ก๋ฒ ๋ฐฐ์น 256 (4 GPU ร per-device 64, accum 1), lr 1e-4, 60,000 ์คํ
- ์นด๋ฉ๋ผ 2๋ (ego left/right), 256ร256 โ ๋๋ค ํฌ๋กญ 230ร230 โ 256 ๋ณต์ โ color jitter
(
image_max_area65536,image_resize_m32, jitter 0.6/0.6/0.6/0.16) - video_length 1, state_dropout 0.3
- VLM ๋๊ฒฐ (
tune_llm=False,tune_visual=False,tune_top_llm_layers=0) - ๋ฐ์ดํฐ: robot allex v1~v6 ๋ง (์ฌ๋ ๋ฐ์ดํฐ ์์)
- CogAlign ์์, ํ ํฌ๋์ด์ latent ์์ (arm N)
์ถ๋ก ์ ์ฐ์ด์ง ์๋ ํ์ต ์ํ(global_step*/, optimizer.pt, scheduler.pt,
rng_state_*.pth, training_args.bin, zero_to_fp32.py)๋ ์ฌ๋ฆฌ์ง ์์๋ค.
์ฝ๋
- Stage-2:
jungwook235/RLDX-1-egopibranchfeat/allex-eef-h16-midtrain(fc7a000)- modality config:
run_scripts/train/allex_eef/allex_eef_h40_rel_newemb_config.py
- modality config:
- ์ ์ถ ์คํฌ๋ฆฝํธ:
jungwook235/action-tokenizer(698a172)gpu26-server/submit/allex_eef_run5_base_robotonly_h40rel.sh- ์๋ํต๊ณ ์์ฑ:
gpu26-server/submit/allex_gen_rel_stats_one.sh
โ ๏ธ action_dim ์ด 48 ์ด ์๋๋ผ 50 ์ด๋ค.