ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
What's new in Diffusers? ๐ŸŽจ
Hugging Face BlogHugging Face Blog
AI/ML

Hugging Face์˜ Diffusers ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ v0.3์ด Image-to-Image, Textual Inversion, Inpainting ํŒŒ์ดํ”„๋ผ์ธ์„ ์ถ”๊ฐ€ํ•˜๊ณ  VRAM ์‚ฌ์šฉ๋Ÿ‰์„ 3.2GB๋กœ ๊ฐ์†Œ์‹œํ‚ค๋ฉฐ Mac OS ๋ฐ ONNX ์ง€์›์œผ๋กœ ํ•˜๋“œ์›จ์–ด ์ ‘๊ทผ์„ฑ ํ™•๋Œ€

What's new in Diffusers? ๐ŸŽจ

2022๋…„ 9์›” 12์ผ7๋ถ„intermediate

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 ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋ฐฑ์—”๋“œ ์ง€์›์„ ์‹คํ—˜์  ๊ธฐ๋Šฅ์œผ๋กœ ๋จผ์ € ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ง‘์— ํšจ๊ณผ์ ์ด๋‹ค.

์›๋ฌธ ์ฝ๊ธฐ