๋๊ตฌ๋ ํ๋ฒ ์ฏค merge, rebase, pull ํ๋ค๊ฐ gitํํ
๋ฐฑ์ดํฌ ์กํ์ ๊ฐ์ง๊ฑฐ ๋ค ๋บ๊ธฐ๊ณ remote ํ ์ปค๋ฐ๋ถํฐ ๋ค์ ์์ํ์ ์์๊ฒ์ด๋ค.
๋ ๋ํ ์ต๊ทผ ์ด ๊ฐ์๋ผํํ
์กํ์ ๋จธ๋ฆฌ์ฑ ๋ค ๋ฏ๊ธฐ๊ณ ๊ฒจ์ฐ ํ์ถํ ์ ์์๋๋ฐ, ๊ฑ pull-merge-push ๋ง ์ณํ๋ ๊ณผ๊ฑฐ์ ๋์ ํ์คํ๋ง ๋จ๊ณ ์ถ์ ์ฌ์ ์ด์๋ค.
AI ํ์ต์ ์ํด์ ๊ฐ๋น์ผ ์ฅ๋น๊ฐ ํ์ํ๋ฉฐ ์๋๊ธฐ๊ฐ์ ํ์ ์ ์ด๋ฉฐ ๋งค์ฐ ์งง๋ค. ํ์ต์ฝ๋๋ฅผ ๊ฐ์น์๋ฒฝํ๊ฒ ์ง์ ๊ฑ ์๋นจ๊ธฐ๋ง ํ๋ฉด ๋๋ ์ํฉ์ด ์๋๋ผ๋ฉด ์ฐ๋ฆฌ๋ ํ์ต์ ๋๋ฆฌ๋ฉฐ ๋์์์ด ์์ ํ๊ณ , ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ ์์ปค์คํ๊ณ ํด์ผํ๋ค.
์๊ฐ์ด ์ด๋ฐํ ์ํฉ์์ ํ์๋ค์ด ๋์ผ ์ถ๋ฐ์ง์ธ main๋ถํฐ ์๋ก ๋ธ๋์น ํ์ ์์
ํ๋ค ํฉ์ณ๋๊ฐ ๋, ๋ฌธ์ ๋ ์ด ๋ ๋ฐ์ํ๋ค
main ๊ธฐ์ค์ผ๋ก ์ง๋ค๊ฐ ๋ค๋ฅธ์ ๊ฐ ์์ฑ์ ๋จผ์ ํ๋ค๋ฉดโฆ
๋๊ท๋ชจ ๋ฐ์ดํฐ์
, ๋ถ์ฐ ํ์ต, ํ์
? ์ด๊ฑฐ ๊ทธ๋ฅ ์ฝ๋๋ง ์ง ๋ค๊ณ ๋๋ ๊ฒ ์๋๋ค. โ๋ด ์ปดํจํฐ์์๋ง ๋์๊ฐ๋๋ฐ์?โ ๋ผ๋ ์๋ฆฌ ํ๋ค๊ฐ๋ ๋จธ๋ฆฌํต์ด ์ผ๊นจ์ง ์ ์๋ค.
์์ญ ์ฅ์ GPU๊ฐ ๋์๊ฐ๋ ํ๊ฒฝ์์๋ โ์ฌํ์ฑ(Reproducibility)โ ๊ณผ โํ์ฅ์ฑ(Scalability)โ ์ด ์๋ช
์ด๋ค.
์ด ๋ ๊ฐ์ง๋ฅผ ๋ณด์ฅํ์ง ๋ชปํ๋ ์ฝ๋๋ ์ฐ๋ ๊ธฐ๋ค.
๋ช ์ฌํ์ H100 ์๋ฌด๋์ ๋๊ฒ ๋ ๋๋ฉด ์๋๋ค.
๋๋ ์ฐ๋ฉด์ ๊ณต๋ถํ๋๊ฑฐ๋ผ ์ข๋ฐฅ์ฉ ~ ํธ๋ ๋์ฉ๊น์ง ๋๋ฃจ๋๋ฃจ ์ดํด๋ณด๋ฉฐ ํด๋ณผ ์๊ฐ์ด๋ค.
์ด๋ฆ๋ ฅ ๋งํผ ์ฑ๋ฅ๋ ์ข์๊น?
Argparse (๋ ธ๊ฐ๋ค):
๊ธฐํ ๋ฐฉ๋ฒ (toml, json)
pyํ์ผ ํ๋๋ฅผ ํต์ผ๋ก ์ธ์ ์ค์ ํ๋๋ฐ ์์จ๋๋จ.str ๋ค ์
๋ ฅํด์ค์ผ ํ๊ฑฐ๋, ๋ด๋ถ ๋ก์ง์ผ๋ก str or ์ซ์ ์๋๋ฉด ํ์ผ ์ฐพ์์ ํ์ฑํ๋๊ฑฐ ๋ง๋ค์ด์ผํจ.Hydra (์ค๊ณ):
cfg : OmegaConf๊ฐ ๋ง๋ DictConfig๋ผ๋ ํน์ ๋ถ๋์yaml ์์ yaml ์ง์ด๋ฃ๊ธฐ ๊ฐ๋ฅ. ์์์ ํ์ฑํด์คuv๊ฐ ํ์ด์ฌ ์ํ๊ณ์ ๋ํต๋ น์ด ๋ ์ด์ ๋ ๋ฑ ๋ ๊ฐ์ง์ด๋ค. โ์๋์ ์ธ ์๋โ ์ โํตํฉ(Unification)โ
(1) Rust๋ก ์ง ๊ดด๋ฌผ ๊ฐ์ ์๋
pip, poetry): Python์ผ๋ก ๋ง๋ค์ด์ง. ๊ฐ๋๋ฆผ. ์์กด์ฑ ๊ทธ๋ํ ๊ณ์ฐํ๋ค๊ฐ ํด๊ทผ ์๊ฐ ๋ค ๊ฐ๋ค.
Rust๋ก ๋ง๋ค์ด์ง. pip๋ณด๋ค 10~100๋ฐฐ ๋น ๋ฆ. ์บ์ฑ ์ ๋ต์ด ๋ฏธ์ณ์, ํ ๋ฒ ๋ฐ์ ํจํค์ง๋ ํ์ผ ๋ณต์ฌ๋ ์ ํ๊ณ ํ๋๋งํฌ(Hardlink)๋ก ๊ฝ์๋ฒ๋ฆผ. ๋์คํฌ ์ฉ๋๋ ์๋ผ๊ณ ์ค์น๋ 0.1์ด ์ปท.(2) The Unified Toolchain (ํ๋๋ก ๋ค ๋๋ค)
pyenv, conda (ํ์ด์ฌ ๋ฒ์ ๊ด๋ฆฌ) -> uv pythonvenv, virtualenv (๊ฐ์ํ๊ฒฝ ์์ฑ) -> uv venvpip (ํจํค์ง ์ค์น) -> uv pippoetry, pip-tools (์์กด์ฑ ์ ๊ธ/๊ด๋ฆฌ) -> uv add, uv lockconda ๋ง ์จ์จ์ฌ๋์ผ๋ก์จ ์ผ๋จ ์กด๋ ๋ฌด๊ฑฐ์, ๊ฒ๋ค๊ฐ pycharm local<->remote<->container or cluster ๊ฐ๋ฐ ํ ๋ uv ๋ชป์ฐ๊ณ , .venv๋ก ์ฐํํด์ผํจ.
import sys
sys.path.append("../src") # ์ ๋ฐ ๋๊ฐ ๋ค์ ธ๋ผ
from my_model import UNet
์ด๊ฑด โ๋ด ์ปดํจํฐ, ๋ด ํด๋ ๊ตฌ์กฐ์์๋ง ๋์๊ฐ๋ ์ฐ๋ ๊ธฐ ์ฝ๋โ ์. ๋จ์ ์ปดํจํฐ ๊ฐ๋ฉด ๊ฒฝ๋ก ๋ฌ๋ผ์ ๋ฐ๋ก ํฐ์ ธ๋ฒ๋ฆฐ๋ค.
๋ด ๋ชฉํ๋ ๋ง๋ ์ฝ๋๋ฅผ ํ์์ด ์ด๋ ํด๋์ ์๋ ์๊ด์์ด ์ด๋ ๊ฒ ์ฐ๊ฒ ๋ง๋๋ ๊ฑฐ์.
# ๊น๋ ๊ทธ ์์ฒด
from captain_diffusion import UNet

subject-driven ๋ชจ๋ธ ๊ฐ๋ฐํ๋ ์ค ๋ณด๊ฒ ๋ ์ ํ์ฐ๊ตฌ NEGATIVE-GUIDED SUBJECT FIDELITY OPTIMIZATION FOR ZERO-SHOT SUBJECT-DRIVEN GENERATION.
DPO ๋ผ๋๊ฑธ ์์ปค๋ฐ ์คํ์ฑํ
๋ฐฉ์์ ๋๊ฐ ์ผ๋ผ์ผ๋ผํ๋๊ฑฐ ๋ง๋ก๋ง ๋ฃ๊ณ ๋จผ์ง๋ ๋ชจ๋ฅด๋ ์ํ์์ ์คํ ๊ฒฐ๊ณผ๋ฅผ๋ณด๊ณ ์์จ๋ณผ ์ ๊ฐ ์์๋ค. ์ด์ฐจํผ ํ์ต ํ์ดํ๋ผ์ธ 0-100 ํผ์ ๋ง๋ค์ด๋ ์ํ์๊ธฐ์ DPO ํ์ต์ ์ํ dataloader, loss func ๋ถ๋ถ ์ถ๊ฐํ๋๊ฑด ๊ทธ๋ ๊ฒ ์ด๋ ค์ ๋ณด์ด์ง ์์ ๋ฐ๋ก ํ
์คํธํด๋ณธ ๊ฒฐ๊ณผ๊ฐ ์์ ์ด๋ฏธ์ง๋ค(๋ณธ์ธ ์๊พธ์).
๊ฒ์ ์์ญ ์์ฑํ๋ ๋ชจ๋ธ ํ์ต์์ train ํ๊ฒฝ bfloat16 ์์๋ ๋ฌธ์ ์๋๊ฒ ํ
์คํธํ๊ฒฝ fp8๋ก ์์ฑํ๋ ํ
๋๋ฆฌ ๋ถ๋ถ์ด ๊ฐ๋ฐ์ด๋๋ ํ์. ์ด๊ฑด ์์ง๋ ํด๊ฒฐ๋ฐฉ๋ฒ ๋ชป์ฐพ์ใ
ใ
(๊ฑฐ์ ํ๋ฌ๋๊ฒ ์คํ๋ฐ๊ฟ๊ฐ๋ฉฐ ํ์ต/์คํ ํ๋๋ฐ ํด๊ฒฐ ๋ชปํจใ
).
์ด๊ฒ ์๋ฌด๋๋ ๋์ precision์์ ๋ฎ์ precision์ผ๋ก ๋ด๋ ค๊ฐ๋ฉด์ ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ํ์คํด ๋ณด์ด๋๋ฐ, ๊ทผ๋ฐ ํํ์ด๋ฉด ๋ฑ ๊ฒฝ๊ณ๋ฉด์ ์ ๋ ๊ฒ ํญ๊ฒฉ์ด ๊ฐํด์ง๋ ์์ธ์ด ๋ญ๊น?
์ด๊ฑธ ํ์
ํ๊ธฐ ์ํด์๋ precision ๋ฎ์ถ๋ ๊ณผ์ ์ ์ข low-level ์์ ํ์
ํ ํ์์ฑ์ด ๋๊ปด์ง๋ค.
์๋์ ๊ทธ๋ํ๋ค์ LoRA ํ์ตํ ๋ ๋ด๊ฐ ๊ฒช์ ๋ค์ํ Prodigy Optimizer์ lr ์ค์ผ์ค๋ง ๋ณํ ๊ทธ๋ํ๋ค.

FLUX, QWEN-IMAGE ๋ชจ๋ ์ค norm์ ์์๋ณด์.
| API | FLUX | QWEN-IMAGE |
|---|---|---|
| VAE | Group Norm | RMSNorm |
| LDM | LayerNorm, RMSNorm | RMSNorm, AdaLayerNorm(?) |
RMSNorm ์ด๋์ด ์ฑํผ์ธ์ธ๊ฑฐ๊ฐ์๋ฐ, ํ๋ณด๊ธฐ ์ ์ ํ๋ฑ Norm๋ค ๋จผ์ ๋ฆฌ๋ง์ธ๋ ํ๊ณ ๊ฐ์ผ๊ฒ ์.