# ๐Ÿ“‹ Pusher-v5 PPO // ๋ชจ๋ธ ํ‰๊ฐ€ ๋ฐ ํ—ˆ๊น…ํŽ˜์ด์Šค ๋ฐฐํฌ ๊ฒ€์ฆ ํ”„๋กœํ† ์ฝœ ๋ณธ ๋ฌธ์„œ๋Š” ํ•™์Šต ์™„๋ฃŒ๋œ Stable-Baselines3 PPO ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ ๊ฒ€์ฆ ๊ธฐ์ค€๊ณผ ํ—ˆ๊น…ํŽ˜์ด์Šค(Hugging Face) ๋ฐ ๊นƒํ—ˆ๋ธŒ(GitHub) ๋ฐฐํฌ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. --- ## 1. ๐Ÿ“Š ๋ชจ๋ธ ํ‰๊ฐ€ ๊ธฐ์ค€์„  (Benchmark Rubrics) | ํ‰๊ฐ€ ์ง€ํ‘œ | ๊ธฐ์ค€๊ฐ’ (Pass Criteria) | ํŒ์ • ์ƒํƒœ | ๋น„๊ณ  | | :--- | :--- | :--- | :--- | | **ํ‰๊ท  ์—ํ”ผ์†Œ๋“œ ๋ณด์ƒ (Mean Return)** | `> -50.0 pts` | **PASS (์„ฑ๊ณต)** | ์Šคํ… 0 ๊ธฐ์ดˆ ๋ชจ๋ธ(-57.5 pts) ๋Œ€๋น„ ํ˜„์ €ํ•œ ์ƒ์Šน | | **๋ชฉํ‘œ ์ง€์  ์ตœ์ข… ๊ฑฐ๋ฆฌ (Final Goal Dist)**| `< 0.08 m` | **PASS (์„ฑ๊ณต)** | ์›ํ†ตํ˜• ๋ฌผ์ฒด๊ฐ€ ๋ชฉํ‘œ ๋ฐ˜๊ฒฝ ๋‚ด์— ์•ˆ์ฐฉ | | **๋กค์•„์›ƒ ๋ Œ๋”๋ง ๋ฌด๊ฒฐ์„ฑ** | 30 FPS ๋น„๋””์˜ค ์ƒ์„ฑ | **PASS (์„ฑ๊ณต)** | `results/videos/` ๋‚ด MP4 ๋ฐ GIF ์™„๋ฒฝ ์ƒ์„ฑ | | **๋‹จ์ผ ๋ฒˆ๋“ค ํŒจํ‚ค์ง•** | ZIP ์•„์นด์ด๋ธŒ ์ž๋™ ์ƒ์„ฑ | **PASS (์„ฑ๊ณต)** | `ppo_pusher_bundle.zip` ์ •์ƒ ๋นŒ๋“œ | --- ## 2. ๐Ÿงช ๋กœ์ปฌ ๊ฒ€์ฆ ๋ช…๋ น์–ด ```bash # 1. ๋ชจ๋ธ ๊ฐ€์ค‘์น˜ ๋…๋ฆฝ ํ‰๊ฐ€ (3 ์—ํ”ผ์†Œ๋“œ) python evaluate.py --model_path ./results/ppo_pusher.zip --episodes 3 # 2. ์›น ๊ด€์ œ ์„ผํ„ฐ ์‹คํ–‰ ๊ฒ€์ฆ python app.py ``` --- ## 3. ๐Ÿš€ ํ—ˆ๊น…ํŽ˜์ด์Šค ์›ํด๋ฆญ ๋ฐฐํฌ ํ”„๋กœํ† ์ฝœ 1. **์‚ฌ์ „ ์ค€๋น„**: [Hugging Face Settings > Tokens](https://huggingface.co/settings/tokens)์—์„œ **Write ๊ถŒํ•œ ํ† ํฐ**์„ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค. 2. **๋ฐฐํฌ ์‹คํ–‰**: ```bash python deploy_to_hf.py ``` 3. ํ„ฐ๋ฏธ๋„ ํ”„๋กฌํ”„ํŠธ์— ํ† ํฐ์„ ์ž…๋ ฅํ•˜๋ฉด: - `pusher-v5-ppo` ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ž๋™ ์ƒ์„ฑ - ๋ชจ๋ธ ๋ฐ”์ด๋„ˆ๋ฆฌ, ์›น ๊ด€์ œ ์†Œ์Šค(`web/`), ์ฒดํฌํฌ์ธํŠธ ๋น„๋””์˜ค, ์ฐจํŠธ, `README.md`๋ฅผ **1์ดˆ ๋งŒ์— ํด๋ผ์šฐ๋“œ๋กœ ์ž๋™ ์ „์†ก**ํ•ฉ๋‹ˆ๋‹ค.