Hugging Face๊ฐ PEFT ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ์ ํ์ธํ๋์ ํ์ต ๊ฐ๋ฅ ํ๋ผ๋ฏธํฐ 0.19%๋ก ์ ํํ๋ฉด์ 40GB ์ฒดํฌํฌ์ธํธ๋ฅผ 19MB๋ก ๊ฐ์
Parameter-Efficient Fine-Tuning using ๐ค PEFT
AI ์์ฝ
Context
์ ์ฒด ํ์ธํ๋ ๋ฐฉ์์ ๋ชจ๋ธ ํฌ๊ธฐ๋งํผ์ ์ฒดํฌํฌ์ธํธ๋ฅผ ๊ฐ ๋ค์ด์คํธ๋ฆผ ํ์คํฌ๋ง๋ค ์ ์ฅํด์ผ ํ๋ฏ๋ก ์ ์ฅ์ ๋น์ฉ์ด ์ฆ๊ฐํ๋ค. ์๋ฅผ ๋ค์ด bigscience/mt0-xxl ๋ชจ๋ธ์ 40GB์ ์ ์ฅ ๊ณต๊ฐ์ ์ฐจ์งํ๋ฉฐ, ๊ฐ ๋ค์ด์คํธ๋ฆผ ๋ฐ์ดํฐ์ ๋ง๋ค ๋ณ๋์ 40GB ์ฒดํฌํฌ์ธํธ๊ฐ ํ์ํ๋ค. ๋ํ ์ผ๋ฐ ์๋น์ ํ๋์จ์ด์์๋ ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ์ผ๋ก ์ธํด ์ ์ฒด ํ์ธํ๋์ด ๋ถ๊ฐ๋ฅํ๋ค.
Technical Solution
- LoRA(Low-Rank Adaptation)๋ฅผ ์ ์ฉํ์ฌ ๊ธฐ์กด ๋ชจ๋ธ์ ๋๋ถ๋ถ ํ๋ผ๋ฏธํฐ๋ ๋๊ฒฐํ๊ณ ์ ๋ญํฌ ํ๋ ฌ๋ง ํ์ต: r=8, lora_alpha=32, lora_dropout=0.1 ์ค์ ์ผ๋ก ๊ตฌ์ฑ
- ๐ค Transformers์ ๐ค Accelerate๋ฅผ ํตํฉํ์ฌ LoRA, Prefix Tuning, Prompt Tuning, P-Tuning v2 ๋ฑ ์ฌ๋ฌ PEFT ๋ฐฉ์์ ์ผ๊ด๋ API๋ก ์ ๊ณต
- get_peft_model() ํจ์๋ก ๊ธฐ์กด Transformers ๋ชจ๋ธ์ ๊ฐ์ธ PEFT ๋ฐฉ์ ์ ์ฉ: ๊ธฐ์กด ํ์ต ๋ฃจํ๋ ๋ณ๊ฒฝ ์์
- ํ์ธํ๋ ์๋ฃ ํ save_pretrained()๋ก ์ฆ๋ถ ๊ฐ์ค์น๋ง ์ ์ฅํ์ฌ ์ฉ๋ ์ต์ํ
- DeepSpeed integration๊ณผ INT8 ์์ํ๋ฅผ ์ง์ํ์ฌ Google Colab(11GB GPU) ๊ฐ์ ์ ํ๋ ํ๊ฒฝ์์ ๋๊ท๋ชจ ๋ชจ๋ธ ํ์ต ๊ฐ๋ฅ
Impact
bigscience/mt0-large ๋ชจ๋ธ ํ์ธํ๋ ์ ์ ์ฒด 1,231,940,608๊ฐ ํ๋ผ๋ฏธํฐ ์ค 2,359,296๊ฐ(0.19%)๋ง ํ์ต ๊ฐ๋ฅ. bigscience/T0_3B ๋ชจ๋ธ์ twitter_complaints ๋ฐ์ดํฐ์ ์ผ๋ก LoRA ํ์ธํ๋ํ ์ฒดํฌํฌ์ธํธ๋ adapter_config.json๊ณผ adapter_model.bin 2๊ฐ ํ์ผ๋ก ์ด 19MB ํฌ๊ธฐ๋ก ์ ์ฅ๋๋ฉฐ, ์ ์ฒด ํ์ธํ๋์ 40GB์ ๋นํด ์ฉ๋์ ๋ํญ ๊ฐ์.
Key Takeaway
PEFT ๋ฐฉ์์ ์ ์ฒด ํ์ธํ๋๊ณผ ๋น๊ต ๊ฐ๋ฅํ ์ฑ๋ฅ์ ๋ฌ์ฑํ๋ฉด์ ํ์ต ๊ฐ๋ฅ ํ๋ผ๋ฏธํฐ๋ฅผ 0.19% ์์ค์ผ๋ก ์ ํํจ์ผ๋ก์จ ์ ์ฅ์, ๊ณ์ฐ ๋น์ฉ, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๊ธฐ์ ์ผ๋ก ์ ๊ฐํ๋ค. ๊ฐ์ ๊ธฐ๋ณธ ๋ชจ๋ธ ์์ ์์ ์ด๋ํฐ๋ง ์ถ๊ฐํ์ฌ ์ฌ๋ฌ ๋ค์ด์คํธ๋ฆผ ํ์คํฌ๋ฅผ ๋์์ ์ง์ํ ์ ์๋ค๋ ๊ฒ์ด ํต์ฌ ์ค๊ณ ๊ฐ์น๋ค.
์ค์ฒ ํฌ์ธํธ
3B~13B ๊ท๋ชจ์ ์ธ์ด ๋ชจ๋ธ์ ์๋น์ GPU(11GB VRAM)๋ก ํ์ธํ๋ํด์ผ ํ๋ ํ๊ฒฝ์์ ๐ค PEFT์ LoRA๋ฅผ ์ ์ฉํ๋ฉด DeepSpeed zero-stage-3 ์คํ๋ก๋์ ๊ฒฐํฉํ์ฌ ํ์ต ๊ฐ๋ฅ ํ๋ผ๋ฏธํฐ๋ฅผ
0.19% ์์ค์ผ๋ก ์ ํํ ์ ์๋ค. ์ด๋ฅผ ํตํด ์ ์ฒด ํ์ธํ๋ ๋๋น 40๋ฐฐ ์ด์์ ์คํ ๋ฆฌ์ง ์ ๊ฐ(40GB โ 19MB)์ ๋ฌ์ฑํ๋ฉด์ ๊ธฐ์กด ํ์ต ๋ฃจํ๋ฅผ ๊ฑฐ์ ๋ณ๊ฒฝํ์ง ์๊ณ ๊ตฌํ ๊ฐ๋ฅํ๋ค.