File size: 17,471 Bytes
189b4a9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bbf28bd
cf7a2f6
 
 
 
 
 
bbf28bd
96767e3
bbf28bd
 
96767e3
 
 
bbf28bd
96767e3
 
 
 
 
 
 
 
5c6d092
 
 
 
96767e3
 
 
 
 
 
 
 
bbf28bd
 
57f2c32
 
 
bbf28bd
 
 
 
 
 
96767e3
bbf28bd
5c6d092
 
 
 
 
 
 
 
 
ed4799c
 
 
 
 
bbf28bd
57f2c32
 
 
 
 
96767e3
 
 
ed4799c
 
c7118d0
 
 
ed4799c
189b4a9
 
96767e3
5c6d092
ed4799c
 
5c6d092
bbf28bd
189b4a9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c7118d0
 
 
ed4799c
 
 
189b4a9
 
 
 
 
 
96767e3
ed4799c
 
 
189b4a9
 
 
 
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
---
license: gemma
library_name: lerobot
pipeline_tag: robotics
tags:
  - robotics
  - lerobot
  - pi052
  - vision-language-action
base_model: lerobot/pi052_base
---

# Redox_200epi_subtask_pi052

OpenArm ์–‘ํŒ” ๋กœ๋ด‡(`bi_openarm_follower`, ์นด๋ฉ”๋ผ 3๋Œ€, stateยทaction 16์ฐจ์›)์˜ Redox ์‹œ์—ฐ 200๊ฐœ๋กœ
[`lerobot/pi052_base`](https://huggingface.co/lerobot/pi052_base)๋ฅผ 3๋งŒ ์Šคํ… ์ „์ฒด ๋ฏธ์„ธ์กฐ์ •ํ•œ **PI052** ์ •์ฑ…์ด๋‹ค.
์ฒดํฌํฌ์ธํŠธ ํ•˜๋‚˜๊ฐ€ "task ๋ฌธ์žฅ โ†’ ์„œ๋ธŒํƒœ์Šคํฌ ๋ฌธ์žฅ ์ƒ์„ฑ โ†’ ๊ทธ ๋ฌธ์žฅ์„ ์กฐ๊ฑด์œผ๋กœ ์•ก์…˜ ์ฒญํฌ(50์Šคํ…)"๋ฅผ ํ•œ๋‹ค.

task ๋ฌธ์žฅ (ํ•™์Šต์— ์“ด ๊ฒƒ์€ ์ด๊ฒƒ ํ•˜๋‚˜๋‹ค):

> Hold the metal plate by the orange handle, dip it into the blue solution, take it out and point at it, then put the plate back in the beaker on the left.

์ƒ์„ฑ๋˜๋Š” ์„œ๋ธŒํƒœ์Šคํฌ ๋ฌธ์žฅ์€ ์•„๋ž˜ 8๊ฐœ๋ฟ์ด๋‹ค. ๊ตฌ๊ฐ„๋งˆ๋‹ค ํ•œ ๋ฌธ์žฅ์œผ๋กœ ๊ณ ์ •ํ•ด ํ•™์Šตํ–ˆ๋‹ค.

1. lift the metal plate out of the left beaker
2. move the plate over the blue solution
3. point at the plate with the left hand
4. lower the plate into the blue solution
5. hold the plate still in the solution
6. raise the plate and point at it
7. put the plate into the left beaker
8. return to the home posture

## ์“ฐ๋ ค๋ฉด

- **lerobot PR [#4184](https://github.com/huggingface/lerobot/pull/4184)์˜ ๋ธŒ๋žœ์น˜ `codex/pi052-language-policy`๊ฐ€ ํ•„์š”ํ•˜๋‹ค** (ํ•™์Šต์— ์“ด ์ปค๋ฐ‹ `3298e15`, lerobot 0.6.2).
  PyPI์˜ 0.6.1์—๋Š” `pi052` ์ •์ฑ…๋„ `--interactive`๋„ ์—†๋‹ค.
  0.6.1์ด ๊น”๋ฆฐ ํ™˜๊ฒฝ์˜ `lerobot-rollout`์œผ๋กœ ์•„๋ž˜ ๋ช…๋ น์„ ๋Œ๋ฆฌ๋ฉด `error: unrecognized arguments: --interactive=true --autosteer_interval_s=3`์œผ๋กœ ๋๋‚œ๋‹ค.
  ๋ธŒ๋žœ์น˜๋ฅผ ๊น ํ™˜๊ฒฝ์„ ๋”ฐ๋กœ ๋งŒ๋“ค๊ณ  ๊ทธ ํ™˜๊ฒฝ์˜ ๊ฒƒ์„ ๊ฒฝ๋กœ๋กœ ์ ์–ด ๋ถ€๋ฅธ๋‹ค(์˜ˆ: `.venv_pi052/bin/lerobot-rollout`).
- **`google/paligemma-3b-pt-224` ํ† ํฌ๋‚˜์ด์ €๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.** ์Šน์ธ์ด ํ•„์š”ํ•œ ์ €์žฅ์†Œ(gated)์ด๊ณ  ์ „์ฒ˜๋ฆฌ๊ธฐ๊ฐ€ ์‹คํ–‰ํ•  ๋•Œ ๋ฐ›๋Š”๋‹ค. ๊ทธ ์ €์žฅ์†Œ์—์„œ ์•ฝ๊ด€์— ๋™์˜ํ•œ ๊ณ„์ •์œผ๋กœ
  `hf auth login` ํ•˜๊ณ  ๋ฏธ๋ฆฌ ๋ฐ›์•„ ๋‘”๋‹ค: `hf download google/paligemma-3b-pt-224 tokenizer.json tokenizer.model tokenizer_config.json special_tokens_map.json added_tokens.json config.json`.
  `lerobot-rollout`์€ ๋กœ๋ด‡์„ ์—ฐ๊ฒฐํ•œ ๋’ค์— ์ „์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ๋งŒ๋“ค๋ฏ€๋กœ, ๋ชป ๋ฐ›์œผ๋ฉด ๋กœ๋ด‡์ด ์›€์ง์ธ ๋’ค์— ์ฃฝ๋Š”๋‹ค. ์ด ์ €์žฅ์†Œ์™€ `lerobot/pi052_base`๋Š” ์—ด๋ ค ์žˆ๋‹ค.
  ๋ชจ๋ธ๋งŒ ๋ฏธ๋ฆฌ ๋ฐ›์œผ๋ ค๋ฉด `hf download leapshared/Redox_200epi_subtask_pi052 --exclude "checkpoints/*"` (16.6 GB. ๋นผ์ง€ ์•Š์œผ๋ฉด ์ฒดํฌํฌ์ธํŠธ ๋„ท๊นŒ์ง€ 83 GB๋‹ค).
- **๊ทธ ์ปค๋ฐ‹์˜ ์•ก์…˜ ์ถ”๋ก ์€ ๊ทธ๋Œ€๋กœ๋Š” ์ฃฝ๋Š”๋‹ค**: `TypeError: PI05Pytorch.embed_prefix() takes 5 positional arguments but 7 were given`.
  ๋‘ ์ค„์งœ๋ฆฌ ์ˆ˜์ •์„ ํ•œ ๋ฒˆ ์ ์šฉํ•œ๋‹ค (์ƒ๋ฅ˜๊ฐ€ ๊ณ ์น˜๋ฉด ํ•„์š” ์—†๋‹ค).

```bash
hf download leapshared/Redox_200epi_subtask_pi052 pi052_embed_prefix.patch --local-dir /tmp/pi052
git -C <lerobot ๋ธŒ๋žœ์น˜ ์ฒดํฌ์•„์›ƒ> apply /tmp/pi052/pi052_embed_prefix.patch
```

```bash
lerobot-rollout \
    --robot.type=openarm_sciedu \
    --robot.config_path=config/robot_a.yaml \
    --robot.arms=left,right \
    --robot.go_home=true \
    --robot.entry_ramp_s=2.0 \
    --robot.max_start_mismatch_deg=45.0 \
    --policy.path=leapshared/Redox_200epi_subtask_pi052 \
    --policy.dtype=bfloat16 \
    --strategy.type=base \
    --inference.type=sync \
    --task="lift the metal plate out of the left beaker" \
    --interactive=true \
    --autosteer_interval_s=3 \
    --fps=30 \
    --return_to_initial_position=true \
    --display_data=true \
    --play_sounds=false \
    --device=cuda
```

๋กœ๋ด‡์€ `/start`๋ฅผ ์น  ๋•Œ๊นŒ์ง€ ์›€์ง์ด์ง€ ์•Š๋Š”๋‹ค. **๋‹ค๋งŒ ๋ฐฐ๋„ˆ(๋ช…๋ น ๋ชฉ๋ก)๊ฐ€ ๋œจ๊ธฐ ์ „์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ž…๋ ฅํ•˜์ง€ ์•Š๋Š”๋‹ค**: ๋ชจ๋ธ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” 1๋ถ„ ๋ฐ˜์ฏค์€ ๋กœ๊ทธ๊ฐ€ ์—†๋Š”๋ฐ, ๊ทธ๋™์•ˆ ์นœ ์ค„์€ ๋ฒ„๋ ค์ง€์ง€ ์•Š๊ณ 
์„ธ์…˜์ด ์‹œ์ž‘๋˜๋Š” ์ˆœ๊ฐ„ ์ฝํžŒ๋‹ค. ๋กœ๋”ฉ ์ค‘์— `/start`๋ฅผ ์ณ ๋‘๋ฉด ํ™ˆ ์ด๋™์ด ๋๋‚˜์ž๋งˆ์ž ์•„๋ฌด๊ฒƒ๋„ ์น˜์ง€ ์•Š์•˜๋Š”๋ฐ ๋กค์•„์›ƒ์ด ์‹œ์ž‘๋œ๋‹ค(์‹ค๋ฌผ์—์„œ ์žˆ์—ˆ๊ณ  ์‹œ๋ฎฌ์—์„œ ์žฌํ˜„ํ–ˆ๋‹ค. ์ƒ๋ฅ˜๊ฐ€ ์ž…๋ ฅ ํ๋ฅผ ๋น„์šฐ์ง€ ์•Š๋Š”๋‹ค).
๋ฐฐ๋„ˆ๊ฐ€ ๋œจ๊ณ  ๋‚˜๋ฉด ํ„ฐ๋ฏธ๋„์— ์ฐจ๋ก€๋กœ (**`/autosteer`๋Š” `/start` ๋’ค์—๋งŒ ๋ฐ›๋Š”๋‹ค**):

```text
/start
/autosteer Hold the metal plate by the orange handle, dip it into the blue solution, take it out and point at it, then put the plate back in the beaker on the left.
```

- `--interactive=true`์™€ `/autosteer`๊ฐ€ ์žˆ์–ด์•ผ "task โ†’ ์„œ๋ธŒํƒœ์Šคํฌ ์ƒ์„ฑ โ†’ ์•ก์…˜" ๊ณ ๋ฆฌ๊ฐ€ ๋ˆ๋‹ค. ๋นผ๋ฉด `--task`์˜ ๋ฌธ์žฅ ํ•˜๋‚˜๋งŒ ๋๊นŒ์ง€ ๋”ฐ๋ฅธ๋‹ค.
- `--task`์—๋Š” ์ „์ฒด task ๋ฌธ์žฅ์ด ์•„๋‹ˆ๋ผ **์ฒซ ์„œ๋ธŒํƒœ์Šคํฌ ๋ฌธ์žฅ**์„ ์ค€๋‹ค. ์•ก์…˜ ์ชฝ์€ ์„œ๋ธŒํƒœ์Šคํฌ ๋ฌธ์žฅ์œผ๋กœ๋งŒ ํ•™์Šตํ–ˆ๊ณ , `/start`์™€ ์ฒซ `/autosteer` ๋‹ต ์‚ฌ์ด์—๋Š” `--task`๊ฐ€ ๊ทธ๋Œ€๋กœ ์•ก์…˜์˜ ํ”„๋กฌํ”„ํŠธ๋‹ค. ์ „์ฒด task ๋ฌธ์žฅ์€ `/autosteer`์— ์ค€๋‹ค.
- `--duration`์€ ์ฃผ์ง€ ์•Š์•˜๋‹ค(0 = ์ œํ•œ ์—†์Œ). ๋Œ€ํ™”ํ˜•์—์„œ๋Š” `/start` ํ•œ ๋ฒˆ์˜ ๊ธธ์ด์ด๊ณ , ๋‹ค ๋˜๋ฉด ํ™ˆ์œผ๋กœ ๊ฐ€์ง€ ์•Š๊ณ  **๊ทธ ์ž๋ฆฌ์— ๋ฉˆ์ถฐ ์ž์„ธ๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ autosteer๋„ ๊บผ์ง„๋‹ค.**
  ์ด ๋กœ๋ด‡์˜ ์‹ค๊ธฐ `sync` ๋ฃจํ”„๋Š” 30 Hz๊ฐ€ ์•„๋‹ˆ๋ผ 14~21 Hz๋กœ ์žฌ์–ด์ ธ ์žˆ์–ด(๋‹ค๋ฅธ ์ •์ฑ…์œผ๋กœ ์žฐ ๊ฐ’์ด๋‹ค. ํ‹ฑ์˜ ๋Œ€๋ถ€๋ถ„์ด ์นด๋ฉ”๋ผยทCAN ๋“ฑ ๋กœ๋ด‡ ์ชฝ์ด๋‹ค) 30~41์ดˆ์งœ๋ฆฌ ์‹œ์—ฐ์ด 60~85์ดˆ์ฏค ๊ฑธ๋ฆฐ๋‹ค.
  ์ƒํ•œ์„ ๊ฑธ๋ ค๋ฉด ๋„‰๋„‰ํžˆ(`--duration=180`) ์ค€๋‹ค.
- **์ฒ ํŒ์„ ์ฅ๊ณ  ์žˆ๊ฑฐ๋‚˜ ์ฒ ํŒ์ด ์šฉ์•กยท๋น„์ปค ์•ˆ์— ์žˆ๋Š” ๋™์•ˆ์—๋Š” `/stop`, `/reset`, Ctrl-C๋ฅผ ํ•˜์ง€ ์•Š๋Š”๋‹ค.** ์…‹ ๋‹ค ๋จผ์ € ์ฒ˜์Œ ์ž์„ธ๋กœ 3์ดˆ ๋™์•ˆ ๊ด€์ ˆ ๊ณต๊ฐ„์—์„œ ์ง์„ ์œผ๋กœ ๊ฐ€๊ณ 
  (`return_to_initial_position`), ๊ทธ๋ฆฌํผ๋„ ์ฒ˜์Œ ๊ฐ’(์—ด๋ฆผ)์œผ๋กœ ๊ฐ™์ด ๋Œ์•„๊ฐ€๋ฏ€๋กœ ๊ฐ€๋Š” ๋„์ค‘์— ์ฒ ํŒ์„ ๋†“๋Š”๋‹ค. `/stop`๊ณผ Ctrl-C๋Š” ๊ทธ ๋’ค์— ํŒ”์„ ๋‚ด๋ฆฌ๊ณ  ํ† ํฌ๋ฅผ ํ‘ผ๋‹ค.
  ์ฒ ํŒ์ด ์™ผ์ชฝ ๋น„์ปค์— ๋Œ์•„๊ฐ€๊ณ  ํŒ”์ด ํ™ˆ์— ์˜จ ๋’ค์— `/stop`ํ•œ๋‹ค. ๊ธ‰ํ•˜๋ฉด ๋น„์ƒ์ •์ง€๋‹ค.
- `/subtask <๋ฌธ์žฅ>`์€ ๊ทธ ๋ฌธ์žฅ์„ ์•ก์…˜์˜ ํ”„๋กฌํ”„ํŠธ๋กœ ๋ฐ”๋กœ ๊ฑด๋‹ค(autosteer๋Š” ๊บผ์ง€๊ณ , `sync` ์—”์ง„์€ ํ์— ๋‚จ์€ ์•ก์…˜์„ ๋ฒ„๋ฆฌ๊ณ  ๊ทธ ํ‹ฑ์— ์ƒˆ๋กœ ์ถ”๋ก ํ•œ๋‹ค).
  ๊ณ ์ˆ˜์ค€์ด ํ•œ ๋ฌธ์žฅ์— ๋จธ๋ฌผ๊ฑฐ๋‚˜ ์•ž ๋‹จ๊ณ„๋กœ ๋˜๋Œ์•„๊ฐ€๋ฉด `/subtask raise the plate and point at it` โ†’ `/subtask put the plate into the left beaker` โ†’
  `/subtask return to the home posture`๋กœ ๋๊นŒ์ง€ ๋ณด๋‚ธ ๋’ค `/stop`ํ•œ๋‹ค. ๋‹ค์‹œ ๋งก๊ธฐ๋ ค๋ฉด `/autosteer <task ๋ฌธ์žฅ>`. ์‹ค๋ฌผ์—์„œ๋Š” ํ™•์ธํ•˜์ง€ ์•Š์•˜๋‹ค.
- ๋๋‚œ ๋’ค์—๋Š” 'return to the home posture'์— ๋จธ๋ฌธ๋‹ค. ์‹œ์—ฐ์€ ํ™ˆ๊นŒ์ง€ ๋Œ์•„๊ฐ€์ง€ ์•Š๊ณ  ํ™ˆ์—์„œ ๊ด€์ ˆ ๊ธฐ์ค€ ์•ฝ 21๋„ ์•ž(200๊ฐœ์˜ ์ค‘์•™๊ฐ’)์—์„œ ๋๋‚˜๊ณ , ๊ทธ ์žฅ๋ฉด์˜ ๋ผ๋ฒจ์€ ์ „๋ถ€ 'return ...'์ด๋‹ค.
  ๊ณ ์ˆ˜์ค€์—๋Š” ๊ธฐ์–ต์ด ์—†์œผ๋ฏ€๋กœ ๊ฑฐ๊ธฐ๊ฐ€ ๊ณ ์ •์ ์ด๋‹ค(์‹ค๋ฌผ์—์„œ๋„ ๊ทธ๋žฌ๋‹ค. ํ•™์Šต์— ์“ฐ์ง€ ์•Š์€ ์˜์ƒ 4๊ฐœ ์ค‘ 3๊ฐœ๋„ 'return ...'์œผ๋กœ ๋๋‚ฌ๊ณ  ๋๋‚œ ๋’ค 'lift ...'๋กœ ๋„˜์–ด๊ฐ„ ์ ์€ ์—†๋‹ค. ๋‚˜๋จธ์ง€ ํ•˜๋‚˜๋Š” 'move the plate over ...'๋กœ ๋๋‚ฌ๋‹ค). `/autosteer`๋ฅผ ๋‹ค์‹œ ๋„ฃ๋Š” ๊ฒƒ์œผ๋กœ๋Š” ์ƒˆ ๋ฐ”ํ€ด๊ฐ€ ์‹œ์ž‘๋˜์ง€ ์•Š๋Š”๋‹ค.
  ์ƒˆ ๋ฐ”ํ€ด๋Š” ์ฒ ํŒ์„ ๋น„์ปค์— ๋Œ๋ ค๋†“์€ ์ƒํƒœ์—์„œ `/reset`(์ฒ˜์Œ ์ž์„ธ๋กœ 3์ดˆ ๋ณต๊ท€, task ๋ณต์›) โ†’ `/start` โ†’ `/autosteer`. ๋‘ ๋ฒˆ์งธ `/start`์—๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ง„์ž… ๋žจํ”„๊ฐ€ ์—†๋‹ค(ํ”„๋กœ์„ธ์Šค๋‹น ํ•œ ๋ฒˆ. ํด๋žจํ”„์™€ ์†๋„ ์ œํ•œ๋งŒ ๊ฑธ๋ฆฐ๋‹ค).
- **`/autosteer` ์ค„์„ ํ„ฐ๋ฏธ๋„ ํ™”๋ฉด์—์„œ ๋ณต์‚ฌํ•˜์ง€ ์•Š๋Š”๋‹ค**(์ ‘ํžŒ ์ค„์ด ๋‘ ์ค„๋กœ ๋ถ™๋Š”๋‹ค). [`autosteer_line.txt`](./autosteer_line.txt)๋ฅผ ์—๋””ํ„ฐ๋กœ ์—ด์–ด ๋ณต์‚ฌํ•˜๊ณ , `Autosteer on โ€” goal '...'`์ด `on the left.`๋กœ ๋๋‚˜๋Š”์ง€ ๋ณธ๋‹ค.
  ์‹ค๋ฌผ ์ฒซ ์‹คํ–‰์—์„œ ๋ชฉํ‘œ๊ฐ€ `... then put`์—์„œ ์ž˜๋ ค ๋“ค์–ด๊ฐ€ ๋ชฉ๋ก์— ์—†๋Š” ๋ฌธ์žฅ('lift the plate out of the left beaker', 'raise raise')์ด ๋‚˜์™”๋‹ค. ๊ฐ™์€ ํ”„๋ ˆ์ž„์œผ๋กœ ์žฌ๋ฉด ์ „์ฒด ๋ฌธ์žฅ์€ ๋ชฉ๋ก ๋ฐ– 0๋ฒˆ(334ํšŒ ์ค‘), ์ž˜๋ฆฐ ๋ฌธ์žฅ์€ 46๋ฒˆ์ด๋‹ค.
- ๋‹ค๋ฅธ ์ฒดํฌํฌ์ธํŠธ: `--policy.pretrained_revision=020000` (ํƒœ๊ทธ `015000` ~ `030000`).
- ๊ฐ€์ค‘์น˜๋Š” fp32๋กœ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค(16.6 GB). `--policy.dtype=bfloat16`์ด๋ฉด ๋ถˆ๋Ÿฌ์˜จ ๋’ค 8.7 GiB๋‹ค. **๋‹ค๋งŒ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋„์ค‘์˜ ํ”ผํฌ๋Š” 24.2 GiB์ด๊ณ  ์บ์‹œ๊ฐ€ ์•„๋‹ˆ๋ผ ์‹ค์ œ ํ• ๋‹น์ด๋‹ค**
  (fp32 state dict์™€ bf16 ๋ชจ๋ธ์ด GPU์— ๊ฐ™์ด ์žˆ๋Š” ์ˆœ๊ฐ„. H200๊ณผ RTX 5090์—์„œ ๊ฐ™์€ ๊ฐ’). 32 GB ์นด๋“œ์—์„œ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ GPU๋ฅผ ์ฅ๊ณ  ์žˆ์œผ๋ฉด ๋กœ๋”ฉ์—์„œ OOM์ด ๋‚œ๋‹ค. ๋กœ๋”ฉ์€ ๋กœ๋ด‡ ์—ฐ๊ฒฐ๋ณด๋‹ค ์•ž์ด๋‹ค.
  ๋ถˆ๋Ÿฌ์˜จ ๋’ค์—๋„ ๊ทธ ํ”„๋กœ์„ธ์Šค๋Š” `nvidia-smi`์— ์•ฝ 25 GiB๋กœ ๋ณด์ธ๋‹ค(ํ• ๋‹น์ž ์บ์‹œ์ด๊ณ  ์ถ”๋ก ์— ๋‹ค์‹œ ์“ฐ์ธ๋‹ค).
- RTX 5090(bf16, ๋กœ๋ด‡ ์—†์ด ์žฐ ๊ฐ’): ์ฒญํฌ ์ถ”๋ก  ์ฒซ ํšŒ 2.1์ดˆยท์ดํ›„ 155 ms, ์„œ๋ธŒํƒœ์Šคํฌ ์ƒ์„ฑ ์ฒซ ํšŒ 1.8์ดˆยท์ดํ›„ 116 ms. `sync`์—์„œ๋Š” ์ด ์‹œ๊ฐ„ ๋™์•ˆ ์ œ์–ด ๋ฃจํ”„๊ฐ€ ๋ฉˆ์ถ˜๋‹ค:
  `/start` ๋’ค ์•ฝ 2์ดˆ๋Š” ๋ช…๋ น์ด ๋‚˜๊ฐ€์ง€ ์•Š๊ณ  ๋กœ๋ด‡์€ ๋งˆ์ง€๋ง‰ ๋ช…๋ น์œผ๋กœ ์ž์„ธ๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ, ์ฒซ `/autosteer` ์งˆ์˜ ๋•Œ ํ•œ ๋ฒˆ ๋” ์•ฝ 2์ดˆ ๋ฉˆ์ถ˜๋‹ค. ๊ทธ ๋’ค๋กœ๋Š” ์ฒญํฌ ๊ฒฝ๊ณ„์™€ ์งˆ์˜๋งˆ๋‹ค 0.1~0.15์ดˆ๋‹ค.
- **RTC**: ๊ธฐ๋ณธ(`sync`)์—์„œ๋Š” ์ฒญํฌ ์ถ”๋ก ๊ณผ ์„œ๋ธŒํƒœ์Šคํฌ ์ƒ์„ฑ ๋™์•ˆ ์ œ์–ด ๋ฃจํ”„๊ฐ€ ๋ฉˆ์ถ˜๋‹ค. `--inference.type=rtc --inference.rtc.execution_horizon=10`์„ ์–น์œผ๋ฉด ๋‘˜ ๋‹ค ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ๋ˆ๋‹ค.
  `--inference.rtc.mode=trained`๋Š” **์“ธ ์ˆ˜ ์—†๋‹ค**. RTC๋กœ ํ•™์Šตํ•œ ์ฒดํฌํฌ์ธํŠธ ์ „์šฉ์ด๊ณ  ์ด ๋ชจ๋ธ์€ `rtc_training_max_delay=0`์ด๋ผ ์‹œ์ž‘ํ•  ๋•Œ ๊ฑฐ๋ถ€๋œ๋‹ค. ๊ธฐ๋ณธ๊ฐ’ `guided`๋กœ ๋‘”๋‹ค.
  `--inference.queue_threshold`๋Š” ๊ธฐ๋ณธ 30์œผ๋กœ ๋‘”๋‹ค(0์œผ๋กœ ํ•˜๋ฉด ์‹œ๋ฎฌ์—์„œ ํ‹ฑ์˜ 34%๊ฐ€ ๋ณด๋‚ผ ์•ก์…˜ ์—†์ด ์ง€๋‚˜๊ฐ”๋‹ค. 30์—์„œ๋Š” 18%์ด๊ณ  ๋Œ€๋ถ€๋ถ„ ์ฒซ ์ถ”๋ก ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ช‡ ์ดˆ๋‹ค).
- ๋Ÿฐ์ฒ˜ [`rollout_pi052.py`](./rollout_pi052.py)๋Š” `lerobot-rollout`๊ณผ ๊ฐ™์€ ์ธ์ž๋ฅผ ๋ฐ›์œผ๋ฉด์„œ ์‹ค๋ฌผ ์ฒซ ์‹คํ–‰์—์„œ ๋‚˜์˜จ ๋ฌธ์ œ๋“ค์„ ๋ง‰๋Š”๋‹ค(์ž์„ธํ•œ ๊ฒƒ์€ [`ROLLOUT_PC_SETUP.md`](./ROLLOUT_PC_SETUP.md) 3-1).
  ํ•ญ์ƒ: ์œ„ `embed_prefix` ์ˆ˜์ •์„ ์‹คํ–‰ํ•  ๋•Œ ๋ฎ๊ณ , ๋ฐฐ๋„ˆ ์ง์ „์— ํ„ฐ๋ฏธ๋„ ์ž…๋ ฅ ํ๋ฅผ ๋น„์šฐ๊ณ (๋กœ๋”ฉ ์ค‘์— ์นœ `/start`๊ฐ€ ์ถœ๋ฐœ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค), ๊ฐ™์€ ์„œ๋ธŒํƒœ์Šคํฌ๋ฅผ 3์ดˆ๋งˆ๋‹ค ๋‹ค์‹œ ์ฐ์ง€ ์•Š๋Š”๋‹ค.
  `PI052_SUBTASK_ORDER=redox_subtasks.txt`: ๋ชฉ๋ก์— ์—†๋Š” ์ƒ์„ฑ ๋ฌธ์žฅ์€ ๋ชฉ๋ก์˜ ๋ฌธ์žฅ๊ณผ ๊ฑฐ์˜ ๊ฐ™์œผ๋ฉด(์œ ์‚ฌ๋„ 0.85 ์ด์ƒ) ๋งž์ถ”๊ณ  ์•„๋‹ˆ๋ฉด ๋ฒ„๋ฆฐ๋‹ค.
  `PI052_SUBTASK_CONFIRM_JUMPS=1`(๊ธฐ๋ณธ์€ ๊บผ์ง): ์ง€๊ธˆ ๋‹จ๊ณ„์—์„œ 0~+2๋‹จ๊ณ„๊ฐ€ ์•„๋‹Œ ๋‹ต์€ ๊ฐ™์€ ๋‹ต์ด ๋‘ ๋ฒˆ ์—ฐ๋‹ฌ์•„ ๋‚˜์™€์•ผ ๋ฐ›๋Š”๋‹ค(์•„๋ž˜ "์•Œ๋ ค์ง„ ํ•œ๊ณ„"์˜ ํ•œ ์žฅ๋ฉด ํ˜ผ๋™ ๋Œ€์ฑ…. ์ž ๊ธฐ์ง€ ์•Š๋Š”๋‹ค).
  ์ฒ˜์Œ์— ์žˆ๋˜ "์•ž ๋‹จ๊ณ„ ๋ฌธ์žฅ์€ ๋ฒ„๋ฆฐ๋‹ค"๋Š” ์—†์•ด๋‹ค: ์•ž์œผ๋กœ ์ž˜๋ชป ๋›ด ๋‹ต ํ•˜๋‚˜๋ฅผ ๋ฐ›์œผ๋ฉด ๊ทธ ๋’ค์˜ ์˜ณ์€ ๋‹ต์ด ์ „๋ถ€ ๋ฒ„๋ ค์ ธ ์˜ค๋‹ต์ด ๊ตณ๋Š”๋‹ค.
  `PI052_AUTOSTEER_GOAL=autosteer_goal.txt`: `/autosteer go`์ฒ˜๋Ÿผ ๋ฌด์—‡์„ ์น˜๋“  ํŒŒ์ผ์˜ ๋ฌธ์žฅ์„ ๋ชฉํ‘œ๋กœ ์“ด๋‹ค.
- FAST ํ† ํฌ๋‚˜์ด์ €(`action_tokenizer/`)์™€ ์ •๊ทœํ™” ํ†ต๊ณ„๋Š” ์ฒดํฌํฌ์ธํŠธ์— ๋“ค์–ด ์žˆ๋‹ค.

ํ™•์ธํ•œ ๋ฒ”์œ„: ์œ„ ๋ช…๋ น์„ ๋กœ๋ด‡๋งŒ MuJoCo ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ(`--robot.type=openarm_sciedu_sim`)๋กœ ๋ฐ”๊ฟ” `sync`์™€ `rtc` ๋‘˜ ๋‹ค, ์ด ํ—ˆ๋ธŒ ์ €์žฅ์†Œ์—์„œ ๋ชจ๋ธ์„ ๋ฐ›์•„ ๋๊นŒ์ง€ ๋Œ๋ ธ๋‹ค
(์—ฐ๊ฒฐ โ†’ `/start` โ†’ `/autosteer` โ†’ 3์ดˆ๋งˆ๋‹ค ์„œ๋ธŒํƒœ์Šคํฌ ์ƒ์„ฑยท์ ์šฉ โ†’ ์•ก์…˜ โ†’ ์ข…๋ฃŒ. ๊ทธ๋•Œ๋Š” `--duration=90`์„ ์คฌ๊ณ  `--inference.type`์€ ์ ์ง€ ์•Š์•˜๋‹ค).
**์‹ค๋ฌผ ์ฒซ ์‹คํ–‰(2026-09-21)**: ๋กœ๋”ฉยท์นด๋ฉ”๋ผยทํ™ˆ ์ด๋™ยทsync ์—”์ง„์€ ์ •์ƒ์ด์—ˆ๊ณ  ๋ชฉํ‘œ๋ฅผ ํ•œ ์ค„๋กœ ๋„ฃ์€ ์‹คํ–‰์—์„œ๋Š” ์„œ๋ธŒํƒœ์Šคํฌ ๋ฌธ์žฅ์ด ์ˆœ์„œ๋Œ€๋กœ ๋Œ์•˜๋‹ค. **๊ทธ๋Ÿฌ๋‚˜ ํŒ”์€ ์ฒ ํŒ ์žก๊ธฐ๋ฅผ ๋†“์ณค๊ณ , ๋นˆ์†์œผ๋กœ ๋“ค์–ด ์˜ฌ๋ฆฌ๊ณ 
๋‹ค๋ฅธ ์†์œผ๋กœ ๊ฐ€๋ฆฌํ‚จ ๋’ค ์ค‘๊ฐ„ ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ฐ์–ด 'return to the home posture'๊นŒ์ง€ ๊ฐ”๋‹ค. ๊ณผ์ œ๋Š” ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ๋‹ค**(์•„๋ž˜ "์•Œ๋ ค์ง„ ํ•œ๊ณ„").
์ง€๊ธˆ์˜ ์ค„ ์ˆœ์„œ, `--inference.type=sync`, `--duration` ์—†์Œ์€ ์‹ค๋ฌผ ๋กœ๋ด‡ ์ธ์ž ๊ทธ๋Œ€๋กœ ๋ธŒ๋žœ์น˜์˜ ํŒŒ์„œ๋กœ ํŒŒ์‹ฑ๋งŒ ํ™•์ธํ–ˆ๋‹ค. **์‹ค๋ฌผ ๋กœ๋ด‡์—์„œ๋Š” ์•„์ง ๋Œ๋ฆฌ์ง€ ์•Š์•˜๋‹ค.**

## ํ•™์Šต

| | |
|---|---|
| ๋ฐ์ดํ„ฐ | `leapshared/Redox_200epi_subtask`(200 ์—ํ”ผ์†Œ๋“œ, 193,755 ํ”„๋ ˆ์ž„)์˜ ํ”„๋ ˆ์ž„๋ณ„ ์„œ๋ธŒํƒœ์Šคํฌ ๋ผ๋ฒจ์„ `language_persistent` ์ปฌ๋Ÿผ์œผ๋กœ ์˜ฎ๊ธฐ๊ณ  task ๋ฌธ์žฅ์„ ํ•˜๋‚˜๋กœ ๋˜๋Œ๋ฆฐ ๋กœ์ปฌ ๋ณ€ํ™˜๋ณธ. ๋ณ€ํ™˜ ๋’ค ์ „ ํ”„๋ ˆ์ž„์—์„œ ์›๋ณธ ๋ผ๋ฒจ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค |
| ๋ผ๋ฒจ | ์†์œผ๋กœ ๊ฒฝ๊ณ„๋ฅผ ๋‹จ ์—ํ”ผ์†Œ๋“œ 9๊ฐœ(0, 28, 37, 82, 91, 118, 123, 151, 165), ๋‚˜๋จธ์ง€ 191๊ฐœ๋Š” ๊ตฌ๊ฐ„ ๋น„์œจ๋กœ ์ฑ„์›€(์† ๋ผ๋ฒจ ๋Œ€๋น„ ํ‰๊ท  0.85์ดˆ) |
| ๋ ˆ์‹œํ”ผ | PI052 ๊ธฐ๋ณธ๊ฐ’: ๊ณ ์ˆ˜์ค€(task โ†’ ์„œ๋ธŒํƒœ์Šคํฌ ํ…์ŠคํŠธ) 30%, ์ €์ˆ˜์ค€(์„œ๋ธŒํƒœ์Šคํฌ โ†’ ์•ก์…˜) 70%. text 1 / flow 10 / FAST 1, knowledge insulation, `flow_num_repeats=5` |
| ๊ทœ๋ชจ | ๋ฐฐ์น˜ 32 x 3๋งŒ ์Šคํ…(์•ฝ 5 ์—ํญ), ์ „์ฒด ๋ฏธ์„ธ์กฐ์ •, gradient checkpointing, H200 ํ•œ ์žฅ์—์„œ 2.27 s/step |
| ์ •๋ฐ€๋„ | fp32 ๊ฐ€์ค‘์น˜ + bf16 autocast (`--policy.dtype=float32 --accelerator.mixed_precision=bf16`) |
| ์ •๊ทœํ™” | actionยทstate ๋ถ„์œ„์ˆ˜๋ฅผ ์ „ ํ”„๋ ˆ์ž„ ์ฐธ ๋ถ„์œ„์ˆ˜๋กœ ๊ต์ฒด([q01, q99] ๋ฐ– ๋น„์œจ 19~22% โ†’ 1.8%) |
| **flow ์‹œ๊ฐ„** | **1๋งŒ ์Šคํ…๋ถ€ํ„ฐ [0.05, 1]์—์„œ๋งŒ ํ‘œ์ง‘** (`time_sampling_offset=0.05`, `scale=0.95`. ๊ธฐ๋ณธ๊ฐ’์€ [0.001, 1]) |
| **lr** | 2.5e-5, ์›Œ๋ฐ์—… 1์ฒœ, ์ฝ”์‚ฌ์ธ 3๋งŒ. **1๋งŒ ์Šคํ…๋ถ€ํ„ฐ ์ ˆ๋ฐ˜**(9.7e-6 โ†’ 1.25e-6) |

๊ตต๊ฒŒ ์“ด ๋‘ ๊ฐ€์ง€๋Š” ๋„์ค‘์— ๋ฐ”๊พผ ๊ฒƒ์ด๋‹ค. ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ๋Š” 3 ์—ํญ์งธ(12,400์Šคํ…~)๋ถ€ํ„ฐ flow loss์™€ grad norm์ด ๊ณ„์† ์˜ฌ๋ž๊ณ , lr์„ ์ ˆ๋ฐ˜์œผ๋กœ ํ•ด๋„
2์ฒœ ์Šคํ… ๋Šฆ์ถฐ์กŒ์„ ๋ฟ์ด๋‹ค. ํ”๋“ค๋ฆฐ ์ฒดํฌํฌ์ธํŠธ์—์„œ๋Š” flow ์‹œ๊ฐ„ t โ‰ค 0.1์ผ ๋•Œ๋งŒ ์•ก์…˜ ์ „๋ฌธ๊ฐ€ 1๋ฒˆ ์ธต์˜ Q/K๊ฐ€ ํ„ฐ์ ธ ์žˆ์—ˆ๋‹ค(attention logit ์ตœ๋Œ€ 54 โ†’ 98,304).
์ถ”๋ก ์€ t = 1.0, 0.9, ..., 0.1๋งŒ ๊ณ„์‚ฐํ•˜๋ฏ€๋กœ t < 0.05๋ฅผ ํ•™์Šต์—์„œ ๋บ๊ณ , ๊ทธ ๋’ค๋กœ๋Š” ๋๊นŒ์ง€ ์•ˆ์ •์ ์ด์—ˆ๋‹ค(grad norm 5~7, logit ์ตœ๋Œ€ 45~50).
1๋งŒ ์Šคํ…๊นŒ์ง€๋Š” ์›๋ž˜ ์„ค์ •์œผ๋กœ ํ•™์Šตํ•œ ๊ฒƒ์ด๊ณ  ๊ฑฐ๊ธฐ์„œ ์ด์–ด ๊ฐ”๋‹ค.

## ์ ๊ฒ€

์ „๋ถ€ **ํ•™์Šต์— ์“ด ์—ํ”ผ์†Œ๋“œ**์—์„œ ์žฐ ๊ฐ’์ด๋‹ค(in-sample). ์„œ๋ธŒํƒœ์Šคํฌ๋Š” ์†์œผ๋กœ ๊ฒฝ๊ณ„๋ฅผ ๋‹จ ์—ํ”ผ์†Œ๋“œ 5๊ฐœ๋ฅผ 1์ดˆ๋งˆ๋‹ค(174ํšŒ), ์•ก์…˜ ์˜ค์ฐจ๋Š” ํ”„๋ ˆ์ž„ 16์žฅ x 50์Šคํ….
"๋˜๋Œ์•„๊ฐ"์€ ์ƒ์„ฑ๋œ ๋ฌธ์žฅ์ด ์•ž ๋‹จ๊ณ„์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๋€ ํšŸ์ˆ˜์ด๊ณ , ๋กค์•„์›ƒ ์˜์ƒ์€ ํ•™์Šต์— ์“ฐ์ง€ ์•Š์€ `rollout_Redox_mixed_20260908_*`(๋ผ๋ฒจ ์—†์Œ, 4 ์—ํ”ผ์†Œ๋“œ)์ด๋‹ค.

| ์Šคํ… | ํ•™์Šต loss (flow / text / FAST) | ์„œ๋ธŒํƒœ์Šคํฌ ์ •๋‹ต๋ฅ  | ๋˜๋Œ์•„๊ฐ: in-sample / ๋กค์•„์›ƒ ์˜์ƒ | ์•ก์…˜ ์˜ค์ฐจ |
|---|---|---|---|---|
| 15,000 | 0.006 / 0.009 / 1.26 | 96.0% | 0 / 1 + 4 | 1.25๋„ |
| 20,000 | 0.005 / 0.007 / 1.00 | 97.7% | 0 / 1 + 5 | 1.04๋„ |
| 25,000 | 0.005 / 0.005 / 0.71 | 97.1% | 0 / 1 + 4 | 1.01๋„ |
| **30,000 (๋ฃจํŠธ)** | 0.005 / 0.002 / 0.70 | **98.9%** | 0 / 1 + 4 | **0.69๋„** |

3 ์—ํญ์งธ๋ถ€ํ„ฐ textยทFAST loss๊ฐ€ ์—ํญ ๊ฒฝ๊ณ„๋งˆ๋‹ค ๊ณ„๋‹จ์œผ๋กœ ๋‚ด๋ ค๊ฐ”๋‹ค. ์™ธ์šฐ๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ด๊ณ  ์œ„ ์ˆ˜์น˜์—๋„ ๊ทธ ๋ชซ์ด ๋“ค์–ด ์žˆ๋‹ค.
์–ด๋А ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ๋กœ๋ด‡์—์„œ ๊ฐ€์žฅ ๋‚˜์€์ง€๋Š” ๋กค์•„์›ƒ์œผ๋กœ๋งŒ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

## ์•Œ๋ ค์ง„ ํ•œ๊ณ„

- ๊ณ ์ˆ˜์ค€ ํ”„๋กฌํ”„ํŠธ์—๋Š” ์ง€๊ธˆ์˜ ์˜์ƒ๊ณผ task ๋ฌธ์žฅ๋งŒ ๋“ค์–ด๊ฐ„๋‹ค(์ง€๋‚˜์˜จ ๋‹จ๊ณ„๋„ state๋„ ์—†๋‹ค). ํ•œ ์žฅ๋ฉด์œผ๋กœ ๊ตฌ๋ณ„๋˜์ง€ ์•Š๋Š” ์Œ
  ("point at the plate ..." โ†” "raise the plate and point at it", "lift the metal plate out ..." โ†” "put the plate into ...")์—์„œ๋Š”
  ํ•™์Šต์— ์“ฐ์ง€ ์•Š์€ ์˜์ƒ์—์„œ ๋ฌธ์žฅ์ด ์•ž ๋‹จ๊ณ„๋กœ ๋˜๋Œ์•„๊ฐ€๋Š” ์ผ์ด ์žˆ๊ณ , ํ•™์Šต์„ ๋” ํ•ด๋„ ์ค„์ง€ ์•Š์•˜๋‹ค. ๋‹ด๊ทธ๊ธฐ๊ฐ€ ์‹คํŒจํ•œ ๋’ค๋‚˜ ํŒ์„ ๋˜๋Œ๋ ค ๋†“์€
  ์งํ›„์— ์•ž ๋‹จ๊ณ„ ๋ฌธ์žฅ์ด ๋‚˜์˜ค๋ฉด ์ €์ˆ˜์ค€ ์ •์ฑ…์ด ๊ทธ ๋‹จ๊ณ„๋ฅผ ๋‹ค์‹œ ํ•œ๋‹ค. **"๋Ÿฐํƒ€์ž„์—์„œ ์•ž ๋‹จ๊ณ„๋กœ ๋Œ์•„๊ฐ€์ง€ ์•Š๊ฒŒ ๊ฑด๋‹ค"๋Š” ๋Œ€์ฑ…์ด ์•„๋‹ˆ๋‹ค**(์ฒ˜์Œ์—๋Š” ๊ทธ๋ ‡๊ฒŒ ์ ์—ˆ๋‹ค):
  ๋˜๋Œ์•„๊ฐ€๋Š” ๋‹ต์˜ ๋Œ€๋ถ€๋ถ„์€ ์•ž์œผ๋กœ ์ž˜๋ชป ๋›ด ๋‹ต(3 โ†’ 6, 3 โ†’ 7, 4 โ†’ 7. ํ•™์Šต์— ์“ฐ์ง€ ์•Š์€ ์˜์ƒ 160ํšŒ์—์„œ 7๋ฒˆ, ์ตœ๋Œ€ +4๋‹จ๊ณ„)์˜ ์ •์ •์ด๋ผ์„œ, ๋ง‰์œผ๋ฉด ์˜ค๋‹ต์ด ๊ตณ๋Š”๋‹ค.
  ๋Ÿฐ์ฒ˜์˜ `PI052_SUBTASK_CONFIRM_JUMPS=1`์€ ํฐ ์ ํ”„๋ฅผ ๋‘ ๋ฒˆ ์—ฐ๋‹ฌ์•„ ๋‚˜์˜ฌ ๋•Œ๋งŒ ๋ฐ›๋Š”๋‹ค. ๊ทผ๋ณธ ๋Œ€์ฑ…์€ ๊ณ ์ˆ˜์ค€ ํ”„๋กฌํ”„ํŠธ์— ์ง€๋‚˜์˜จ ๋‹จ๊ณ„๋ฅผ ๋„ฃ์–ด ํ•™์Šตํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
- **์žก๊ธฐ๋ฅผ ๋†“์นœ ๊ฒƒ์„ ๋ชจ๋ฅธ๋‹ค**(์‹ค๋ฌผ ์ฒซ ์‹คํ–‰์—์„œ ํ™•์ธ). ๊ณ ์ˆ˜์ค€์€ ์ง€๊ธˆ ์˜์ƒ๊ณผ task ๋ฌธ์žฅ๋งŒ ๋ณด๊ณ , ์„ฑ๊ณตํ•œ ์‹œ์—ฐ 200๊ฐœ๋กœ๋งŒ ํ•™์Šตํ–ˆ๋‹ค. ๊ทธ ์ž๋ฃŒ์—์„œ๋Š” ํŒ” ์ž์„ธ์™€ ๋‹จ๊ณ„๊ฐ€ ์™„์ „ํžˆ ์–ฝํ˜€ ์žˆ์–ด์„œ
  ์ฒ ํŒ์ด ์†์— ์žˆ๋Š”์ง€๋ฅผ ๋ณผ ์ด์œ ๊ฐ€ ์—†๋‹ค. ๋นˆ์†์œผ๋กœ๋„ ํŒ” ์ž์„ธ๋ฅผ ๋”ฐ๋ผ ๋‹ค์Œ ๋ฌธ์žฅ์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค. ์‹คํŒจยท๋ณต๊ตฌ ์‹œ์—ฐ์„ ํ•™์Šต์— ๋„ฃ์ง€ ์•Š๋Š” ํ•œ ๊ทธ๋Œ€๋กœ์ผ ๊ฒƒ์ด๋‹ค.
- ํ•™์Šต์— ์“ฐ์ง€ ์•Š์€ ์—ํ”ผ์†Œ๋“œ์—์„œ์˜ ์ •๋‹ต๋ฅ ์€ ์žฌ์ง€ ์•Š์•˜๋‹ค. ์‹ค๋ฌผ ์„ฑ๊ณต๋ฅ ์€ ์ฒซ ์‹คํ–‰ 1ํšŒ ์‹คํŒจ๊ฐ€ ์ „๋ถ€๋‹ค.

## ํŒŒ์ผ

| ๊ฒฝ๋กœ | |
|---|---|
| ๋ฃจํŠธ | 30,000์Šคํ… (`checkpoints/030000/pretrained_model`๊ณผ ๊ฐ™์€ ํŒŒ์ผ) |
| `pi052_embed_prefix.patch` | lerobot ๋ธŒ๋žœ์น˜(`3298e15`)์˜ ์•ก์…˜ ์ถ”๋ก  ๋ฒ„๊ทธ ์ˆ˜์ • ๋‘ ์ค„ |
| `ROLLOUT_PC_SETUP.md` | ๋กค์•„์›ƒ PC ์ค€๋น„ ๋ฌธ์„œ: ์„ค์น˜ โ†’ ํ™•์ธ โ†’ ์‹คํ–‰ ๋ช…๋ น โ†’ ๋ฉˆ์ถœ ๋•Œ |
| `rollout_pi052.py`, `redox_subtasks.txt`, `autosteer_goal.txt` | ์ถ”๋ก  ๋Ÿฐ์ฒ˜, ์„œ๋ธŒํƒœ์Šคํฌ ์ˆœ์„œ ๋ชฉ๋ก, ๋ชฉํ‘œ ๋ฌธ์žฅ (์œ„ "์“ฐ๋ ค๋ฉด") |
| `autosteer_line.txt` | ๋ถ™์—ฌ๋„ฃ์„ `/autosteer ...` ํ•œ ์ค„ (ํ™”๋ฉด์—์„œ ๋ณต์‚ฌํ•˜์ง€ ๋ง๊ณ  ์ด ํŒŒ์ผ์—์„œ) |
| `checkpoints/015000` ~ `030000/pretrained_model/` | ๊ฐ™์€ ๋Ÿฐ์˜ ์ฒดํฌํฌ์ธํŠธ |
| ํƒœ๊ทธ `015000`, `020000`, `025000`, `030000` | ๊ทธ ํƒœ๊ทธ์—์„œ๋Š” ๋ฃจํŠธ๊ฐ€ ๊ทธ ์ฒดํฌํฌ์ธํŠธ๋‹ค. `--policy.pretrained_revision=020000`์ฒ˜๋Ÿผ ๊ณจ๋ผ ๋ถ€๋ฅธ๋‹ค |

์˜ตํ‹ฐ๋งˆ์ด์ € ์ƒํƒœ๋Š” ์˜ฌ๋ฆฌ์ง€ ์•Š์•˜๋‹ค.