Hugging Face์ Diffusers ๋ผ์ด๋ธ๋ฌ๋ฆฌ v0.3์ด Image-to-Image, Textual Inversion, Inpainting ํ์ดํ๋ผ์ธ์ ์ถ๊ฐํ๊ณ VRAM ์ฌ์ฉ๋์ 3.2GB๋ก ๊ฐ์์ํค๋ฉฐ Mac OS ๋ฐ ONNX ์ง์์ผ๋ก ํ๋์จ์ด ์ ๊ทผ์ฑ ํ๋
What's new in Diffusers? ๐จ
AI ์์ฝ
Context
Stable Diffusion ์ถ์ ์ดํ ์ปค๋ฎค๋ํฐ๋ก๋ถํฐ ์ด๋ฏธ์ง ๊ธฐ๋ฐ ์์ฑ, ๊ฐ์ธํ๋ ๋ชจ๋ธ ํ์ต, ํน์ ์์ญ ํธ์ง ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ ์์ฒญ์ด ์ฆ๊ฐํ์ผ๋ฉฐ, ๋์ GPU ๋ฉ๋ชจ๋ฆฌ ์๊ตฌ์ฌํญ๊ณผ Mac OS ๋ฏธ์ง์์ผ๋ก ์ธํ ์ฌ์ฉ ์ฅ๋ฒฝ์ด ์กด์ฌํ๋ค.
Technical Solution
- Image-to-Image ํ์ดํ๋ผ์ธ ์ถ๊ฐ: ์ ๋ ฅ ์ด๋ฏธ์ง์ ํ ์คํธ ํ๋กฌํํธ๋ฅผ ๊ฒฐํฉํ์ฌ ์๋ก์ด ์ด๋ฏธ์ง ์์ฑ, StableDiffusionImg2ImgPipeline ํด๋์ค๋ก ๊ตฌํ
- Textual Inversion ๊ธฐ๋ฅ ๋์ : 3~5๊ฐ ์ํ ์ด๋ฏธ์ง๋ก ๊ฐ์ธํ๋ ๋ชจ๋ธ ํ์ต ๊ฐ๋ฅ, ํ์ต๋ ๊ฐ๋ ์ ์ปค๋ฎค๋ํฐ์ ๊ณต์ ๊ฐ๋ฅ (์ถ์ ํ 2์ผ ๋ด 200๊ฐ ์ด์์ ๊ฐ๋ ๊ณต์ )
- Inpainting ํ์ดํ๋ผ์ธ ์ถ๊ฐ(์คํ ๋จ๊ณ): ๋ง์คํฌ ์ง์ ์์ญ๋ง Stable Diffusion์ผ๋ก ์ฌ์์ฑ, StableDiffusionInpaintPipeline ํด๋์ค๋ก ๊ตฌํ
- GPU ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ: attention_slicing() ๋ฉ์๋๋ก Stable Diffusion VRAM ์ฌ์ฉ๋์ 3.2GB๋ก ๊ฐ์, ์ถ๋ก ์๋ 10% ๊ฐ์ ํธ๋ ์ด๋์คํ
- Mac OS M1/M2 ์ง์: PyTorch MPS ๋๋ฐ์ด์ค๋ฅผ ํ์ฉํ์ฌ native Mac ํ๋์จ์ด์์ ์ถ๋ก ์คํ ๊ฐ๋ฅ
- ONNX ๋ด๋ณด๋ด๊ธฐ ๋ฐ ํ์ดํ๋ผ์ธ ์ถ๊ฐ(์คํ ๋จ๊ณ): StableDiffusionOnnxPipeline ํด๋์ค์ convert_stable_diffusion_checkpoint_to_onnx.py ์คํฌ๋ฆฝํธ๋ก ONNX ํธํ ํ๋์จ์ด์์ ์คํ ๊ฐ๋ฅ
Impact
Stable Diffusion์ VRAM ์๊ตฌ์ฌํญ์ 3.2GB๋ก ๊ฐ์์์ผฐ์ผ๋ฉฐ, ์ถ์ ํ 2์ผ ๋ด Textual Inversion ๊ฐ๋ 200๊ฐ ์ด์ ์ปค๋ฎค๋ํฐ ๊ณต์ ๋ฌ์ฑ.
Key Takeaway
ํ์ฐ ๋ชจ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํต์ฌ ๊ธฐ๋ฅ(ํ์ดํ๋ผ์ธ)์ ๋ชจ๋ํ์ ํจ๊ป ํ๋์จ์ด ์ ๊ทผ์ฑ ์ต์ ํ(๋ฉ๋ชจ๋ฆฌ ๊ฐ์, ํ๋ซํผ ์ง์ ํ๋)๋ฅผ ๋์์ ์ถ์งํจ์ผ๋ก์จ ๊ฐ๋ฐ์ ์ฑํ๋ฅ ์ ๊ฐ์ํํ ์ ์๋ค.
์ค์ฒ ํฌ์ธํธ
์์ฑ AI ๋ชจ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ํ๋ ํ์์ attention_slicing()๊ณผ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ ๊ธฐ๋ฒ๊ณผ fp16 ์ ๋ฐ๋๋ฅผ ๊ฒฐํฉํ๋ฉด, ์๋์ ์ ์ GPU ์ง์ ์ฅ๋ฒฝ์ ๋ฎ์ถ๋ฉด์๋ ์ถ๋ก ํ์ง์ ์ ์งํ ์ ์๋ค. ๋ํ Mac MPS ๋ฐ ONNX ๊ฐ์ ๋ค์ํ ๋ฐฑ์๋ ์ง์์ ์คํ์ ๊ธฐ๋ฅ์ผ๋ก ๋จผ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ปค๋ฎค๋ํฐ ํผ๋๋ฐฑ ์์ง์ ํจ๊ณผ์ ์ด๋ค.