YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

real_franka_demospeed

์‹ค๊ธฐ Franka air_frier ๋ฐ์ดํ„ฐ์— DemoSpeedup (Guo et al., CoRL 2025 โ€” entropy ๊ธฐ๋ฐ˜ ์‹œ์—ฐ ๊ฐ€์†)์„ ์ ์šฉํ•ด ํ•™์Šตํ•œ GR00T-N1.5 ์ฒดํฌํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค. ๊ตฌ์กฐยท์ฝ”๋“œ๋Š” TTaekwan/real_franka_basline/air_frier (MoSS GR00T, SAIL โˆ’ EAG: linear LR, future token 32)์™€ ์™„์ „ํžˆ ๊ฐ™๊ณ , ํ•™์Šต ๋ฐ์ดํ„ฐ์˜ ์‹œ๊ฐ„์ถ•๋งŒ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ baseline ๊ณผ ๊ฐ™์€ ์ถ”๋ก  ๋ฐฐ์„ ์œผ๋กœ ๊ทธ๋Œ€๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

ํด๋”

ํด๋” step ๋ฌด์—‡
air_frier_30k 30,000 (์ตœ์ข…) DemoSpeedup ํ•™์Šต๋ณธ. ์ด๊ฑธ ์“ฐ์‹ญ์‹œ์˜ค
air_frier_20k 20,000 (๊ฐ™์€ ํ•™์Šต์˜ checkpoint-20000) ์ค‘๊ฐ„ ์ง€์  ๋น„๊ต์šฉ
keep_v1-2_kde_zm0p3/ โ€” ํ•™์Šต์— ์“ด entropy phase ๋ผ๋ฒจ (labels.parquet, summary.json). ์ถ”๋ก ์—” ํ•„์š” ์—†์Œ
code_human_data_moss.tar.gz โ€” ํ•™์Šตยท์ถ”๋ก  ์ฝ”๋“œ (gr00t/ ํŒจํ‚ค์ง€ + scripts/). baseline ๊ณผ ๊ฐ™์€ MoSS GR00T
train_manifest_mlxp.yaml, slurm_entropy_air_frier.sh โ€” ํ•™์Šต ์žก ยท entropy ์ถ”์ถœ ์žก ์›๋ณธ
infer_smoke/ โ€” ๋ฆด๋ฆฌ์Šค ์ „ ์ถ”๋ก  ์Šค๋ชจํฌ ์Šคํฌ๋ฆฝํŠธ์™€ ๊ฒฐ๊ณผ json

๊ฐ ํด๋”: config.json ยท model-0000{1,2}-of-00002.safetensors ยท model.safetensors.index.json ยท experiment_cfg/metadata.json(์ •๊ทœํ™” ํ†ต๊ณ„, ํ‚ค new_embodiment) ยท trainer_state.json ยท training_args.bin. optimizer ๋Š” ์—†์Šต๋‹ˆ๋‹ค(์ถ”๋ก  ์ „์šฉ).

์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์—ˆ๋‚˜

nvidia/GR00T-N1.5-3B โ”€โ”€(์›๋ณธ air_frier 50 ep, 30k)โ”€โ”€โ–ถ base30k  (= real_franka_basline/air_frier)
                                                          โ”‚  ํ”„๋ ˆ์ž„๋งˆ๋‹ค action chunk 10๊ฐœ ์ƒ˜ํ”Œ โ†’ KDE entropy
                                                          โ–ผ  HDBSCAN, precision_z โˆ’0.3 โ†’ phase 0/1 ๋ผ๋ฒจ
nvidia/GR00T-N1.5-3B โ”€โ”€(์›๋ณธ air_frier 50 ep + ๋ผ๋ฒจ, 30k)โ”€โ”€โ–ถ air_frier_30k  (์ด repo)
  • base30k ๋Š” entropy ๊ณ„์‚ฐ์—๋งŒ ์ผ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์˜ init ์€ pretrained N1.5-3B ์ž…๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋Š” downsample ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋กœ๋”๊ฐ€ ํ•™์Šต ์ƒ˜ํ”Œ๋งˆ๋‹ค action chunk ๋งŒ ๋ผ๋ฒจ๋Œ€๋กœ ๋‹ค์‹œ ์ฝ์Šต๋‹ˆ๋‹ค: precision(entropy ๋‚ฎ์Œ) ๊ตฌ๊ฐ„์€ ๋ณดํญ 1, coarse(entropy ๋†’์Œ) ๊ตฌ๊ฐ„์€ ๋ณดํญ 2 โ†’ coarse ๊ตฌ๊ฐ„์—์„œ ํ•œ ํ”„๋ ˆ์ž„์”ฉ ๊ฑด๋„ˆ๋›ด target ์„ ๋ฐฐ์›๋‹ˆ๋‹ค. observation ์€ 12,205 ํ”„๋ ˆ์ž„ ์ „๋ถ€ ๊ทธ๋Œ€๋กœ anchor ๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค(๋…ผ๋ฌธ์˜ training-time ๋ฐฉ์‹).
  • ๋ผ๋ฒจ ํ†ต๊ณ„: precision 57.0%, ๊ณ ์ • ํƒ€์ž„๋ผ์ธ ๊ธฐ์ค€ ์••์ถ• x1.256 (์—ํ”ผ์†Œ๋“œ ํ‰๊ท  244 โ†’ 194 ํ”„๋ ˆ์ž„). ์ฆ‰ ์ ‘๊ทผยท์ด๋™ ๊ตฌ๊ฐ„์€ 2๋ฐฐ, ์ง‘๊ธฐยท๋†“๊ธฐ ๊ตฌ๊ฐ„์€ ์›์†๋„๋กœ ๋ฐฐ์šด ์ •์ฑ…์ž…๋‹ˆ๋‹ค.
  • ํ•™์Šต ์ธ์ž๋Š” baseline ๊ณผ ๋™์ผ: real_droid_joint ยท new_embodiment ยท bs 32ร—2 GPU(gbs 64) ยท 30k step ยท save 10k ยท torchvision_av(keyframe ๋ฒ„๊ทธ ์ˆ˜์ • ํŒ) ยท ์˜์ƒ 448ร—252. ์ตœ์ข… loss 0.0074 (baseline ๊ณผ ๊ฐ™์€ ์ˆ˜์ค€).

์ถ”๋ก  ๋ฐฐ์„ 

baseline(real_franka_basline/air_frier)๊ณผ ๋˜‘๊ฐ™์ด ๋„์šฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ผ๋ฒจยท๋ณดํญ ๊ฐ™์€ ๊ฒƒ์„ ์ถ”๋ก ์— ๋„˜๊ธธ ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค.

tar xzf code_human_data_moss.tar.gz            # human_data/{gr00t,scripts}
export PYTHONPATH=$PWD/human_data
python human_data/scripts/eval/serve_policy.py \
    --model-path <air_frier_30k ๋””๋ ‰ํ„ฐ๋ฆฌ ๋˜๋Š” TTaekwan/real_franka_demospeed ์˜ ํ•˜์œ„ ๊ฒฝ๋กœ๋ฅผ ๋ฐ›์€ ๊ณณ> \
    --embodiment-tag new_embodiment \
    --data-config real_droid_joint \
    --denoising-steps 4 --port 5555
ํ•ญ๋ชฉ ๊ฐ’
๋ชจ๋ธ ํด๋ž˜์Šค gr00t.model.gr00t_n1_MoSS.GR00T_N1_MoSS (config.json architectures), prediction_mode: base
policy gr00t.model.policy.Gr00tPolicy (human_data ํŒ). get_action(obs) โ†’ dict
data config real_droid_joint (gr00t/experiment/data_config.py)
embodiment tag new_embodiment โ€” ํ•™์Šต ๊ฐ’. experiment_cfg/metadata.json ์˜ ํ‚ค์™€ ๊ฐ™์•„์•ผ ์ •๊ทœํ™” ํ†ต๊ณ„๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค
observation (1 ํ”„๋ ˆ์ž„) T ์ถ• ์—†์ด ๋„ฃ์Šต๋‹ˆ๋‹ค: video.exterior_image_1_left (H,W,3) uint8 ยท video.wrist_image_left (H,W,3) uint8 ยท state.joint_pos_abs (7,) ยท state.gripper_close (1,) ยท annotation.human.action.task_description str. get_action ์ด ์Šค์Šค๋กœ T=1 ์„ ๋ถ™์ž…๋‹ˆ๋‹ค. โš  (1,H,W,3) ์ฒ˜๋Ÿผ T ์ถ•์„ ๋ถ™์—ฌ ์ฃผ๋ฉด MoSS transform ์˜ batched ๊ฒฝ๋กœ๋กœ ๋“ค์–ด๊ฐ€ eval ์—์„œ eagle_pixel_values 5์ฐจ์› ์˜ค๋ฅ˜๋กœ ์ฃฝ์Šต๋‹ˆ๋‹ค (2026-09-25 ํ™•์ธ)
์˜์ƒ ํ•ด์ƒ๋„ ํ•™์Šต์€ 448ร—252 (16:9). transform ์ด crop 0.95 โ†’ 224ร—224 resize ํ•˜๋ฏ€๋กœ ๊ฐ™์€ ์นด๋ฉ”๋ผยท๋น„์œจ์ด๋ฉด ์›๋ณธ 1280ร—720 ๋„ ๋ฉ๋‹ˆ๋‹ค
์–ธ์–ด "Open the air fryer basket, put the food from the plate into the basket, and close the basket." (๋ฐ์ดํ„ฐ์…‹ meta/tasks.jsonl)
action ์ถœ๋ ฅ action.joint_pos_abs (16,7) ์ ˆ๋Œ€ ๊ด€์ ˆ๊ฐ ยท action.gripper_close (16,1) โ€” ์ •๊ทœํ™” ํ•ด์ œ๋œ ๊ฐ’
์ •๊ทœํ™” stateยทaction ๋ชจ๋‘ min_max (experiment_cfg/metadata.json)
denoising steps 4 (num_inference_timesteps)
์ œ์–ด ์ฃผ๊ธฐ ๋ฐ์ดํ„ฐ์™€ ๊ฐ™์€ 10 Hz. row ํ•˜๋‚˜ = ์ œ์–ด ์ฃผ๊ธฐ ํ•˜๋‚˜. ๊ฐ€์†์€ ๋ชจ๋ธ์ด ์ด๋ฏธ target ์— ๋„ฃ์–ด ๋’€์œผ๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ฑด๋„ˆ๋›ฐ๊ฑฐ๋‚˜ ๋นจ๋ฆฌ ์žฌ์ƒํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค
replan baseline ๊ณผ ๊ฐ™์€ ๊ฐ’์„ ์“ฐ์‹ญ์‹œ์˜ค (chunk 16 row ์ „๋ถ€ ์‹คํ–‰ ํ›„ ์žฌ์ถ”๋ก , ๋˜๋Š” ์“ฐ๋˜ replan step). ๋น„๊ต ์‹คํ—˜์ด๋ฉด baseยทspeedup ๋‘˜ ๋‹ค ๊ฐ™์€ ๊ฐ’
DiT ํ–‰ [state 1][future 32][action 16], PE ๋Š” ์ค„ ์ „์ฒด (MoSS ๊ทœ์•ฝ, real_franka_ATQ README ์˜ (b))

ํด๋ผ์ด์–ธํŠธ (gr00t/eval/robot.py):

from gr00t.eval.robot import RobotInferenceClient
client = RobotInferenceClient(host="<์„œ๋ฒ„ IP>", port=5555)
modality = client.get_modality_config()   # ๋ณด๋‚ด์•ผ ํ•  ํ‚ค
action = client.get_action(obs)           # obs -> {"action.joint_pos_abs": (16,7), "action.gripper_close": (16,1)}

๊ธฐ๋Œ€ ํšจ๊ณผ: ๊ฐ™์€ replan ๊ทœ์น™์—์„œ baseline ๋Œ€๋น„ ์—ํ”ผ์†Œ๋“œ ์‹œ๊ฐ„ โ‰ˆ 1/1.25 (coarse ๊ตฌ๊ฐ„๋งŒ 2๋ฐฐ). ์ •๋ฐ€ ๊ตฌ๊ฐ„์˜ ์„ฑ๊ณต๋ฅ ์€ ์œ ์ง€๋˜๋Š” ๊ฒƒ์ด ๋…ผ๋ฌธ์˜ ์ฃผ์žฅ์ด๊ณ , ์ด ์‹ค๊ธฐ ์‹คํ—˜์ด ๊ทธ๊ฒƒ์„ ํ™•์ธํ•˜๋Š” ์ž๋ฆฌ์ž…๋‹ˆ๋‹ค.

์ถ”๋ก  ์Šค๋ชจํฌ (๋ฆด๋ฆฌ์Šค ์ „ ํ™•์ธ)

MLXP GPU ์ปจํ…Œ์ด๋„ˆ์—์„œ ์œ„ ๋ฐฐ์„  ๊ทธ๋Œ€๋กœ(Gr00tPolicy + real_droid_joint + new_embodiment, denoising 4) air_frier ์—ํ”ผ์†Œ๋“œ 0 ์˜ ์‹ค์ œ ๊ด€์ธก์œผ๋กœ get_action ์„ ํ˜ธ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค.

frame action.joint_pos_abs action.gripper_close ์ง€์—ฐ(s) 1๋ฐฐ์† ์‹œ์—ฐ ๋Œ€๋น„ ํ‰๊ท  ์ ˆ๋Œ€ ์˜ค์ฐจ (rad)
0 (16,7) (16,1) 0.56 (warm-up) 0.065
5 (16,7) (16,1) 0.06 0.083
50 (16,7) (16,1) 0.07 0.052
120 (16,7) (16,1) 0.07 0.011
200 (16,7) (16,1) 0.07 0.012
300 (16,7) (16,1) 0.06 0.043

๊ฐ’์€ ์ „๋ถ€ ์œ ํ•œ. ์—ํ”ผ์†Œ๋“œ ์ดˆ๋ฐ˜(0~50, ์ ‘๊ทผ ๊ตฌ๊ฐ„ = coarse)์˜ ์˜ค์ฐจ๊ฐ€ ์ •๋ฐ€ ๊ตฌ๊ฐ„(120ยท200)๋ณด๋‹ค ํฐ ๊ฒƒ์€ ์ •์ƒ์ž…๋‹ˆ๋‹ค โ€” ์ด ๋ชจ๋ธ์€ coarse ๊ตฌ๊ฐ„์—์„œ 2 ํ”„๋ ˆ์ž„ ๋’ค์˜ target ์„ ๋‚ด๋ฏ€๋กœ 1๋ฐฐ์† ์‹œ์—ฐ์˜ ๊ฐ™์€ index ์™€๋Š” ๋‹น์—ฐํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ฐ™์€ ์Šค๋ชจํฌ์—์„œ real_franka_basline/air_frier ๋ฅผ ๋Œ๋ฆฌ๋ฉด ์ดˆ๋ฐ˜ ์˜ค์ฐจ๊ฐ€ ์ž‘์•„์•ผ ํ•˜๊ณ , ๊ทธ ์ฐจ์ด๊ฐ€ ๊ฐ€์†์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ json: infer_smoke/demospeed_30k_infer.json, ์Šคํฌ๋ฆฝํŠธ infer_smoke/infer_smoke.py.

์ฃผ์˜

  • ์ฝ”๋“œ๋Š” MoSS ํŒ(code_human_data_moss.tar.gz)์„ ์“ฐ์‹ญ์‹œ์˜ค. GR00T-action-quantization ๊ณ„์—ด ์ฝ”๋“œ์˜ torchvision_av ๋””์ฝ”๋”๋Š” keyframe ๋งŒ ๋Œ๋ ค์ฃผ๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(์ถ”๋ก  ์˜์ƒ์€ ์นด๋ฉ”๋ผ์—์„œ ์ง์ ‘ ์˜ค๋ฏ€๋กœ ๋ฌด๊ด€ํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ ๊ฒ€์ฆํ•  ๋•Œ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค). MoSS ํŒ gr00t/utils/video.py md5 3a2861c4.
  • Eagle ๋ฐฑ๋ณธ์˜ ๋™์  ๋ชจ๋“ˆ์ด import ์‹œ์ ์— CUDA ๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. GPU ์—†๋Š” ๋…ธ๋“œ์—์„œ๋Š” --device cpu ๋ฅผ ์ค˜๋„ ์ฃฝ์Šต๋‹ˆ๋‹ค.
  • transformers==4.51.3, torch 2.7, timm, decord ํ•„์š” (ํ•™์Šต ์ปจํ…Œ์ด๋„ˆ์™€ ๊ฐ™์€ ์กฐํ•ฉ).
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support