# ๐Ÿงจ Diffusers์˜ ์œค๋ฆฌ ์ง€์นจ ## ์„œ๋ฌธ [Diffusers](https://huggingface.co/docs/diffusers/index)๋Š” ์‚ฌ์ „ ํ›ˆ๋ จ๋œ diffusion ๋ชจ๋ธ์„ ์ œ๊ณตํ•˜๋ฉฐ ์ถ”๋ก  ๋ฐ ํ›ˆ๋ จ์„ ์œ„ํ•œ ๋ชจ๋“ˆ์‹ ํˆด๋ฐ•์Šค๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ์ˆ ์˜ ์‹ค์ œ ์ ์šฉ๊ณผ ์‚ฌํšŒ์— ๋ฏธ์น  ์ˆ˜ ์žˆ๋Š” ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๊ณ ๋ คํ•˜์—ฌ Diffusers ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฐœ๋ฐœ, ์‚ฌ์šฉ์ž ๊ธฐ์—ฌ ๋ฐ ์‚ฌ์šฉ์— ์œค๋ฆฌ ์ง€์นจ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์—ฐ๊ด€๋œ ์œ„ํ—˜์€ ์•„์ง ์กฐ์‚ฌ ์ค‘์ด์ง€๋งŒ, ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ๋“ค๋ฉด: ์˜ˆ์ˆ ๊ฐ€๋“ค์— ๋Œ€ํ•œ ์ €์ž‘๊ถŒ ๋ฌธ์ œ; ๋”ฅ ํŽ˜์ดํฌ์˜ ์•…์šฉ; ๋ถ€์ ์ ˆํ•œ ๋งฅ๋ฝ์—์„œ์˜ ์„ฑ์  ์ฝ˜ํ…์ธ  ์ƒ์„ฑ; ๋™์˜ ์—†๋Š” impersonation; ์‚ฌํšŒ์ ์ธ ํŽธ๊ฒฌ์œผ๋กœ ์ธํ•ด ์–ต์••๋˜๋Š” ๊ทธ๋ฃน๋“ค์— ๋Œ€ํ•œ ํ•ด๋กœ์šด ์˜ํ–ฅ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์œ„ํ—˜์„ ์ง€์†์ ์œผ๋กœ ์ถ”์ ํ•˜๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์‘๋‹ต๊ณผ ์†Œ์ค‘ํ•œ ํ”ผ๋“œ๋ฐฑ์— ๋”ฐ๋ผ ๋‹ค์Œ ์ง€์นจ์„ ์กฐ์ •ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ## ๋ฒ”์œ„ Diffusers ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ํ”„๋กœ์ ํŠธ์˜ ๊ฐœ๋ฐœ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์œค๋ฆฌ ์ง€์นจ์„ ์ ์šฉํ•˜๋ฉฐ, ํŠนํžˆ ์œค๋ฆฌ์  ๋ฌธ์ œ์™€ ๊ด€๋ จ๋œ ๋ฏผ๊ฐํ•œ ์ฃผ์ œ์— ๋Œ€ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ธฐ์—ฌ๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ## ์œค๋ฆฌ ์ง€์นจ ๋‹ค์Œ ์œค๋ฆฌ ์ง€์นจ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ ์šฉ๋˜์ง€๋งŒ, ๊ธฐ์ˆ ์  ์„ ํƒ์„ ํ•  ๋•Œ ์œค๋ฆฌ์ ์œผ๋กœ ๋ฏผ๊ฐํ•œ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์ฃผ๋กœ ์ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ•ด๋‹น ๊ธฐ์ˆ ์˜ ์ตœ์‹  ๋™ํ–ฅ๊ณผ ๊ด€๋ จ๋œ ์‹ ๊ทœ ์œ„ํ—˜์— ๋”ฐ๋ผ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์ด๋Ÿฌํ•œ ์œค๋ฆฌ ์›์น™์„ ์กฐ์ •ํ•  ๊ฒƒ์„ ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค. - **ํˆฌ๋ช…์„ฑ**: ์šฐ๋ฆฌ๋Š” PR์„ ๊ด€๋ฆฌํ•˜๊ณ , ์‚ฌ์šฉ์ž์—๊ฒŒ ์šฐ๋ฆฌ์˜ ์„ ํƒ์„ ์„ค๋ช…ํ•˜๋ฉฐ, ๊ธฐ์ˆ ์  ์˜์‚ฌ๊ฒฐ์ •์„ ๋‚ด๋ฆด ๋•Œ ํˆฌ๋ช…์„ฑ์„ ์œ ์ง€ํ•  ๊ฒƒ์„ ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค. - **์ผ๊ด€์„ฑ**: ์šฐ๋ฆฌ๋Š” ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์—์„œ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ๋™์ผํ•œ ์ˆ˜์ค€์˜ ๊ด€์‹ฌ์„ ๋ณด์žฅํ•˜๊ณ  ๊ธฐ์ˆ ์ ์œผ๋กœ ์•ˆ์ •๋˜๊ณ  ์ผ๊ด€๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ๊ฒƒ์„ ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค. - **๊ฐ„๊ฒฐ์„ฑ**: Diffusers ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํ™œ์šฉํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด, ํ”„๋กœ์ ํŠธ์˜ ๋ชฉํ‘œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ณ  ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์œ ์ง€ํ•  ๊ฒƒ์„ ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค. - **์ ‘๊ทผ์„ฑ**: Diffusers ํ”„๋กœ์ ํŠธ๋Š” ๊ธฐ์ˆ ์  ์ „๋ฌธ ์ง€์‹ ์—†์–ด๋„ ํ”„๋กœ์ ํŠธ ์šด์˜์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์—ฌ์ž์˜ ์ง„์ž…์žฅ๋ฒฝ์„ ๋‚ฎ์ถฅ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์—ฐ๊ตฌ ๊ฒฐ๊ณผ๋ฌผ์ด ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋” ์ž˜ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. - **์žฌํ˜„์„ฑ**: ์šฐ๋ฆฌ๋Š” Diffusers ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ œ๊ณต๋˜๋Š” ์—…์ŠคํŠธ๋ฆผ(upstream) ์ฝ”๋“œ, ๋ชจ๋ธ ๋ฐ ๋ฐ์ดํ„ฐ์…‹์˜ ์žฌํ˜„์„ฑ์— ๋Œ€ํ•ด ํˆฌ๋ช…ํ•˜๊ฒŒ ๊ณต๊ฐœํ•  ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. - **์ฑ…์ž„**: ์šฐ๋ฆฌ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ํŒ€์›Œํฌ๋ฅผ ํ†ตํ•ด, ์ด ๊ธฐ์ˆ ์˜ ์ž ์žฌ์ ์ธ ์œ„ํ—˜๊ณผ ์œ„ํ—˜์„ ์˜ˆ์ธกํ•˜๊ณ  ์™„ํ™”ํ•˜๋Š” ๋ฐ ๋Œ€ํ•œ ๊ณต๋™ ์ฑ…์ž„์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ## ๊ตฌํ˜„ ์‚ฌ๋ก€: ์•ˆ์ „ ๊ธฐ๋Šฅ๊ณผ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ํŒ€์€ diffusion ๊ธฐ์ˆ ๊ณผ ๊ด€๋ จ๋œ ์ž ์žฌ์ ์ธ ์œค๋ฆฌ ๋ฐ ์‚ฌํšŒ์  ์œ„ํ—˜์— ๋Œ€์ฒ˜ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ ์  ๋ฐ ๋น„๊ธฐ์ˆ ์  ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๊ณ ์ž ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ฐธ์—ฌ๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์˜ ๊ตฌํ˜„ํ•˜๊ณ  ์šฐ๋ฆฌ์™€ ํ•จ๊ป˜ ์ธ์‹์„ ๋†’์ด๋Š” ๋ฐ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. - [**์ปค๋ฎค๋‹ˆํ‹ฐ ํƒญ**](https://huggingface.co/docs/hub/repositories-pull-requests-discussions): ์ด๋ฅผ ํ†ตํ•ด ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ํ† ๋ก ํ•˜๊ณ  ๋” ๋‚˜์€ ํ˜‘๋ ฅ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - **ํŽธํ–ฅ ํƒ์ƒ‰ ๋ฐ ํ‰๊ฐ€**: Hugging Face ํŒ€์€ Stable Diffusion ๋ชจ๋ธ์˜ ํŽธํ–ฅ์„ฑ์„ ๋Œ€ํ™”ํ˜•์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” [space](https://huggingface.co/spaces/society-ethics/DiffusionBiasExplorer)์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์˜๋ฏธ์—์„œ, ์šฐ๋ฆฌ๋Š” ํŽธํ–ฅ ํƒ์ƒ‰ ๋ฐ ํ‰๊ฐ€๋ฅผ ์ง€์›ํ•˜๊ณ  ์žฅ๋ คํ•ฉ๋‹ˆ๋‹ค. - **๋ฐฐํฌ์—์„œ์˜ ์•ˆ์ „ ์œ ๋„** - [**์•ˆ์ „ํ•œ Stable Diffusion**](https://huggingface.co/docs/diffusers/main/en/api/pipelines/stable_diffusion/stable_diffusion_safe): ์ด๋Š” ํ•„ํ„ฐ๋˜์ง€ ์•Š์€ ์›น ํฌ๋กค๋ง ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ ํ›ˆ๋ จ๋œ Stable Diffusion๊ณผ ๊ฐ™์€ ๋ชจ๋ธ์ด ๋ถ€์ ์ ˆํ•œ ๋ณ€์งˆ์— ์ทจ์•ฝํ•œ ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ จ ๋…ผ๋ฌธ: [Safe Latent Diffusion: Mitigating Inappropriate Degeneration in Diffusion Models](https://arxiv.org/abs/2211.05105). - [**์•ˆ์ „ ๊ฒ€์‚ฌ๊ธฐ**](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion/safety_checker.py): ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋œ ํ›„์— ์ด๋ฏธ์ž๊ฐ€ ์ž„๋ฒ ๋”ฉ ๊ณต๊ฐ„์—์„œ ์ผ๋ จ์˜ ํ•˜๋“œ์ฝ”๋”ฉ๋œ ์œ ํ•ด ๊ฐœ๋…์˜ ํด๋ž˜์Šค์ผ ํ™•๋ฅ ์„ ํ™•์ธํ•˜๊ณ  ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์œ ํ•ด ๊ฐœ๋…์€ ์—ญ๊ณตํ•™์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์˜๋„์ ์œผ๋กœ ์ˆจ๊ฒจ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. - **Hub์—์„œ์˜ ๋‹จ๊ณ„์ ์ธ ๋ฐฐํฌ**: ํŠนํžˆ ๋ฏผ๊ฐํ•œ ์ƒํ™ฉ์—์„œ๋Š” ์ผ๋ถ€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œํ•œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์ ์ธ ๋ฐฐํฌ๋Š” ์ค‘๊ฐ„ ๋‹จ๊ณ„๋กœ, ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ž‘์„ฑ์ž๊ฐ€ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ํ†ต์ œ๋ ฅ์„ ๊ฐ–๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. - **๋ผ์ด์„ ์‹ฑ**: [OpenRAILs](https://huggingface.co/blog/open_rail)์™€ ๊ฐ™์€ ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ๋ผ์ด์„ ์‹ฑ์„ ํ†ตํ•ด ์ž์œ ๋กœ์šด ์ ‘๊ทผ์„ ๋ณด์žฅํ•˜๋ฉด์„œ๋„ ๋” ์ฑ…์ž„ ์žˆ๋Š” ์‚ฌ์šฉ์„ ์œ„ํ•œ ์ผ๋ จ์˜ ์ œํ•œ์„ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.