์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฑด โ๊ฐ์ธโ์ ์์ญ์ด์ง๋ง, PR์ ์ฌ๋ฆฌ๋ ์๊ฐ๋ถํฐ๋ โํโ์ ์์ญ์ด๋ค. PR(Pull Request)์ ๋จ์ํ ๋ณํฉ ์์ฒญ์ด ์๋๋ผ, โ๋ด ์ฝ๋๊ฐ ๋ฉ์ธ ๋ธ๋์น์ ๋ค์ด๊ฐ ์๊ฒฉ์ด ์์์ ์ฆ๋ช ํ๋ ์ ์์โ ์.
์ผ๋ง์ ์ ComfyUI์ ๋ค์ด์จ Z-Image alipai controlnet PR ์ ํ๋ฒ ๋ณด์.

์ผ๋จ ์ ๋ํ์ฌ ์ต์ 5๋ช
์ด ํฌํจ๋ 17๋ช
์ด ์ผ๋ผ์ผ๋ผํ๊ณ ์์. ์ฒ์ ๋ณผ๋ ํท๊ฐ๋ ธ์ง๋ง ๊ทธ๋ฅ ์์์ ์๋๋ก ๋ด๋ฆฌ๋ฉด์ flow๋ฅผ ๋ณด๋ฉด๋๋ค.
PR ์ฌ๋ฆฌ๊ณ ๋ฆฌ๋ทฐ์ด๋ค์ด ํผ๋๋ฐฑํ๊ณ ๋ค๋ฅธ repo ๊ด๋ จ pr๋ค ๋ณด์ฌ์ฃผ๋ฉด์ ๋์/ํผ๋๋ฐฑ ์ฃผ๊ณ , ์ฒจ์ ๋ณต์กํด ๋ณด์๋๋ฐ ๊ผญ ํ์ํ ๊ณผ์ ์ผ๋ก ์๊ฐ๋๋ค.
์ ํธ ์์ ์ ๋ฐ์ ์ธ git์ ์๋ฆฌ ๊ธฐ๋ฅ์๋ํด ํ๋ดค์ผ๋๊น ์ด์ ๋ณธ๊ฒฉ์ ์ธ ํ์ ์ ์ํ ๊ท์น๊ณผ ์ข์ commit ์ต๊ด์ ํํค์ณ ๋ณธ๋ค.
git ๊ธฐ๋ฅ๋ค์ ๋ณด๋ฉด ์๋ค๊ฐ๋ค ๋บ๋ค ๊ผฝ์๋ค, ์์ /๋ณ๊ฒฝ์ด ํต์ฌ์ธ๋ฏํ๋ค. ๊ธฐ์กด๊บผ ๋ญ ๊ณ ์น๋ฉด์ ์ถ๊ฐ๋ก ํ์ํ ๊บผ๊ฐ์์ ๋ค๋ฅธ๊ฒ๋ ๋ง์ง๊ณ 3~4 ํ์ผ ํ๋ฒ์ ์ปค๋ฐํด๋ฒ๋ฆฌ๊ณ ์ด๋ฌ๋ฉด ์ฌ์ค ๋๋์๊ฐ๊ณ ๋นผ์ค๊ณ ์ด๋ฌ๊ธฐ ํ๋ค์ด์ง๋ค.
์ด๋ก ์ ์ผ๋ก ์๋ฒฝํ ๋จ์๋ ๋ถํ ๋ถ๊ฐ๋ฅํ ์ต์ํ์ ๋
ผ๋ฆฌ์ ์์
๋จ์ ๋ก ๋ด์ผํ๋ค.
์ด ์ปค๋ฐ ํ๋๋ง ๋ผ์ด๋์ ๋, ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ง์ด ๋๋ฉฐ ๋น๋๊ฐ ๊นจ์ง์ง ์๋๊ฐ?
๋๊ตฌ๋ ํ๋ฒ ์ฏค merge, rebase, pull ํ๋ค๊ฐ gitํํ
๋ฐฑ์ดํฌ ์กํ์ ๊ฐ์ง๊ฑฐ ๋ค ๋บ๊ธฐ๊ณ remote ํ ์ปค๋ฐ๋ถํฐ ๋ค์ ์์ํ์ ์์๊ฒ์ด๋ค.
๋ ๋ํ ์ต๊ทผ ์ด ๊ฐ์๋ผํํ
์กํ์ ๋จธ๋ฆฌ์ฑ ๋ค ๋ฏ๊ธฐ๊ณ ๊ฒจ์ฐ ํ์ถํ ์ ์์๋๋ฐ, ๊ฑ pull-merge-push ๋ง ์ณํ๋ ๊ณผ๊ฑฐ์ ๋์ ํ์คํ๋ง ๋จ๊ณ ์ถ์ ์ฌ์ ์ด์๋ค.
AI ํ์ต์ ์ํด์ ๊ฐ๋น์ผ ์ฅ๋น๊ฐ ํ์ํ๋ฉฐ ์๋๊ธฐ๊ฐ์ ํ์ ์ ์ด๋ฉฐ ๋งค์ฐ ์งง๋ค. ํ์ต์ฝ๋๋ฅผ ๊ฐ์น์๋ฒฝํ๊ฒ ์ง์ ๊ฑ ์๋นจ๊ธฐ๋ง ํ๋ฉด ๋๋ ์ํฉ์ด ์๋๋ผ๋ฉด ์ฐ๋ฆฌ๋ ํ์ต์ ๋๋ฆฌ๋ฉฐ ๋์์์ด ์์ ํ๊ณ , ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ ์์ปค์คํ๊ณ ํด์ผํ๋ค.
๋๊ท๋ชจ ๋ฐ์ดํฐ์
, ๋ถ์ฐ ํ์ต, ํ์
? ์ด๊ฑฐ ๊ทธ๋ฅ ์ฝ๋๋ง ์ง ๋ค๊ณ ๋๋ ๊ฒ ์๋๋ค. โ๋ด ์ปดํจํฐ์์๋ง ๋์๊ฐ๋๋ฐ์?โ ๋ผ๋ ์๋ฆฌ ํ๋ค๊ฐ๋ ๋จธ๋ฆฌํต์ด ์ผ๊นจ์ง ์ ์๋ค.
์์ญ ์ฅ์ 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 ์์ ํ์
ํ ํ์์ฑ์ด ๋๊ปด์ง๋ค.