ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
๐Ÿงจ Stable Diffusion  in JAX / Flax !
Hugging Face BlogHugging Face Blog
AI/ML

Hugging Face Diffusers๊ฐ€ Flax ์ง€์›์„ ์ถ”๊ฐ€ํ•ด Stable Diffusion์„ Google TPU์—์„œ 8๊ฐœ ๋ณ‘๋ ฌ ์žฅ์น˜๋ฅผ ํ™œ์šฉํ•œ ์ถ”๋ก ์œผ๋กœ ๋‹จ์ผ ์นฉ ์†๋„๋กœ 8๋ฐฐ ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๊ฐ€๋Šฅ

๐Ÿงจ Stable Diffusion in JAX / Flax !

2022๋…„ 10์›” 13์ผ9๋ถ„intermediate

Context

Stable Diffusion ์ถ”๋ก ์€ ๊ณ„์‚ฐ๋Ÿ‰์ด ๋งŽ์•„ GPU ํ™˜๊ฒฝ์—์„œ๋„ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค. Google TPU ์„œ๋ฒ„๋Š” 8๊ฐœ์˜ TPU ๊ฐ€์†๊ธฐ๋ฅผ ๋ณ‘๋ ฌ๋กœ ๊ตฌ๋™ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ๊ธฐ์กด Diffusers ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ด๋ฅผ ํ™œ์šฉํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

Technical Solution

  • Flax๋ฅผ ์‚ฌ์šฉํ•œ ์ƒํƒœ๋น„์ €์žฅ ๋ชจ๋ธ ๊ตฌ์กฐ ๋„์ž…: ๋ชจ๋ธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ชจ๋ธ ์™ธ๋ถ€์— ์ €์žฅํ•˜๊ณ  ๋ณ„๋„ ๊ด€๋ฆฌ
  • JAX์˜ pmap(parallel map) ํ•จ์ˆ˜๋กœ ํŒŒ์ดํ”„๋ผ์ธ์˜ _generate ๋ฉ”์„œ๋“œ๋ฅผ 8๊ฐœ TPU ๋””๋ฐ”์ด์Šค์— ๋ณ‘๋ ฌํ™”: ๊ฐ ๋””๋ฐ”์ด์Šค๊ฐ€ ๋‹ค๋ฅธ ์ž…๋ ฅ ๋ฐฐ์น˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์ž๋™ ์ƒค๋”ฉ
  • ํ”„๋กฌํ”„ํŠธ ๋ณต์ œ ๋ฐ ์ž…๋ ฅ ์ƒค๋”ฉ: ๋‹จ์ผ ํ”„๋กฌํ”„ํŠธ๋ฅผ 8๋ฐฐ๋กœ ๋ณต์ œํ•œ ํ›„ flax.jax_utils.replicate์™€ shard๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ ๋””๋ฐ”์ด์Šค์— ๋ถ„์‚ฐ
  • bfloat16 ๋ฐ˜์ •๋ฐ€๋„ ์—ฐ์‚ฐ ํ™œ์šฉ: ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ์„ ์œ„ํ•ด bf16 ๊ฐ€์ค‘์น˜ ๋ฒ„์ „ ๋กœ๋“œ
  • ๋น„๋™๊ธฐ ๋””์ŠคํŒจ์น˜ ์ฒ˜๋ฆฌ: JAX์˜ ๋น„๋™๊ธฐ ํŠน์„ฑ์„ ํ™œ์šฉํ•˜๋˜ block_until_ready()๋กœ ์ •ํ™•ํ•œ ์ธก์ • ์‹œ๊ฐ„ ํ™•๋ณด

Impact

๋‹จ์ผ ์นฉ์ด 1๊ฐœ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์‹œ๊ฐ„์— 8๊ฐœ ๋””๋ฐ”์ด์Šค๊ฐ€ ๋™์‹œ์— 8๊ฐœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ (์ด ์‹คํ–‰ ์‹œ๊ฐ„ 6.82์ดˆ๋กœ ์ธก์ •๋จ).

Key Takeaway

Functional ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„(Flax)๊ณผ ๋ถ„์‚ฐ ์ปดํŒŒ์ผ ์ถ”์ƒํ™”(pmap)๋ฅผ ์กฐํ•ฉํ•˜๋ฉด, ๊ธฐ์ € ํ•จ์ˆ˜๋ฅผ ์ˆ˜์ • ์—†์ด ๋ณ‘๋ ฌ ์‹คํ–‰ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, ๋‹ค์ค‘ ๊ฐ€์†๊ธฐ ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœ์ž์˜ ๋ณต์žก๋„ ์ฆ๊ฐ€ ์—†์ด ํ™•์žฅ์„ฑ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค.


Google Colab์ด๋‚˜ Google Cloud Platform์˜ TPU ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฏธ์ง€ ์ƒ์„ฑ ์„œ๋น„์Šค์—์„œ Flax ๊ธฐ๋ฐ˜์˜ Stable Diffusion ํŒŒ์ดํ”„๋ผ์ธ์„ ๋„์ž…ํ•˜๊ณ  pmap์œผ๋กœ _generate ๋ฉ”์„œ๋“œ๋ฅผ ๋ณ‘๋ ฌํ™”ํ•˜๋ฉด, ๊ธฐ์กด ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ๋กœ์ง ๋ณ€๊ฒฝ ์—†์ด ๋™์‹œ์— 8๋ฐฐ์˜ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

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