Hugging Face Diffusers ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ ๊ธฐ๋ฒ์ ์กฐํฉํด 40GB ๋ชจ๋ธ(IF)์ 15GB VRAM ํ๋ฆฌ ํฐ์ด Google Colab์์ ์คํ ๊ฐ๋ฅํ๊ฒ ํจ
Running IF with ๐งจ diffusers on a Free Tier Google Colab
AI ์์ฝ
Context
IF๋ DeepFloyd๊ฐ 2023๋ 4์ ์ถ์ํ ํ ์คํธ-์ด๋ฏธ์ง ์์ฑ ๋ชจ๋ธ๋ก, ํฝ์ ๊ณต๊ฐ์์ ์ง์ ๋์ํ๊ณ T5-XXL ํ ์คํธ ์ธ์ฝ๋๋ฅผ ์ฌ์ฉํด ๊ณ ํ์ง ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค. ๊ทธ๋ฌ๋ T5(4.5B), Stage 1 UNet(4.3B), Stage 2 UNet(1.2B) ํ๋ผ๋ฏธํฐ๋ก ์ด 40GB์ ๊ฐ์ค์น๋ฅผ ๊ฐ์ง๊ณ ์์ด, ํ๋ฆฌ ํฐ์ด Google Colab์ 13GB CPU RAM๊ณผ 15GB GPU VRAM(T4) ํ๊ฒฝ์์ ์คํ ๋ถ๊ฐ๋ฅํ์ต๋๋ค.
Technical Solution
- Float32์์ Float16์ผ๋ก ์ ๋ฐ๋ ๋ณํ: T5 11GB, Stage 1 UNet 8.6GB, Stage 2 UNet 1.25GB๋ก ๊ฐ์
- Bitsandbytes 8bit ์์ํ ์ ์ฉ: T5 ๊ฐ์ค์น๋ฅผ 8GB ์ดํ๋ก ์์ถ
- Diffusers ๋ชจ๋์ ๋ก๋ฉ ํ์ฉ: ํ์ํ ์ปดํฌ๋ํธ๋ง ๊ฐ๋ณ ๋ก๋ํด CPU/GPU ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ ๋ฐฉ์ง
- ํ ์คํธ ์๋ฒ ๋ฉ ์ฌ์ ๊ณ์ฐ: ํ์ดํ๋ผ์ธ ์คํ ์ ํ๋กฌํํธ ์๋ฒ ๋ฉ์ ๊ณ์ฐํด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฌ์ฉ
- ๋จ๊ณ๋ณ ๋ฉ๋ชจ๋ฆฌ ํด์ : ๊ฐ ์ฒ๋ฆฌ ๋จ๊ณ ์๋ฃ ํ
del pipe์flush()ํธ์ถ๋ก GPU ๋ฉ๋ชจ๋ฆฌ ํ๋ณด
Impact
์ํฐํด์ ์ ๋์ ์ฑ๋ฅ ์์น(์: ์ฒ๋ฆฌ ์๊ฐ, ๋ฉ๋ชจ๋ฆฌ ์ ๊ฐ๋ฅ )๋ฅผ ๋ช ์ํ์ง ์์์ผ๋, ํ๋ฆฌ ํฐ์ด Google Colab์์ IF ํ ์คํธ-์ด๋ฏธ์ง ์์ฑ, ์ด๋ฏธ์ง ๋ณํ, ์ด๋ฏธ์ง ์ธํ์ธํ ๊ธฐ๋ฅ 3๊ฐ์ง๋ฅผ ๋ชจ๋ ์คํ ๊ฐ๋ฅํจ์ ์ ์ฆํ์ต๋๋ค.
Key Takeaway
์๋น์ ํ๋์จ์ด์์ ์ต์ ๋๊ท๋ชจ ์์ฑ ๋ชจ๋ธ์ ์คํํ๊ธฐ ์ํด์๋ ๋จ์ผ ์ต์ ํ ๊ธฐ๋ฒ์ด ์๋ ์ ๋ฐ๋ ๋ณํ, ์์ํ, ๋ชจ๋์ ๋ก๋ฉ, ๋ฉ๋ชจ๋ฆฌ ์๋ช ๊ด๋ฆฌ๋ฅผ ์กฐํฉํด์ผ ํฉ๋๋ค. ์คํ์์ค ๋๊ตฌ ์ฒด์ธ(Diffusers, Transformers, Accelerate, bitsandbytes)์ ํตํฉ์ผ๋ก ๊ณ ๊ธ ML ๊ธฐ์ ์ ๋ฏผ์ฃผํ๊ฐ ๊ฐ๋ฅํจ์ ์์ฌํฉ๋๋ค.
์ค์ฒ ํฌ์ธํธ
์ ํ๋ GPU VRAM ํ๊ฒฝ(15GB ์ดํ)์์ 10B ์ด์ ํ๋ผ๋ฏธํฐ์ ์์ฑ ๋ชจ๋ธ์ ๋ฐฐํฌํด์ผ ํ ๋, Diffusers์ `device_map='auto'` ํ๋ผ๋ฏธํฐ์ bitsandbytes 8bit ์์ํ๋ฅผ ์กฐํฉํ๊ณ , ํ์ดํ๋ผ์ธ ์ปดํฌ๋ํธ๋ฅผ ์์ฐจ์ ์ผ๋ก ๋ก๋/์ธ๋ก๋ํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ ์์ด ์ถ๋ก ์ ์ํํ ์ ์์ต๋๋ค.