Cosmos3-Edge-Policy-DROID โ FastWAM-K (๋ถ๋ถ ๋น์ ์ ์ง), step 12000
nvidia/Cosmos3-Edge-Policy-DROID(full WAM, RoboLab 36.5%)์์ warm startํ
๋ถ๋ถ ๋น์ ์ ์ง(leading-K) ์คํ์ ์ค๊ฐ ์ฒดํฌํฌ์ธํธ์
๋๋ค. ๊ณํ๋ 12000 iter ์ค 100%
์ง์ ์ด๋ฉฐ, ํ๊ฐ์ฉ ์ค๋
์ท์ด์ง ์ต์ข
์ฐ์ถ๋ฌผ์ด ์๋๋๋ค.
- step๋ณ ํ์ ํด๋(
step12000/)์ ๋์ . ๋ฃจํธ README๋ ์ต๊ทผ step์ ๊ฐ๋ฆฌํต๋๋ค. - EMA ๊ฐ์ค์น ๊ธฐ์ค export, training state ์์ โ pretrained model ํ์ผ๋ง.
โ ๏ธ ์๋น ์ ํ์ ์ธ์
์ด ์ฒดํฌํฌ์ธํธ๋ conditioning ํ๋ ์ + ์ ํ ์์ฑ 2 latent ํ๋ ์์ ์ ์งํ๋๋ก ํ์ต๋์ต๋๋ค. ๊ธฐ๋ณธ FastWAM ํ๋๊ทธ๋ก ์๋นํ๋ฉด ํ์ต๊ณผ ๋ค๋ฅธ ์ํ์ค๊ฐ ๋ฐฐํฌ๋ฉ๋๋ค.
python -m cosmos_framework.scripts.action_policy_server_robolab \
--checkpoint-path "$ckpt" --port 8000 \
--format-prompt-as-json True --no-guardrails \
--keep-generated-vision-frames 2 # โ --drop-generated-vision ์ด ์๋
๊ต์ฐจ ํธ์คํธ ํฉ์ ๋ถ๋ณ์: num_kept = (์ค์ conditioning prefix latent ํ๋ ์ ์) + K,
์ค์ ์ด latent ํ๋ ์ ์๋ก ํด๋จํ. ์ ์ง๋ K ํ๋ ์์ conditioned๊ฐ ์๋๊ณ
denoise ๋์์
๋๋ค(pack_vision_tokens๊ฐ plan์ condition_frame_indexes_vision์ผ๋ก
๋ง์คํฌ๋ฅผ ๋ง๋ค์ด ํ๋ ์ 1..K๊ฐ mse_loss_indexes์ ๋ค์ด๊ฐ๋๋ค) โ ์ถ๋ก ์ ๋ฏธ๋ ground truth๊ฐ
์์ผ๋ฏ๋ก ๊ทธ๋์ผ ๋ฐฐํฌ๊ฐ ์ฑ๋ฆฝํฉ๋๋ค.
์ K์ธ๊ฐ
RoboLab 24 arm / 2,304 ์ํผ์๋ ๊ฒฐ๊ณผ, FastWAM(K=0)์ full-WAM ๋๋น ๊ฒฉ์ฐจ๋ ๊ท ์ผํ ์ดํ๊ฐ ์๋๋ผ ๊ตญ์์ ์ ๋๋ค.
| ํ์คํฌ | FastWAM (K=0) | full WAM (K=8) |
|---|---|---|
| RubiksCubesInBin | 3.1% | 62.5% |
| StackYellowOnRed | 6.2% | 50.0% |
| UnstackRubiksCube | 100% | 87.5% |
| ToyInBin | 29.7% | 25.0% |
์์ ๋ ํ์คํฌ๊ฐ 13.6%p ๊ฒฉ์ฐจ์ 8%p ์ด์์ ์ค๋ช ํ๊ณ , ๋ค์ ๋์ baseline์ ๋์ต๋๋ค. ์์ ๋ ํ์คํฌ์ ๊ณตํต์ ์ ๋์ผ ํํ ๋ฌผ์ฒด ์ฌ๋ฌ ๊ฐ ์ค ํน์ ๊ฐ์ฒด๋ฅผ ์ง๋ชฉยท์กฐ์ํ๋ ๊ฒ์ ๋๋ค. ๊ทธ ๋ฅ๋ ฅ์ full-WAM base์ ์๊ณ K=0 ์ฒดํฌํฌ์ธํธ์์๋ ์ด๋ฏธ ํ๊ดด๋์ผ๋ฏ๋ก, base๋ฅผ nvidia๋ก ์ก์ ๋์ด๋ฆฌ๋ ๋์ ์ ์งํฉ๋๋ค. ๋ถ์ ํจ๊ณผ๋ก K=8์ด ํ์ต ์๋ ์ต์ปค๊ฐ ๋ฉ๋๋ค(base ์์ฒด).
leading-K๋ฅผ ์๋๋ค โ conditioning prefix + ์๊ฐ์ ์ผ๋ก ๊ฐ์ฅ ๊ฐ๊น์ด ์์ฑ Kํ๋ ์. ๋ฑ๊ฐ๊ฒฉ ์คํธ๋ผ์ด๋ยท๋ง์ง๋ง K๊ฐยทํ๋ง ์์ฝ ํ ํฐ์ ๋ค๋ฅธ ๊ณก์ ์ ์ฃผ๋ฉฐ, ์ด ์ ์ฅ์์ ์์น๋ ์ ๋ถ leading-K์ ๋ํ ๊ฒ์ ๋๋ค. K=2๋ 4:1 ์๊ฐ ์์ถ์์ 8 ํฝ์ ํ๋ ์ = 32์คํ /2.13์ด action chunk์ ์ ~25%๋ก, RoboLab ํด๋ผ์ด์ธํธ๊ฐ chunk๋ฅผ ์์งํ๊ธฐ ์ ์ ์ฌ์์ฒญํ๋ ๊ตฌ๊ฐ์ ๋๋ค.
ํ ํฐ ์
ํธ๋์คํฌ๋จธ์ ์ค์ ๋ก ๋ค์ด๊ฐ๋ vision ํ ํฐ์ ํ๋ ์๋น 340์ ๋๋ค.
| K | vision ํ๋ ์ | vision ํ ํฐ | ์ํ์ค ์ ์ฒด(์ค์ธก) |
|---|---|---|---|
| 0 (FastWAM) | 1 | 340 | 531 |
| 2 (์ด ์ ์ฅ์) | 3 | 1,020 | 1,211 |
| 8 (full WAM) | 9 | 3,060 | 3,251 |
์ ๋ถ RoboLab ์๋ฒ์์ ํจํน๋ ์ํ์ค๋ฅผ ์ง์ ๊ณ์ธกํ ๊ฐ์
๋๋ค(2026-09-08). 340 ร (K+1)์ด
๋ชจ๋ K์์ ์ ํํ ๋ง๊ณ , ์ํ์ค ์ ์ฒด๋ ์ฌ๊ธฐ์ text์ action 33์ด ๋ํด์ง ๊ฐ์
๋๋ค
(๊ทธ ์คํ์ text๋ 158; ํ๋กฌํํธ ๊ธธ์ด์ ๋ฐ๋ผ ๋ณํฉ๋๋ค โ ์ ํ์ต ๋ฐฐ์น์์๋ 164์์ต๋๋ค).
mse_loss_indexes๊ฐ ์ ํํ 340 ร K์ด๊ณ condition_mask๊ฐ ๋ชจ๋ K์์ 1์ด๋ผ๋ ๊ฒ๋ ํจ๊ป
ํ์ธ๋์ต๋๋ค โ ์ ์งํ K ํ๋ ์ ์ ๋ถ๊ฐ denoise ๋์์ด๊ณ ์กฐ๊ฑด ํ๋ ์์ ํ๋์
๋๋ค.
391์ด ์๋ ์ด์ (ํ์ดํ๋ผ์ธ ๋จ๊ณ ๊ตฌ๋ถ)
ํ์ต dataloader์ video ํ
์๋ฅผ ์ค์ธกํ๋ฉด (3, 33, 544, 736)์ด๊ณ , ๊ทธ latent๋ 34ร46 โ
patch_spatial=2 โ 17ร23 = 391์
๋๋ค. ์ด ๊ฐ ์์ฒด๋ ๋ง์ง๋ง ์ํ์ค ํ ํฐ ์๊ฐ ์๋๋๋ค.
540ร640 (์๋ณธ)
โ transform ๋ฐ์ฌ ํจ๋ฉ 544ร736 โ ๋ฒํท VIDEO_RES_SIZE_INFO['480']['4,3']
โ VAE (/16) latent 34ร46 (= patch 391)
โ _remove_padding_from_latent latent 34ร40 โ image_size=[544,736,540,640] ์ ์ฝํ
์ธ ์์ญ
โ pack_vision_tokens 17ร20 = 340/ํ๋ ์ โ ํธ๋์คํฌ๋จธ ์
๋ ฅ
ํจ๋ฉ์ VAE์ ํต๊ณผ์ํค๊ธฐ ์ํ ์์ ์บ๋ฒ์ค์ด๊ณ ํจํน ์ ์ ์ ๊ฑฐ๋ฉ๋๋ค
(omni_mot_model.py์ get_data_and_condition() ์, data_batch["image_size"]๊ฐ ์์ ๋).
๊ทธ ํจ์๋ ํ์ตยท์ถ๋ก ์ด ๊ณต์ ํ๋ฏ๋ก ์์ชฝ ๋ค 340์ผ๋ก ํจํน๋ฉ๋๋ค โ ๋ถ์ผ์น๊ฐ ์์ต๋๋ค.
ํ์ต ๋ฐฐ์น์ image_size = [544., 736., 540., 640.]๊ฐ ์ค์ ๋ก ๋ค์ด ์๋ ๊ฒ์ ํ์ธํ์ต๋๋ค.
๋ฐ๋ผ์ ์ ๋ชจ๋ธ ์นด๋์ "ํ๋ ์๋น 340 / 9ํ๋ ์ 3,060"์ ์ณ์ต๋๋ค. ์ด ์ ์ฅ์์ ์ด์ ๋ฒ์ ์ด
391๋ก ์ ์๋ ๊ฒ์ ํ์ดํ๋ผ์ธ ๋จ๊ณ๋ฅผ ๋ช
์ํ์ง ์์ ์บ๋ฒ์ค ๊ธฐ์ค ๊ฐ์ ์ํ์ค ํ ํฐ ์๋ก ์ด
๊ฒ์ด์์ต๋๋ค. ์นด๋์ text 128๋ง ์ค์ธก(158~164, ํ๋กฌํํธ ์์กด)๊ณผ ๋ค๋ฆ
๋๋ค.
ํ์ต ์ค์
| ํญ๋ชฉ | ๊ฐ |
|---|---|
| experiment | action_policy_droid_edge_ft_fastwam_v1lr + optimizer.lr=1e-5 + K override |
| K | two_pass_keep_generated_vision_frames=2 |
| base | nvidia/Cosmos3-Edge-Policy-DROID (DCP ๋ณํ), ๊ฐ์ค์น๋ง |
| two-pass | pass B action FM (action_loss_weight=10), pass A vision FM (loss_scale=1) |
| ๋ฐ์ดํฐ | DROID success + failure, keep_ranges_1_0_1 (sim ์์) |
| optimizer | FusedAdamW, lr 1e-5, ์ก์ ๋ธ๋ฆฟ์ง 3๊ฐ์ 5ร |
| scheduler | LambdaLinear, warm-up 1000, cycle 12000 โ ์ ๊ตฌ๊ฐ ํ์ต (lr 1e-5 โ 8.36e-6@3k โ 5.91e-6@6k โ 3.45e-6@9k โ 1.0e-6@12k) |
| ํ๋์จ์ด | B300 ร2, FSDP shard 2, grad_accum 2 โ ๊ธ๋ก๋ฒ ๋ฐฐ์น 64 |
ํ๊ฐ ์ฃผ์
- loss ๊ณก์ ์ผ๋ก ํ์ ํ์ง ๋ง์ญ์์ค โ ๋งค์นญํ ๋ชฉ์ ํจ์๋ผ ๊ณก์ ์ด ํํํฉ๋๋ค.
- open-loop MAE๋ ์ด ํ๋ก์ ํธ์์ ์ธ ๋ฒ ๋ฐฉํฅ์ ๋ฐ๋๋ก ๊ฐ๋ฆฌ์ผฐ์ต๋๋ค. ํ์ ๊ธฐ์ค์ RoboLab์ ๋๋ค.
- 2ํ์คํฌ(RubiksCubesInBinยทStackYellowOnRed) ร 8 ์ํผ์๋ ์คํฌ๋ฆฌ๋์ ํ๋ณ์ฉ์ด๋ฉฐ ๋ฒค์น๋งํฌ ์ ์๊ฐ ์๋๋๋ค. ์์ฑ์ด๋ฉด 12ํ์คํฌ ์ ์ฒด ํ์ธ์ด ํ์ํฉ๋๋ค.
- n=96์์ ยฑ9pp๋ ๋
ธ์ด์ฆ์
๋๋ค. ์ฒดํฌํฌ์ธํธ ๋น๊ต๋ ์ ์ ์ํ๋ง
(
--num-episodes-adaptive 200 --ci-pp-width 0.14)์ผ๋ก ํ์ญ์์ค.
Model tree for geonmin-kim/Cosmos3-Edge-Policy-DROID-FastWAM-K2
Base model
nvidia/Cosmos3-Edge-Policy-DROID