ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
Parameter-Efficient Fine-Tuning using ๐Ÿค— PEFT
Hugging Face BlogHugging Face Blog
AI/ML

Hugging Face๊ฐ€ PEFT ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ์˜ ํŒŒ์ธํŠœ๋‹์„ ํ•™์Šต ๊ฐ€๋Šฅ ํŒŒ๋ผ๋ฏธํ„ฐ 0.19%๋กœ ์ œํ•œํ•˜๋ฉด์„œ 40GB ์ฒดํฌํฌ์ธํŠธ๋ฅผ 19MB๋กœ ๊ฐ์†Œ

Parameter-Efficient Fine-Tuning using ๐Ÿค— PEFT

2023๋…„ 2์›” 10์ผ8๋ถ„intermediate

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)์„ ๋‹ฌ์„ฑํ•˜๋ฉด์„œ ๊ธฐ์กด ํ•™์Šต ๋ฃจํ”„๋ฅผ ๊ฑฐ์˜ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค.

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