| name | ml-dev-principles |
| description | General working discipline for ML / multimodal / CV development (how to work, not which library). Load at the START of an ML task โ model/dataset candidate selection, license or eligibility filtering, EDA, training/fine-tuning (SFT/DPO/LoRA), evaluation-harness and train/val/test isolation design, error analysis on FP/FN cases, or GPU throughput tuning. Triggers on "EDA", "explore dataset", "error analysis", "FP/FN", "train", "fine-tune", "SFT", "DPO", "LoRA", "eval harness", "validation split", "test leakage", "dataset selection", "model selection", "license filtering", "GPU utilization", "multimodal", "VLM", "image review". |
ML / ๋ฉํฐ๋ชจ๋ฌ ๊ฐ๋ฐ ์์น
Hermes Agent Compatibility
When this skill is loaded through Hermes as ml-toolkit:ml-dev-principles, map Claude/Codex tool names to Hermes tools:
| Claude/Codex term | Hermes tool |
|---|
| Bash | terminal |
| Read | read_file |
| Write | write_file |
Treat $ARGUMENTS as the natural-language arguments supplied when the user asks Hermes to load the skill. Plugin-provided skills are explicit opt-in loads in Hermes; use skill_view("ml-toolkit:ml-dev-principles") (or ask Hermes to load that qualified skill) rather than relying on bare text.
MLยท๋ฉํฐ๋ชจ๋ฌยทCV ์์
์ ์ด๋ป๊ฒ ์งํํ ์ง์ ๋ํ ๋ฒ์ฉ ๊ท์จ(์ด๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ๋๋๊ฐ ์๋๋ผ). ์์
์์ ์ ํ ๋ฒ ํ๊ณ ์ ์ฉํ๋ค. ํ ๋ฌธ์ฅ ์์ฝ: ์ง๊ณ/๊ท์น ํ
์คํธ๋ง ๋ณด์ง ๋ง๊ณ ์ค์ (์ด๋ฏธ์งยท์๋ฌธยทutil)๋ฅผ ์ง์ ๋ด๋ผ.
๋ฉํ โ ๊ท์น์๋ ํ์
์ด ์๋ค
hard-block(์ปดํ๋ผ์ด์ธ์คยท์์ ยท์ฐ์ถ๋ฌผ ๋์ค)๊ณผ process-caution(๋ณด์์ฑยท์คํ์ผยท๊ดํ)์ ๊ตฌ๋ถํ๋ค. ๋ชจ๋ ๊ท์น์ ๋ฐ์ฌ์ ์ผ๋ก ์ต๊ฐ ํด์์ผ๋ก ์ ์ฉํ๋ฉด ์ ๋นํ ๋น ๋ฅธ ๊ฒฝ๋ก๊น์ง ๋งํ๋ค. ๋ถ๋ฅ๋ถํฐ ํ๊ณ hard-block๋ง ๊ฒ์ดํธ๋ก ์ผ๋๋ค โ ๋๋จธ์ง๋ trade-off๋ก ํ๋จํ๋ค.
1. ํ๋ณด ์ ์ โ ๋ผ์ด์ ์ค/์๊ฒฉ์ ๊ท์น ์๋ฌธ๋ถํฐ ์ฝ๊ณ ๊ฑฐ๋ฅธ๋ค
- ๋ชจ๋ธยท๋ฐ์ดํฐ๋ฅผ "๋น์์
/์ฐ๊ตฌ ๋ผ์ด์ ์ค๋ผ ์ ์ธ" ์์ผ๋ก ์ ์ ๊ณผํํฐ๋ง ๊ธ์ง. ๊ณผ์ ๊ฐ ์ฐ๊ตฌ/๋ํ์ด๊ณ ๊ท์น ์๋ฌธ์ด ์ค์ ๋ก ๊ธ์งํ์ง ์์ผ๋ฉด ํ๋ณด์ ๋จ๊ธด๋ค. permissive(Apache/MIT)๋ ๋๊ธ์ผ ๋ tiebreaker์ง gate๊ฐ ์๋๋ค.
- ์: ์ ์ ๋จ๊ณ์ ์๋ชป๋ ๋ฐฐ์ ๋ ํ์ดํ๋ผ์ธ ์ ์ฒด๋ก ์ ํ๋๊ณ ๋ฐฉํฅ ์์ฒด๋ฅผ ํ์ด๋ฒ๋ฆฐ๋ค โ ๋๋๋ฆฌ๋ ๋น์ฉ์ด ๊ฐ์ฅ ํฌ๋ค.
- ์ ์ฉ: ์๊ฒฉ ์ ์ฝ์ ๋ฌธ์ ๊ทธ๋๋ก ๋์ด โ ๊ฐ๊ฐ hard-block / preference๋ก ๋ถ๋ฅ โ hard-block๋ง ๋ฐฐ์ .
2. ํ๊ฐ ๊ฒฉ๋ฆฌ โ ํ๋๋ฃฐ๊ณผ ํ๋ก์ธ์ค ์ฃผ์๋ฅผ ๋ถ๋ฆฌํ๋ค
- ํ๋๋ฃฐ(์ ๋ ๊ธ์ง): ์ ์ถยท๋ฐฐํฌ๋๋ ์ฐ์ถ ๋ชจ๋ธ์ held-out/test ๋ผ๋ฒจ๋ก ํ์ตยทearly-stopยท๋ชจ๋ธ์ ํยทํ๋ํ์ง ์๋๋ค. ๋์ค์ด๋ค.
- ํ์ฉยท๊ถ์ฅ: test-GT(๋๋ ์์ held-out proxy)๋ฅผ flag-gated dev ์ง๋จ์ผ๋ก ์จ์ ํ์ดํ๋ผ์ธ์ด end-to-end๋ก ๋๋์งยท์ซ์๊ฐ ๋ง์ด ๋๋์ง sanity-check ํ๋ ๊ฑด ์ ๋นํ๋ค. ์์์ฑ์ ์ด์ ๋ก ๋ฌดํดํ ํ์ดํ๋ผ์ธ ์ ๊ฒ์ ๊ฑฐ๋ถํ์ง ๋ง๋ผ. ์ง๋จ ๊ฒฝ๋ก๋ flag ๋ค๋ก ๊ฒฉ๋ฆฌํด ์ฐ์ถ๋ฌผ์ ์ ๋ ํ๋ฌ๋ค์ง ์๊ฒ ํ๋ค.
- ์: "์ฐ์ถ๋ฌผ์ ๋์ค ๊ธ์ง"์ "๋ฐฐ๊ด ์ ๊ฒ์ฉ์ผ๋ก๋ ๋ผ๋ฒจ์ ๋ณด์ง ๋ง๋ผ"๋ฅผ ํผ๋ํ๋ฉด, ์๊ฐ ์ด๋ฐํ ๋ ๋น ๋ฅธ ํผ๋๋ฐฑ์ ์ค์ค๋ก ์ฐจ๋จํ๋ค.
- ์ ์ฉ: ์ ์ถ ๋ชจ๋ธ์ ํ์ต/์ ํ ์ ํธ๋ train-disjoint independent val์์๋ง. test-GT๋ ์ฐ์ถ๋ฌผ๋ก ํ๋ฅด๋ ์ด๋ค ๊ฒ๋ ๊ฑด๋๋ฆฌ์ง ์๋ ๊ฒฉ๋ฆฌ ๊ฒฝ๋ก์๋ง.
3. EDA๋ ํ์ โ ๋ฉํฐ๋ชจ๋ฌ์ด๋ฉด ์ฌ๋์ด raw/overlay ์ด๋ฏธ์ง๋ฅผ ์ง์ ๋ณธ๋ค
- ๋ชจ๋ธ๋ง ์ EDA๋ ๋นํ์. ๋ผ๋ฒจ ์๋ ๋ฉํฐ๋ชจ๋ฌ/CV๋ ๋ถํฌ ํต๊ณ๋ก ๋๋ด์ง ๋ง๊ณ ์ฌ๋(๋๋ Claude vision)์ด raw ์ด๋ฏธ์ง(detection/seg๋ฉด overlay)๋ฅผ ์ค์ ๋ก ๋ณธ๋ค.
- ์: ์ง๊ณ ํต๊ณ๋ "๋ค ๋ดค๋ค"๋ ๊ฑฐ์ง ์ธ์์ ์ค๋ค. ๋ฉํฐ๋ชจ๋ฌ์ ์ด๋ฏธ์ง๊ฐ ํ๋ณ ๊ทผ๊ฑฐ๋ฅผ ๋ค๊ณ ์์ด ๋ผ๋ฒจ-์ด๋ฏธ์ง ์ ํฉ์ ํต๊ณ๋ก ์ ์ ์๋ค.
- ์ ์ฉ: interactive viewer(์:
ml-toolkit:cv-explorer)๋ก strata๋ณ ์ํ์ ๋์ผ๋ก โ ์ซ์ ์ ๋ขฐ ์ ์.
4. ์ค๋ฅ ๋ถ์ โ ์งํ๊ฐ ์๋๋ผ ์ค์ FP/FN ์ด๋ฏธ์ง๋ฅผ ๋ณธ๋ค
- ํ๋ฆฐ ์ผ์ด์ค(FP/FN)๋ ์ค์ ์ด๋ฏธ์ง๋ฅผ ์ด์ด (์ง๋ฌธยท์ ํ์งยท์ ๋ต)๊ณผ ๋์กฐํด ์ ํ๋ ธ๋์ง ์ถ๋ก ํ๋ค(overlay ํฌํจ). ๊ทธ ์ธ์ฌ์ดํธ๋ฅผ ๋ค์ ๋ฐ์ดํฐ/๋ชจ๋ธ ๋ณ๊ฒฝ์ ์
๋ ฅ์ผ๋ก ์ผ๋๋ค.
- ์: ์งํ๋ "์ผ๋ง๋ ํ๋ ธ๋"๋ง ์ฃผ๊ณ "์"๋ ๋ชป ์ค๋ค. ์(๋ผ๋ฒจ ์ค๋ฅ / ์ด๋ฏธ์ง ๋ชจํธ / ๋ชจ๋ธ์ด ์ด๋ฏธ์ง ๋ฌด์ํ๊ณ text-prior ์์กด)๋ ํฝ์
์๋ง ๋ณด์ด๊ณ , ๊ทธ๊ฒ ๋ค์ iteration์ ๋๋ค.
- ์ ์ฉ: eval ํ FP/FN์ ์ด๋ฏธ์ง์ ํจ๊ป ๋คํํ๋ ์ฝ๋๋ฅผ ์คํ โ ์ํ ์ก์ ๋ฆฌ๋ทฐ โ ๊ตฌ์ฒด์ ๋ฐ์ดํฐ/aug/prompt ๋ณ๊ฒฝ์ผ๋ก ํ์.
5. GPU ์ฒ๋ฆฌ๋ โ ๋ชจ๋ธ ํฌ๊ธฐ์ ๋ง๋ ๋ณ๋ ฌ ์ ๋ต + eff-batch ๋ถ๋ณ์
- ๋ณ๋ ฌ์ ๋ชจ๋ธ ํฌ๊ธฐ์ ๋ง์ถ๋ค: ์ํ(์ฝ 3B ์ดํ)์ ์์ DDP, ZeRO/deepspeed๋ ๋๋ค(ํํฐ์
๋ ์ค๋ฒํค๋ > ์ด๋). ZeRO ์นด๊ณ ์ปฌํธ ๊ธ์ง.
- eff-batch ๋ถ๋ณ์(per_device x accum x n_gpu = ์์)์ ์ ์งํ ์ฑ per-device batch๋ง ์ฌ๋ ค ์๋ ด ๋์ญํ์ ์ ๋ฐ๊พธ๊ณ ์๋๋ง ์ป๋๋ค.
- LoRA rankยทflash-attnยทgrad-checkpointingยทbf16์ด ํ์ค ๋ ๋ฒ. rank๋ ๋ฉ๋ชจ๋ฆฌ ์ฒ์ฅ์ ๋ง์ถฐ ํ๋.
- ๋ชจ๋ธ ์ฌ๋ฌ ๊ฐ๋ฅผ ๋ณ๋ ฌ ์ถ๋ก ํ ๋ ์์ ์ง ๋ฉํฐGPU ๋ฐ์ฒ๋ณด๋ค CUDA_VISIBLE_DEVICES ๊ฒฉ๋ฆฌ + per-process๊ฐ ๋จ์ยท์ถฉ๋ถ โ ๋ฐฐ์นญ์ ์์ง(์: vLLM)์ ๋งก๊ธด๋ค.
- ์: "GPU ๊ธฐ๊ณ์ฅ์น ๋ ๋์" != ๋น ๋ฆ. ํต์ฌ์ ๋ชจ๋ธ์ ๋ง๋ ์ ๋ต + eff-batch ๊ณ ์ ์ผ๋ก ์ ํ๋ ํ๊ท ์๋ ๊ณต์ง ์๋.
- ์ ์ฉ: util ํ๋กํ์ผ โ 90% ๋ฏธ๋ง์ด๋ฉด exotic ๋ณ๋ ฌ ๊บผ๋ด๊ธฐ ์ ์ deepspeed/ZeRO ์ค๋ฒํค๋๋ ๊ณผ์ batch๋ถํฐ ์์ฌ.
6. ์ด์ค ํ๋จ ๋๊ตฌ๋ ์ ์ก ๊ตฌ๋
โ ์๋ผ์ง ๋ง๊ณ ์ ๊ทน ์ด๋ค
- VLM ์ธ์ฌ์ดํธยท2์ฐจ ์๊ฒฌ์ด ๋์ ๋๋ ๋ชจ๋ ์ง์ (๋ฐ์ดํฐ ํ์ด ๊ฒ์ฆ, GT/๋ผ๋ฒจ ์์ฑ, ์ค๋ฅ ๋ฆฌ๋ทฐ, ์ค๊ณยท๊ฐ์ค ๋์กฐ)์์ Codex read + Claude vision์ ๊ธฐ๋ณธ ๋ณํํ๋ค. OAuth ์ ์ก ๊ตฌ๋
์ด๋ผ ํธ์ถ๋น ๋น์ฉ์ด ์ฌ์ค์ 0 โ API ํ ํฐ ์๋ผ๋ฏ ํ๋จ ํ์๋ฅผ rationing ํ์ง ๋ง๋ผ.
- ๋จ์ผ ๋ชจ๋ธ ๋จ๋
ํ๋จ ๊ธ์ง. ๋ถ์ผ์น๋ ์ ๋ฐ ์ฌํจ์ค + rationale ๋์กฐ๋ก ์์ค์ปฌ๋ ์ด์
.
- ์: ์ด๋ฏธ์ง๊ฐ ํ๋ณ ๊ทผ๊ฑฐ์ธ ๋ฉํฐ๋ชจ๋ฌ์์ ์ด์ค ๋
๋ฆฝ ํ๋จ์ ์ค๋ผ๋ฒจยทํ๊ฐ์ ์ก๋ ๊ฐ์ฅ ์ผ ๋ณดํ์ธ๋ฐ, ์ ์ก์ ๋ฉด ๊ทธ ๋ณดํ์ด ๊ณต์ง๋ค. ๋น์ฉ ๊ฑฑ์ ์ ๋จ์ผ ํจ์ค๋ก ๋๋ด๋ฉด ์ก์ ์ค๋ฅ๋ฅผ ๋์น๋ค.
- ์ ์ฉ: ์ 3(EDA)ยท4(์ค๋ฅ ๋ฆฌ๋ทฐ)์์ ๋ํดํธ๋ก Claude read + Codex read ๋์ ํธ์ถ ํ ํฉ์/๋์กฐ.