AI

LoRA, QLoRA, LoRA-FA ๋ถ„์„

์ด-ํ”„ 2024. 11. 18. 16:25

0. LoRA

๐Ÿ’ก Fine-Tuning

  • ์‚ฌ์ „์— ํ›ˆ๋ จ๋œ ๋ชจ๋ธ์„ ํŠน์ • ์ž‘์—…์— ๋งž๊ฒŒ ์ถ”๊ฐ€๋กœ ํ›ˆ๋ จ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•
  • ์ ์€ ๋น„์šฉ์œผ๋กœ๋„ ํฐ ๋ชจ๋ธ์„ ํšจ์œจ์ ์œผ๋กœ ํ›ˆ๋ จ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์žฅ์  ์ œ๊ณต

 

๐Ÿ’ก PEET (Parameter-Efficient Fine-Tuning)

  • ์ ์€ ์–‘์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ•™์Šตํ•˜๋Š” ๊ฒƒ ๋งŒ์œผ๋กœ๋„ ๋น ๋ฅธ ์‹œ์ผ ์•ˆ์— ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ๋น„์Šทํ•œ ์„ฑ๋Šฅ์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ๋ฏธ์„ธ์กฐ์ •(Fine-Tuning) ๋ฐฉ๋ฒ•๋ก 
  • ๋ชจ๋ธ ์ „์ฒด๋ฅผ ๋ฏธ์„ธ์กฐ์ • ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค, ํ›จ์”ฌ ์ ์€ ๊ณ„์‚ฐ ์ž์›๊ณผ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•จ
  • ๋‹ค์–‘ํ•œ ํƒœ์Šคํฌ๋‚˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ชจ๋ธ์„ ๋น ๋ฅด๊ฒŒ ์ ์šฉํ•˜๊ฑฐ๋‚˜, ์‹คํ—˜ํ•˜๋ ค๋Š” ์—ฐ๊ตฌ์ž๋‚˜ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋งค์šฐ ์œ ์šฉํ•จ

๐Ÿ’ก Fully Fine-Tuning์ด ํž˜๋“  ์ด์œ   

  • LLM์˜ weight๋Š” ์ตœ์†Œ 1.5GB ~ 3GB
  • Model์„ GPU์— ๋กœ๋“œํ•˜๋Š” ๊ฒƒ๋งŒ ํ•ด๋„, ์—„์ฒญ๋‚œ GPU ํฌ๊ธฐ ์†Œ๋ชจ
  • Fine-Tuning์€ ์ฃผ๋กœ Forward, Backward, ์ด๋ฅผ ํ†ตํ•œ Update๋กœ ์ด๋ค„์ง€๋Š”๋ฐ ์ด๋•Œ ๋ฐœ๊ฒฌ๋œ gradient์™€ optimizer๋ฅผ ๋ชจ๋‘ GPU์— ์ €์žฅํ•ด์•ผ ํ•จ.
  • ๊ฒฐ๊ตญ, Fully Fine-Tuning ์‹œ, weight ์ˆ˜ * 2 ~ 3๋ฐฐ์˜ GPU ์šฉ๋Ÿ‰์ด ํ•„์š”ํ•จ

=> ์‚ฌ์ „ ํ•™์Šต๋œ LLM ๋ชจ๋ธ ์œ„์— ์–‡์€ ๋ ˆ์ด์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํŒŒ์ธํŠœ๋‹ํ•˜๋Š” ๋ฐฉ์‹ ๋•๋ถ„์— ์ƒˆ๋กœ์šด ํƒœ์Šคํฌ์— ๋Œ€ํ•œ ๋ชจ๋ธ์˜ ์ ์šฉ ๋ฐ ํ‰๊ฐ€๋ฅผ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ

 

๐Ÿ’ก LoRA (Low-Rank Adaptation)

  • Huggingface์—์„œ ๊ฐœ๋ฐœํ•œ Parameter-Efficient Fine-Tuning ๋ฐฉ์‹ (PEET) ์ค‘ ํ•˜๋‚˜
  • Low-Rank๋ฅผ ์ด์šฉํ•ด์„œ ์‹œ๊ฐ„, ๋ฆฌ์†Œ์Šค, ๋น„์šฉ์„ ์ค„์ด๋Š” ๊ธฐ๋ฒ•
  • ์–ธ์–ด ๋ชจ๋ธ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ (parameter)์˜ ๊ฐ€์ค‘์น˜ (weight)๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•œ ์ฑ„, ์ผ๋ถ€ ๋งค๊ฐœ๋ณ€์ˆ˜์—๋งŒ ํŒŒ์ธํŠœ๋‹์„ ์ ์šฉํ•˜์—ฌ ๊ฐ€์ค‘์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ํŒŒ์ธ ํŠœ๋‹ ๋ฐฉ์‹
  • ⇒ ํŠน์ • ๋ถ€๋ถ„๋งŒ ์ง‘์ค‘์ ์œผ๋กœ ์ˆ˜์ •ํ•˜์—ฌ ์ž‘์—…์— ๋Œ€ํ•œ ์„ฑ๋Šฅ์„ ๊ฐœ์„ 
  • ์‚ฌ์ „์— ํ•™์Šต๋œ ๋ชจ๋ธ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๋™๊ฒฐํ•˜๊ณ , ๊ฐ ์ธต์— ์ €๋žญํฌ(rank decomposition) ํ–‰๋ ฌ์„ ์‚ฝ์ž…ํ•˜์—ฌ ํ•™์Šต ๊ฐ€๋Šฅํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜๋ฅผ ํฌ๊ฒŒ ์ค„์ธ๋‹ค.
    • ์ €๋žญํฌ ํ–‰๋ ฌ ์‚ฝ์ž…
    • ํฐ ์ฐจ์›์˜ ํ–‰๋ ฌ ์—ฐ์‚ฐ์„ ๋‚ฎ์€ ์ฐจ์›์œผ๋กœ ๋ถ„ํ•ดํ•˜๋Š” ๊ฒƒ

ex) ํŒŒ์ด์ฌ์˜ peft ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ LoRA๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

 

 

๐Ÿ’ก LoRA ํ•™์Šต ๋ฐฉ๋ฒ•

  • Fully Fine-Tuning์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • Model weight๋ฅผ Freeze ํ•œ๋‹ค.
  • ํ•™์Šตํ•˜๋Š” Layer๋Š” LoRA_A & LoRA_B (๋‘˜๋‹ค linear ์ƒํƒœ)
  • Transformer Layer์— ์žˆ๋Š” Query, Key, Value, Output(=self attention) ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ๋‹จ์ˆœํžˆ ๋”ํ•ด์ค€๋‹ค.
  • Full Finetuning์—์„œ๋Š” ๊ธฐ์กด W์ž์ฒด๋ฅผ ํ•™์Šตํ•˜๊ธฐ์— ๋ณดํ†ต ๋งค์šฐ ๋งŽ์€ ์—ฐ์‚ฐ๋Ÿ‰์„ ํ•„์š”๋กœ ํ•œ๋‹ค.
  • ํ•˜์ง€๋งŒ, LoRA์—์„œ๋Š” W๋Š” ๊ณ ์ •ํ•ด๋‘๊ณ , ์ ์€ ์—ฐ์‚ฐ๋Ÿ‰์„ ํ•„์š”๋กœํ•˜๋Š” A, B ํ–‰๋ ฌ๋งŒ์„ ํ•™์Šตํ•จ.

 

๐Ÿ’ก LoRA ์žฅ๋‹จ์ 

์žฅ์ 

  • Memory, Storage ์‚ฌ์šฉ๋Ÿ‰์ด ์ ๋‹ค.
    • ๊ธฐ์กด Pretrained Parameter(W)์—์„œ ํ•™์Šต์„ ์ง„ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค์€ Optimizer์— ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
    • ๋”ฐ๋ผ์„œ Low Rank Decomposition์„ ์ˆ˜ํ–‰ํ•œ ์ฐจ์›์— ๋”ฐ๋ผ VRAM์„ 2/3 ์ˆ˜์ค€์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ , CheckPoint Size ๋˜ํ•œ ๋งค์šฐ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
  • Infernece Cost๊ฐ€ ์ ์Œ
    • ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ์— ๋Œ€ํ•œ ๋น„์šฉ์ด ์ ์Œ
    • Task ๋ณ„๋กœ LoRA ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฐ–๊ณ , Task์— ๋”ฐ๋ผ Switchํ•˜์—ฌ ์—ฐ์‚ฐํ•˜๊ธฐ ๋•Œ๋ฌธ
  • ํ•™์Šต ์‹œ๊ฐ„์ด ์ค„์–ด๋“ฌ
    • GPT3 175GB ๋ชจ๋ธ ๊ธฐ์ค€ 25% ์†๋„ ํ–ฅ์ƒ
    • ๋Œ€๋ถ€๋ถ„์˜ Pretrained Parameter (w)๋กœ Gradient๋ฅผ ๊ณ„์‚ฐํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ

๋‹จ์ 

  • ๋‹ค์–‘ํ•œ Task๋ฅผ ์„ž์–ด Batch๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ 
  • ์ธ๊ณต์ง€๋Šฅ๋ถ„์•ผ์— ์ž ์žฌ์ ์ธ ์˜ํ–ฅ๋ ฅ o

 


1. QLoRA

  • Quantized Low-Rank Adaptation
  • ๋ชจ๋ธ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์–‘์žํ™”ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ์„ ๊ฐœ์„ ํ•˜๊ณ , ์ €์šฉ๋Ÿ‰ ํ™˜๊ฒฝ์—์„œ๋„ ๊ณ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ์ˆ 
  • LoRA์™€ ๊ฒฐํ•ฉ๋œ QLoRA๋Š” ๋ชจ๋ธ์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋ฉด์„œ๋„ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐ ๊ฐ•์ ์ด ์กด์žฌ
  • ํŠน์ง• ๋ฐ ์žฅ์ 
    • ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์ €์žฅ ๊ณต๊ฐ„ ์ ˆ์•ฝ
    • ๊ณ ์„ฑ๋Šฅ ์œ ์ง€
    • ํšจ์œจ์ ์ธ ๋Œ€๊ทœ๋ชจ ๋ชจ๋ธ ํ•™์Šต ์ง€์›

 

  • ์‚ฌ์šฉ ๋ฐฉ์•ˆ (etc)
    • ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์—์„œ ๋ชจ๋ธ ๋ฐฐํฌ ์ตœ์ ํ™”
    • ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ์˜ AI ๋ชจ๋ธ ์‚ฌ์šฉ ์ตœ์ ํ™”

2. LoRA-FA

  • Low-Rank Adaptation for Fine-Tuning
  • ๋Œ€ํ˜• ๋ชจ๋ธ์„ ํŒŒ์ธํŠœ๋‹ํ•  ๋•Œ ํ•„์š”ํ•œ ์ž์› ์†Œ๋น„๋ฅผ ์ตœ์ ํ™” ํ•˜๋Š” ๊ธฐ์ˆ 
  • ๊ธฐ์กด์˜ ํŒŒ์ธํŠœ๋‹ ๋ฐฉ์‹์— ๋น„ํ•ด ๊ณ„์‚ฐ๋Ÿ‰์„ ๋Œ€ํญ ์ค„์ด๊ณ , ํšจ์œจ์  ํ•™์Šต ๊ฐ€๋Šฅ
  • ํŠน์ง• ๋ฐ ์žฅ์ 
    • ํŒŒ์ธํŠœ๋‹ ๊ณผ์ •์—์„œ ๊ณ„์‚ฐ ์ž์› ์ ˆ์•ฝ
    • ๋” ์ž‘์€ ๋ชจ๋ธ ํฌ๊ธฐ
    • ๋น ๋ฅธ ํ•™์Šต ์†๋„

 

  • ์‚ฌ์šฉ ๋ฐฉ์•ˆ (etc)
    • ๋Œ€ํ˜• ์–ธ์–ด ๋ชจ๋ธ์˜ ๋น ๋ฅธ ํŒŒ์ธํŠœ๋‹
    • ์ž์› ์ œ์•ฝ ํ™˜๊ฒฝ์—์„œ AI ๋ชจ๋ธ ์ตœ์ ํ™”

3. QLoRA ์™€ LoRA-FA ๋น„๊ต

  QLoRA LoRA-FA
๋ชฉ์  ๋ชจ๋ธ ํฌ๊ธฐ ์ถ•์†Œ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™” ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ ๋ชจ๋ธ ํŒŒ์ธํŠœ๋‹
์ž์› ์ตœ์ ํ™” ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™” (์–‘์žํ™” ๋ฐ ์ €์ฐจ์› ๊ทผ์‚ฌ) ๊ณ„์‚ฐ ์ž์› ์ ˆ์•ฝ (์ €์ฐจ์› ๊ทผ์‚ฌ๋ฅผ ํ†ตํ•œ ํŒŒ์ธํŠœ๋‹)
์„ฑ๋Šฅ ์„ฑ๋Šฅ ์†์‹ค ๊ฐ€๋Šฅ์„ฑ (์–‘์žํ™”๋กœ ์ธํ•œ ์ •ํ™•๋„ ๊ฐ์†Œ) ๋†’์€ ํŒŒ์ธํŠœ๋‹ ์†๋„, ํ•™์Šต ํšจ์œจ์„ฑ ํ–ฅ์ƒ
์ ์šฉ ๋ถ„์•ผ ๋ชจ๋ฐ”์ผ, ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ AI ๋ชจ๋ธ ๋ฐฐํฌ ์ตœ์ ํ™” ๋Œ€ํ˜• ์–ธ์–ด ๋ชจ๋ธ ํŒŒ์ธํŠœ๋‹, AI ์—ฐ๊ตฌ
์žฅ์  ์ €์šฉ๋Ÿ‰ ํ™˜๊ฒฝ์—์„œ ํšจ์œจ์ ์ธ ๋ชจ๋ธ ์‹คํ–‰ ๋น ๋ฅธ ํ•™์Šต ์†๋„, ์ž์› ์ตœ์ ํ™”
๋‹จ์  ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฐ€๋Šฅ์„ฑ, ์–‘์žํ™”๋กœ ์ธํ•œ ์ •ํ™•๋„ ๊ฐ์†Œ ๋ชจ๋ธ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๋ฉด ํšจ๊ณผ ๊ฐ์†Œ, ํŒŒ์ธํŠœ๋‹๋งŒ ๊ฐ€๋Šฅ

์ •๋ฆฌํ•˜์ž๋ฉด, ๋‘ ๊ธฐ์ˆ  ๋ชจ๋‘ AI ๋ชจ๋ธ ์ตœ์ ํ™”๋ผ๋Š” ๊ณตํ†ต ๋ชฉํ‘œ๊ฐ€ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ QLoRA๋Š” ์ €์šฉ๋Ÿ‰ ํ™˜๊ฒฝ์—์„œ ๋ชจ๋ธ์˜ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™” ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ๋กœ, ๋ชจ๋ฐ”์ผ ๋ฐ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค.

๋ฐ˜๋ฉด, LoRA-FA๋Š” ๋Œ€ํ˜• ๋ชจ๋ธ ํŒŒ์ธํŠœ๋‹์„ ์ตœ์ ํ™”ํ•˜๋Š” ๊ธฐ์ˆ ๋กœ, ํŠนํžˆ ๋Œ€ํ˜• ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ๋ชจ๋ธ์„ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ํ•™์Šต์‹œํ‚ค๋Š” ๋ฐ ์žฅ์ ์ด ์žˆ๋‹ค.

'AI' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํ•œ๊ตญ์–ด ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ SOTA ๋ถ„์„  (1) 2024.11.21
๋ฒกํ„ฐ DB ๋ถ„์„  (2) 2024.11.20
Continue Extension์„ ํ™œ์šฉํ•œ AI Coding ํ‰๊ฐ€  (2) 2024.10.21
Prompt๋ž€ ? (feat. LLM)  (0) 2024.08.28
Ollama / Embedding  (0) 2024.08.27