Hugging Face์—์„œ ๐Ÿงจ `diffusers` ์‚ฌ์šฉํ•˜๊ธฐ

Hugging Face์—์„œ ๐Ÿงจ diffusers ์‚ฌ์šฉํ•˜๊ธฐ

diffusers๋Š” ์ด๋ฏธ์ง€, ์˜ค๋””์˜ค, ์‹ฌ์ง€์–ด ๋ถ„์ž์˜ 3D ๊ตฌ์กฐ๊นŒ์ง€ ์ƒ์„ฑํ•˜๋Š” ์ตœ์ฒจ๋‹จ ์‚ฌ์ „ํ•™์Šต diffusion ๋ชจ๋ธ์„ ๋‹ค๋ฃจ๋Š” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ˆ์š”. ๊ฐ„๋‹จํ•œ ์ถ”๋ก  ์†”๋ฃจ์…˜์„ ์›ํ•˜๋“  ์ง์ ‘ diffusion ๋ชจ๋ธ์„ ํ•™์Šต์‹œํ‚ค๊ณ  ์‹ถ๋“ , Diffusers๋Š” ๋‘˜ ๋‹ค ์ง€์›ํ•˜๋Š” ๋ชจ๋“ˆํ˜• ๋„๊ตฌ ๋ชจ์Œ์ด์—์š”. ์„ฑ๋Šฅ๋ณด๋‹ค ์‚ฌ์šฉ์„ฑ, '์–ด๋ ค์šด ๊ฒƒ'๋ณด๋‹ค '๊ฐ„๋‹จํ•œ ๊ฒƒ', ์ถ”์ƒํ™”๋ณด๋‹ค ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์— ์ดˆ์ ์„ ๋งž์ถฐ ์„ค๊ณ„๋์ฃ .

Hub์— ์žˆ๋Š” ์ˆ˜๋งŽ์€ diffusion ํŒŒ์ดํ”„๋ผ์ธ์„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ”๋กœ ์‹œํ—˜ํ•ด๋ณผ ์ˆ˜ ์žˆ์–ด์š”.

์ถœ์ฒ˜: ๋ฌธ์„œ

๋ณธ๋ฌธ

Hub์—์„œ Diffusers ๋‘˜๋Ÿฌ๋ณด๊ธฐ

Hub์—๋Š” diffusers ํ˜ธํ™˜์ด ๊ฐ€๋Šฅํ•œ ํŒŒ์ดํ”„๋ผ์ธ์ด 10,000๊ฐœ๊ฐ€ ๋„˜์–ด์š”. ๋ชจ๋ธ ํŽ˜์ด์ง€ ์™ผ์ชฝ ํ•„ํ„ฐ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์š”. Diffusion ์‹œ์Šคํ…œ์€ ๋ณดํ†ต ํ…์ŠคํŠธ ์ธ์ฝ”๋”, UNet, VAE, ์Šค์ผ€์ค„๋Ÿฌ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์–ด์š”. ์ด๋“ค์€ ๋‹จ๋… ๋ชจ๋ธ์€ ์•„๋‹ˆ์ง€๋งŒ ํŒŒ์ดํ”„๋ผ์ธ ์ถ”์ƒํ™” ๋•๋ถ„์— ์ถ”๋ก ์ด๋‚˜ ํ•™์Šต์— ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.

๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์œ„ํ•œ diffusion ํŒŒ์ดํ”„๋ผ์ธ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์š”:

  • ์ž์—ฐ์–ด ํ…์ŠคํŠธ ํ”„๋กฌํ”„ํŠธ๋กœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ (text-to-image).
  • ์ž์—ฐ์–ด ํ…์ŠคํŠธ ํ”„๋กฌํ”„ํŠธ๋กœ ์ด๋ฏธ์ง€ ๋ณ€ํ™˜ (image-to-image).
  • ์ž์—ฐ์–ด ์„ค๋ช…์œผ๋กœ ๋น„๋””์˜ค ์ƒ์„ฑ (text-to-video).

๋‹ค์šด๋กœ๋“œ ์—†์ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ”๋กœ ๋ชจ๋ธ์„ ์‹œํ—˜ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ์ธ๋ธŒ๋ผ์šฐ์ € ์œ„์ ฏ ๋•๋ถ„์— ์ง์ ‘ ํ•ด๋ณผ ์ˆ˜ ์žˆ์–ด์š”!

Diffusers ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํŒŒ์ผ

Diffusers ๋ชจ๋ธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๊ณ  ์ž ์žฌ(latent)๋ฅผ ๋””์ฝ”๋”ฉํ•˜๋Š” variational autoencoder, ํ…์ŠคํŠธ ์ธ์ฝ”๋”, transformer ๋ชจ๋ธ ๋“ฑ ํ•„์š”ํ•œ ๋ชจ๋“  ๋ชจ๋ธ ํ•˜์œ„ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ๋“ค์–ด ์žˆ์–ด์š”. ์ด ํ•˜์œ„ ๊ตฌ์„ฑ์š”์†Œ๋“ค์€ ๋‹ค์ค‘ ํด๋” ๊ตฌ์กฐ๋กœ ์ •๋ฆฌ๋ผ ์žˆ์–ด์š”.

๊ฐ ํ•˜์œ„ ํด๋”๋Š” Transformers ๋ชจ๋ธ์ฒ˜๋Ÿผ ํ•ด๋‹น ๊ตฌ์„ฑ์š”์†Œ์˜ ๊ฐ€์ค‘์น˜์™€ ์„ค์ •(ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ)์„ ๋‹ด๊ณ  ์žˆ์–ด์š”.

๊ฐ€์ค‘์น˜๋Š” ๋ณดํ†ต safetensors ํŒŒ์ผ๋กœ ์ €์žฅ๋˜๊ณ , ์„ค์ •์€ ๋ณดํ†ต ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜ ์ •๋ณด๋ฅผ ๋‹ด์€ json ํŒŒ์ผ์ด์—์š”.

๊ธฐ์กด ํŒŒ์ดํ”„๋ผ์ธ ์‚ฌ์šฉํ•˜๊ธฐ

๋ชจ๋“  diffusers ํŒŒ์ดํ”„๋ผ์ธ์€ ํ•œ ์ค„์ด๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”! ์ƒ์„ฑ์„ ํ•˜๋ ค๋ฉด ํ•ญ์ƒ DiffusionPipeline๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฑธ ๊ถŒ์žฅํ•ด์š”:

from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0")

UNet ๊ฐ™์€ ํŠน์ • ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ด๋ ‡๊ฒŒ ํ•ด์š”:

from diffusers import UNet2DConditionModel

unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", subfolder="unet")

ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ๋ชจ๋ธ ๊ณต์œ ํ•˜๊ธฐ

๋ชจ๋“  ํŒŒ์ดํ”„๋ผ์ธ ํด๋ž˜์Šค, ๋ชจ๋ธ ํด๋ž˜์Šค, ์Šค์ผ€์ค„๋Ÿฌ ํด๋ž˜์Šค๋Š” Hub์™€ ์™„์ „ํžˆ ํ˜ธํ™˜๋ผ์š”. ๊ตฌ์ฒด์ ์œผ๋กœ from_pretrained() ๋ฉ”์„œ๋“œ๋กœ Hub์—์„œ ์‰ฝ๊ฒŒ ๋กœ๋“œํ•˜๊ณ , push_to_hub() ๋ฉ”์„œ๋“œ๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์–ด์š”.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•ด ์ฃผ์„ธ์š”.

์ถ”๊ฐ€ ์ž๋ฃŒ

๋” ์•Œ์•„๋ณด๊ธฐ (Learn more)

  • ํ™•์‚ฐ ๋ชจ๋ธ์— ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด Diffusers ๋ฌธ์„œ๋ฅผ ์ •๋…ํ•ด ๋ณด์„ธ์š”.
  • Transformers ๋ฌธ์„œ์—์„œ Hub์˜ ๋‹ค๋ฅธ ๋ชจ๋ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์–ด์š”.
  • from_pretrained()์™€ push_to_hub()๋กœ Hub์™€์˜ ์–‘๋ฐฉํ–ฅ ๊ณต์œ ๊ฐ€ ๊ธฐ๋ณธ ์ œ๊ณต๋ผ์š”.