[Paper Review] QLoRA: Efficient Finetuning of Quantized LLMs

heejiniยท2025๋…„ 1์›” 17์ผ
0

Paper Review

๋ชฉ๋ก ๋ณด๊ธฐ
2/3
post-thumbnail

QLoRA : Efficient Finetuning of Quantize LLMs

๐Ÿ”— https://arxiv.org/abs/2305.14314

๊ธฐ์—… ํ•ด์ปคํ†ค์— ํ•„์š”ํ•œ ๋‚ด์šฉ์„ ๋„์ถœํ•˜๊ธฐ ์œ„ํ•ด ๋…ผ๋ฌธ์˜ ์ „๋ฌธ์„ ๊ผผ๊ผผํ•˜๊ฒŒ ๋ณด์ง€๋Š” ๋ชปํ•˜๊ณ , ํ•ต์‹ฌ ๋ถ€๋ถ„๋งŒ ๋น ๋ฅด๊ฒŒ ์ •๋ฆฌํ•˜์˜€๋‹ค. ์ƒ๋žต๋œ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ  ๋ฐ”๋žŒ


QLoRA : LoRA ์™€ nf4๋กœ ์–‘์žํ™” ํ•œ pretrained language model ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹

QLoRA ์˜ ๋ฐฉ๋ฒ•๋ก  :

  1. NF4
  2. Double quantization
  3. Paged Optimization

์•„๋ž˜๋ถ€ํ„ฐ QLoRA ๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ ์ง€์‹๋ถ€ํ„ฐ ๋ฐฉ๋ฒ•๋ก ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜๋ ค ํ•œ๋‹ค.


Quantization :

์—ฐ์‚ฐ๊ณผ ์ €์žฅ์— ํ•„์š”ํ•œ ์ •๋ฐ€๋„๋ฅผ ๋‚ฎ์ถ”์–ด ๋ชจ๋ธ์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰๊ณผ ๊ณ„์‚ฐ ํšจ์œจ์„ ๋†’์ด๋Š” ๊ธฐ์ˆ 

Quantization ์ข…๋ฅ˜ :

  1. Post-training Quantization (PTQ)
    • ๋ชจ๋ธ ํ•™์Šต ํ›„ ์–‘์žํ™” ์ˆ˜ํ–‰
    • ๋น„๊ต์  ๊ตฌํ˜„์ด ์‰ฝ๋‹ค๋Š” ์žฅ์ ์ด ์กด์žฌํ•œ๋‹ค.
    • ์ •ํ™•๋„ ์†์‹ค ๊ฐ€๋Šฅ์„ฑ ์กด์žฌ
  2. Quantization-Aware training (QAT)
    • ํ•™์Šต ์ค‘ ์–‘์žํ™”๋ฅผ ๊ณ ๋ ค
    • ์ •ํ™•๋„ ์†์‹ค์ด ์ ์ง€๋งŒ ๊ตฌํ˜„ ๋ณต์žก๋„๊ฐ€ ๋†’์Œ
  3. Dynamic Quantization / Static Quantization
    • Dynamic : ์ถ”๋ก  ์ค‘์— ์–‘์žํ™”
    • Static : ์‚ฌ์ „์— ์–‘์žํ™” ๋œ ๊ฐ’ ์‚ฌ์šฉ

PTQ ์ •์ˆ˜ ์–‘์žํ™” ๋ฐฉ์‹ ์˜ˆ์‹œ :
  1. absmax(X[fp32]) : fp32์˜ X์—์„œ ์ ˆ๋Œ“๊ฐ’์ด ๊ฐ€์žฅ ํฐ ์นœ๊ตฌ๋ฅผ ๋ฝ‘๋Š”๋‹ค.

    Xfp32=[1.5,โˆ’2.3,0.7,โˆ’1.2]X_fp32 = [1.5, -2.3,0.7, -1.2]

    S=max(abs(X))=2.3S = max(abs(X))=2.3

  2. 127/ [1๋ฒˆ๊ฒฐ๊ณผ] : 8 bit tensor์˜ max abs ๊ฐ’์ธ 127์— ๋‚˜๋ˆˆ๋‹ค โ†’ quantization constant (์–‘์žํ™” ์ƒ์ˆ˜)

    scaleย factor=127S=1272.3โ‰ˆ55.22\text{scale factor} = \frac{127}{S} = \frac{127}{2.3} \approx 55.22

  3. ๋‚˜์˜จ ๊ฐ’์„ x ์— ๋‹ค ๊ณฑํ•ด์คŒ, ๊ทธ๋ฆฌ๊ณ  ๋ฐ˜์˜ฌ๋ฆผ

    Xquantized=round(Xร—scaleย factor)X_{\text{quantized}} = \text{round}(X \times \text{scale factor})

    Xquantized=round([1.5ร—55.22,โˆ’2.3ร—55.22,0.7ร—55.22,โˆ’1.2ร—55.22])X_{\text{quantized}} = \text{round} \left( [1.5 \times 55.22, -2.3 \times 55.22, 0.7 \times 55.22, -1.2 \times 55.22] \right)

    Xquantized=round([82.83,โˆ’127,38.65,โˆ’66.26])X_{\text{quantized}} = \text{round} \left( [82.83, -127, 38.65, -66.26] \right)

    Xquantized=[83,โˆ’127,39,โˆ’66]X_{\text{quantized}} = [83, -127, 39, -66]


  • quantile quantization : ๊ฐ ์–‘์žํ™” ๊ตฌ๊ฐ„์— ํ• ๋‹น๋˜๋Š” ๋ฐ์ดํ„ฐ ์ˆ˜๊ฐ€ ๊ท ๋“ฑํ•œ ์–‘์žํ™”

  • ์ •๊ทœ๋ถ„ํฌ ์ „์ œ ํ•˜์— ์–‘์žํ™” ๊ตฌ๊ฐ„์„ ๋งŒ๋“ค๊ณ , ์ด๋ฅผ [-1,1] ์‚ฌ์ด๋กœ ์Šค์ผ€์ผ๋ง ๋œ ๊ฐ€์ค‘์น˜ ํ…์„œ๋ฅผ ์–‘์žํ™” ๊ตฌ๊ฐ„์— ๋งตํ•‘ํ•œ๋‹ค. 16๊ฐœ๋กœ ์–‘์žํ™” ๊ตฌ๊ฐ„๋„ ๋‚˜๋ˆ ์ฃผ๋Š”๋ฐ ์ด๋Š” 4bit ์–‘์žํ™”์—ฌ์„œ 16๊ฐœ (nf4)


NF4 (NormalFloat 4-bit)

1. ๋ฌธ์ œ

โ†’ โ€œ๋ถ„ํฌโ€ ๋ฅผ ๊ณ ๋ คํ•œ ์–‘์žํ™”์˜ ํ•„์š”์„ฑ

์ผ๋ฐ˜์ ์œผ๋กœ, ์–‘์žํ™”(Quantization) ์€ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

  1. ์ •๋ฐ€๋„ ์†์‹ค ์ตœ์†Œํ™”
  2. ์—ฐ์‚ฐ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ

์ด ๋•Œ, Quantile Quantization ์€ ์ •๋ณด ์ด๋ก ์ ์œผ๋กœ โ€œ๊ฐ ์–‘์žํ™” ๊ตฌ๊ฐ„ (bin)โ€ ์— ํ• ๋‹น๋˜๋Š” ๋ฐ์ดํ„ฐ ์ˆ˜๊ฐ€ ๊ท ๋“ฑโ€ ํ•˜๋„๋ก ์„ค์ •ํ•œ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค ๋ถ„ํฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋”๋ผ๋„, ๋ชจ๋“  bin ์— ๊ฐ™์€ ๊ฐฏ์ˆ˜์˜ ๊ฐ’์ด ์žˆ๋„๋ก ๊ฒฝ๊ณ„๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

ex : ๋ฐ์ดํ„ฐ๊ฐ€ 0 ๊ทผ์ฒ˜์— ๋ชฐ๋ ค ์žˆ์œผ๋ฉด, ๊ตฌ๊ฐ„์„ ๋” ์ด˜์ด˜ํ•˜๊ฒŒ ์ชผ๊ฐœ์„œ 0 ๋ถ€๊ทผ์˜ ์ •๋ฐ€๋„๋ฅผ ๋†’์ด๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฑฐ์˜ ์—†๋Š” ๊ทน๋‹จ ์˜์—ญ(์•„์›ƒ๋ผ์ด์–ด)์—๋Š” ๊ตฌ๊ฐ„์„ ๋„“๊ฒŒ ํ• ๋‹นํ•จ.

๋ฌธ์ œ๋Š” ์ด โ€˜๋ถ„ํฌ๋ฅผ ์ง์ ‘ ์ถ”์ •ํ•˜๋Š” ๊ณผ์ •(quantile estimation)โ€™์ด ๋น„์‹ธ๊ณ (๊ณ„์‚ฐ๋Ÿ‰ ๋งŽ๊ณ ), ์•„์›ƒ๋ผ์ด์–ด๊ฐ€ ์žˆ์œผ๋ฉด ์˜ค์ฐจ๊ฐ€ ์ปค์ง„๋‹ค๋Š” ๊ฒƒ.

2. ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ ๊ฐ€์ค‘์น˜ (weights) ๋Š” โ€œ์ •๊ทœ๋ถ„ํฌโ€ ์— ๊ฐ€๊น๋‹ค.

key idea : ์ด๋ฏธ ํ•™์Šต๋œ ์‹ ๊ฒฝ๋ง์˜ ๊ฐ€์ค‘์น˜๋Š” ๋Œ€์ฒด๋กœ 0์„ ์ค‘์‹ฌ์œผ๋กœ ํ•˜๋Š” ์ •๊ทœ๋ถ„ํฌ์— ๊ฐ€๊น๋‹ค.

์ฆ‰ โ€œํ•™์Šต๋œ ๊ฐ€์ค‘์น˜๊ฐ€ ๋ณดํ†ต ยฑ ๋ช‡ ํ‘œ์ค€ํŽธ์ฐจ(ฯƒ) ์•ˆ์— ๋ชฐ๋ ค์žˆ๋‹คโ€ ๋Š” ํ†ต๊ณ„์  ์„ฑ์งˆ์„ ์ด์šฉํ•˜์ž๋Š” ๊ฒƒ.

โ†’ โ€œ์•„์˜ˆ ํ‘œ์ค€ ์ •๊ทœ๋ถ„ํฌ์— ๋Œ€ํ•ด์„œ ์ด๋ก ์ ์œผ๋กœ ์ตœ์ ์ธ ์–‘์žํ™” ๊ตฌ๊ฐ„์„ ๋ฏธ๋ฆฌ ๊ณ ์ •ํ•ด๋ฒ„๋ฆฌ์žโ€ ๋ผ๋Š” ์ „๋žต์ด๋‹ค.
โ†’ ํ•œ๋งˆ๋””๋กœ, ๋งค๋ฒˆ ๊ฐ€์ค‘์น˜์˜ ๋ถ„์œ„์ˆ˜๋ฅผ ์ƒˆ๋กœ ์ถ”์ •ํ•  ํ•„์š” ์—†์ด, โ€œํ‘œ์ค€ ์ •๊ทœ๋ถ„ํฌ์šฉ์œผ๋กœ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•ด๋‘” ๊ตฌ๊ฐ„ ๊ฒฝ๊ณ„โ€๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ.

( ์—ฌ๊ธฐ์„œ NFk ์–‘์žํ™” ์•„์ด๋””์–ด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. )

3. NormalFloat(NFk) ์•„์ด๋””์–ด :

0 ํ‰๊ท , ฯƒ(ํ‘œ์ค€ํŽธ์ฐจ) ๊ฐ€ ์ผ์ •ํ•œ ์ •๊ทœ๋ถ„ํฌ์— ๋งž์ถฐ์„œ ๋ฏธ๋ฆฌ ์–‘์žํ™” ๊ตฌ๊ฐ„์„ ๋งŒ๋“  ๋’ค, ๊ฐ€์ค‘์น˜ ํ…์„œ๊ฐ€ ์‹ค์ œ๋กœ๋Š” ๋‹ค๋ฅธ ํ‘œ์ค€ ํŽธ์ฐจ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋‹ˆ, ์ด๋ฅผ [-1, 1] ๋ฒ”์œ„๋กœ ์ •๊ทœํ™” (์Šค์ผ€์ผ๋ง) ํ•ด ๋งคํ•‘ํ•œ๋‹ค.

โ†’ ์ •๊ทœ๋ถ„ํฌ ์ „์ œ ํ•˜์— ์–‘์žํ™” ๊ตฌ๊ฐ„์„ ๋งŒ๋“ค๊ณ , ์ด๋ฅผ [-1,1] ์‚ฌ์ด๋กœ ์Šค์ผ€์ผ๋ง ๋œ ๊ฐ€์ค‘์น˜ ํ…์„œ๋ฅผ ์–‘์žํ™” ๊ตฌ๊ฐ„์— ๋งตํ•‘ํ•œ๋‹ค. 16๊ฐœ๋กœ ์–‘์žํ™” ๊ตฌ๊ฐ„๋„ ๋‚˜๋ˆ ์ฃผ๋Š”๋ฐ ์ด๋Š” 4bit ์–‘์žํ™”์—ฌ์„œ 16๊ฐœ

๊ฐ„๋‹จํžˆ ์„ค๋ช… :

[-1,1] ์‚ฌ์ด์— 4bit ์˜ 16๊ฐ„๊ฒฉ์œผ๋กœ ์ชผ๊ฐœ์„œ ๊ทธ ์•ˆ์— ์žˆ๋Š” ๊ฐ’์„ ๊ฐ€๊นŒ์šด ๊ฑฐ๋กœ ๋ฐ”๊พธ๊ธฐ

(๋‹จ์ˆœ ๊ท ๋“ฑ๊นŒ์ง€๋Š” ์•„๋‹ˆ๊ณ  โ€์ •๊ทœ๋ถ„ํฌ์˜ ๋ถ„์œ„์ˆ˜โ€ ๋ฅผ ๊ณ ๋ คํ•ด ์ตœ์ ํ™”๋œ ์ง€์ ์„ ์ฐพ๊ธฐ)

  • [-1, 1] ๊ตฌ๊ฐ„์„ 16๊ฐœ๋กœ ๋‚˜๋ˆˆ๋‹ค (k=4๋น„ํŠธ โ†’ 16๊ฐœ bin)
    • ์ •ํ™•ํžˆ๋Š” ๋‹จ์ˆœ ๊ท ๋“ฑ ๊ฐ„๊ฒฉ์ด ์•„๋‹ˆ๋ผ, โ€œ์ •๊ทœ๋ถ„ํฌ์˜ ๋ถ„์œ„์ˆ˜โ€๋ฅผ ๊ณ ๋ คํ•ด ์ตœ์ ํ™”๋œ ์ง€์ ์„ ์ฐพ์Œ (๋…ผ๋ฌธ์—์„œ๋Š” ์ด๋ก ์  ์ตœ์ ์ด๋ผ ํ•จ).
  • FP32 ๊ฐ’(์‹ค์ œ ๊ฐ€์ค‘์น˜)์„ ํ•ด๋‹น ๊ตฌ๊ฐ„์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋Œ€ํ‘œ๊ฐ’(๊ตฌ๊ฐ„์˜ ์ค‘์•™๊ฐ’ ๋“ฑ)์œผ๋กœ ๋งคํ•‘
    • ์˜ˆ: 0.71 โ†’ 0.7333 ๊ตฌ๊ฐ„์— ํ•ด๋‹นํ•˜๋ฉด, โ€œ0.7333โ€์œผ๋กœ
  • ์ด๋•Œ ๊ทธ ๋Œ€ํ‘œ๊ฐ’(ํ˜น์€ ๊ตฌ๊ฐ„)์— ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค(์˜ˆ: 14๋ฒˆ bin)๋ฅผ ์ €์žฅ
    • ๋ฉ”๋ชจ๋ฆฌ์— 14๋ผ๋Š” โ€œ4๋น„ํŠธโ€ ์ˆซ์ž๋งŒ ์ €์žฅํ•˜๋ฉด, ์—ญ์œผ๋กœ ๋ณต์›ํ•  ๋•Œ 14โ†’0.7333 ์ •๋„๋กœ ๋‹ค์‹œ ํ™•์žฅ ๊ฐ€๋Šฅ.

NF4 ์ •๋ฆฌ

  • โ€œ๋”ฅ๋Ÿฌ๋‹ ๊ฐ€์ค‘์น˜๋Š” (๊ฑฐ์˜) N(0,ฯƒ^2) ๋ถ„ํฌ๋ฅผ ๋”ฐ๋ฅธ๋‹คโ€๋Š” ์ ์„ ์ ๊ทน ํ™œ์šฉ!!
  • โ€œ์ •๊ทœ๋ถ„ํฌ์— ์ตœ์ ์ธ ์–‘์žํ™” ๊ตฌ๊ฐ„โ€์„ ๊ณ ์ •(precomputed)ํ•ด๋‘๊ณ ,
    • ์ •๊ทœ๋ถ„ํฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์–‘์žํ™” ๋œ ๊ตฌ๊ฐ„์„ ๊ณ ์ •ํ•ด๋‘๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€ ๊ณ„์‚ฐ์ด ๋ถˆํ•„์š”
    • quantile quantization ์œผ๋กœ ํ•˜๋ฉด ๋งค๋ฒˆ ๊ณ„์‚ฐ์„ ํ•ด์ค˜์•ผ ๋ผ์„œ ๊ณ„์‚ฐ cost ๊ฐ€ ์ƒ๋‹นํ•จ
  • โ€œ๊ฐ€์ค‘์น˜๋ฅผ [-1,1]๋กœ ๋งคํ•‘โ€ ๋งŒ ํ•ด์ฃผ๋ฉด ์†์‰ฝ๊ฒŒ 4๋น„ํŠธ ์–‘์žํ™”๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
    • [-1,1] ์‚ฌ์ด๋กœ ์Šค์ผ€์ผ๋ง ๋œ ๊ฐ€์ค‘์น˜๋ฅผ ์ •๊ทœ๋ถ„ํฌ์— ์ตœ์ ์ธ ์–‘์žํ™” ๊ตฌ๊ฐ„์— ๋งตํ•‘ ํ•ด์ฃผ๊ธฐ
    • ํ•™์Šต๋œ ๊ฐ€์ค‘์น˜ ํ…์„œ๋ฅผ [-1,1] ๋ฒ”์œ„๋กœ ์Šค์ผ€์ผ๋งํ•˜๋ฉด, ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ •๊ทœ๋ถ„ํฌ ๊ธฐ๋ฐ˜ ์–‘์žํ™” ๊ตฌ๊ฐ„ (16 bin) ์— ๋ฐ”๋กœ ๋งตํ•‘ ๊ฐ€๋Šฅ
  • ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š” ์–‘์žํ™” ๊ตฌ๊ฐ„์ด ์‚ฌ์ „ํ•™์Šต๋œ ๊ฐ€์ค‘์น˜์˜ ์ •๊ทœ๋ถ„ํฌ์˜ ํŠน์„ฑ์— ๋งž๊ฒŒ ์„ค๊ณ„๋˜์—ˆ์œผ๋ฏ€๋กœ, ๊ฐ€์ค‘์น˜์˜ ์ค‘์‹ฌ๋ถ€์— ๋” ์ด˜์ด˜ํ•œ ๊ตฌ๊ฐ„์ด ๋ฐฐ์น˜๋˜์–ด ์ •๋ฐ€๋„๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

QLoRA ์—์„œ๋Š” nf4 ์–‘์žํ™”๋ฅผ ํ†ตํ•ด์„œ PLM์„ quantization ์‹œํ‚จ๋‹ค.


Double Quantization

Quantization Constant : ์–‘์žํ™” ์ƒ์ˆ˜

์–‘์žํ™”๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์••์ถ•ํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ ๋ฒ”์œ„ (ex : min, max) ๋ฅผ ๊ธฐ๋กํ•ด์•ผ ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์›ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋•Œ, ๊ฐ ๋ธ”๋ก์˜ absmax ๋“ฑ์„ ์ €์žฅํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ์–‘์žํ™” ์ƒ์ˆ˜์ด๋‹ค.

4๋น„ํŠธ ์–‘์žํ™”๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํฌ๊ฒŒ ์ค„์—ฌ์ฃผ์ง€๋งŒ, ์–‘์žํ™” ์ƒ์ˆ˜ ์ž์ฒด๋Š” ์—ฌ์ „ํžˆ fp32๋กœ ์ €์žฅ๋œ๋‹ค.

  • ๊ฐ ๋ธ”๋ก์˜ ํฌ๊ธฐ๋ฅผ 64๋กœ ์„ค์ •ํ•˜๋ฉด, ์–‘์žํ™” ์ƒ์ˆ˜๋Š” 64๊ฐœ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๋‹น 32๋น„ํŠธ๋ฅผ ์ฐจ์ง€ํ•œ๋‹ค.

์–‘์žํ™”์ƒ์ˆ˜๋ฉ”๋ชจ๋ฆฌ์‚ฌ์šฉ๋Ÿ‰=32/64=0.5๋น„ํŠธ/ํŒŒ๋ผ๋ฏธํ„ฐ์–‘์žํ™” ์ƒ์ˆ˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ = 32/64 = 0.5๋น„ํŠธ/ํŒŒ๋ผ๋ฏธํ„ฐ

์ด๋Š” 4bit ํšจ์œจ์„ฑ์„ ์ €ํ•˜ ์‹œํ‚ด. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ , QLoRA ๋Š” double quantization์„ ๋„์ž…ํ•˜์—ฌ ์–‘์žํ™” ์ƒ์ˆ˜๋ฅผ 8bit ๋กœ ์ถ”๊ฐ€ ์–‘์žํ™”ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ๋” ์ค„์ธ๋‹ค.

Double Quantization ์˜ ๋™์ž‘ ์›๋ฆฌ

  1. 1์ฐจ ์–‘์žํ™”
  • ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๋ฅผ 4๋น„ํŠธ๋กœ ์–‘์žํ™”ํ•˜๋ฉฐ, ๊ฐ ๋ธ”๋ก์— ๋Œ€ํ•ด ์–‘์žํ™” ์ƒ์ˆ˜ cFP32(2)c_{FP32}^{(2)} ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  1. 2์ฐจ ์–‘์žํ™”
  • 1์ฐจ ์–‘์žํ™” ์ƒ์ˆ˜ c_{FP32}^{(2)} ๋ฅผ ์ถ”๊ฐ€๋กœ ์–‘์žํ™” ํ•˜์—ฌ fp8๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. cFP8(2)=Quantize(cFP32(2))c_{FP8}^{(2)} = Quantize(c_{FP32}^{(2)})
  • ์ด ๊ณผ์ •์—์„œ, FP32 ์–‘์žํ™” ์ƒ์ˆ˜์˜ ํ‰๊ท ๊ฐ’์„ ๋นผ์„œ ๋Œ€์นญ์  ์–‘์žํ™”๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. (์–‘์žํ™” ๋ฒ”์œ„๋ฅผ ๋” ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ‰๊ท ๊ฐ’์„ ๋บ€๋‹ค๊ณ  ํ•œ๋‹ค.)
  1. ์–‘์žํ™” ์ƒ์ˆ˜์˜ ์–‘์žํ™” ์ƒ์ˆ˜ cFP32(1)c_{FP32}^{(1)}
  • 2์ฐจ ์–‘์žํ™”์˜ ๊ฒฐ๊ณผ์ธ cFP8(2)c_{FP8}^{(2)} ๋ฅผ ๋ณต์›ํ•˜๊ธฐ ์œ„ํ•ด ๋˜ ๋‹ค๋ฅธ ์–‘์žํ™” ์ƒ์ˆ˜ cFP32(1)c_{FP32}^{(1)} ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

Page Optimization

Paged Optimization์€ GPU VRAM์˜ ์šฉ๋Ÿ‰์„ ์ดˆ๊ณผํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ๋ชจ๋ธ์„ ์‹คํ–‰ํ•  ๋•Œ, VRAM๊ณผ CPU RAM์„ ๋™์ ์œผ๋กœ ํ™œ์šฉํ•˜์—ฌ OOM(Out-of-Memory) ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ๋ชจ๋ธ์˜ ์ผ๋ถ€ ํŒŒ๋ผ๋ฏธํ„ฐ๋‚˜ ์ค‘๊ฐ„ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ VRAM์—์„œ RAM์œผ๋กœ ์˜ฎ๊ฒจ ์ €์žฅํ•˜๊ณ , ํ•„์š”ํ•  ๋•Œ ๋‹ค์‹œ VRAM์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด VRAM ์‚ฌ์šฉ๋Ÿ‰์„ ์ตœ์ ํ™”ํ•˜๊ณ , ์ œํ•œ๋œ ํ•˜๋“œ์›จ์–ด ํ™˜๊ฒฝ์—์„œ๋„ ๋Œ€๊ทœ๋ชจ ๋ชจ๋ธ์„ ํšจ์œจ์ ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.


์ฆ‰, QLoRA ์˜ ํ•ต์‹ฌ์€ PLM Optimization ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์˜ค์ฐจ๋ฅผ LoRA ๊ฐ€ ํ•™์Šตํ•˜์—ฌ ๋ณด์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

QLoRA์˜ ํ•ต์‹ฌ ์›๋ฆฌ:

  1. ์–‘์žํ™”๋œ ๋ชจ๋ธ ๋™๊ฒฐ:
    • QLoRA๋Š” 4๋น„ํŠธ๋กœ ์–‘์žํ™”๋œ ๋ฒ ์ด์Šค ๋ชจ๋ธ์˜ ๊ฐ€์ค‘์น˜๋ฅผ frozen ํ•œ๋‹ค.
    • ์ฆ‰, ๋ฒ ์ด์Šค ๋ชจ๋ธ์˜ ๊ฐ€์ค‘์น˜๋Š” ํ•™์Šต๋˜์ง€ ์•Š์œผ๋ฉฐ, optimization ์ƒํƒœ ๊ทธ๋Œ€๋กœ ์œ ์ง€
  2. LoRA ์–ด๋Œ‘ํ„ฐ๋ฅผ ํ†ตํ•ด ๋ณด์ •:
    • optimization ๋œ PLM์ด ํ‘œํ˜„ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ •๋ณด(=์–‘์žํ™” ์˜ค์ฐจ)๋ฅผ LoRA ์–ด๋Œ‘ํ„ฐ๊ฐ€ ํ•™์Šตํ•œ๋‹ค. ( LoRA ์–ด๋Œ‘ํ„ฐ๋Š” low-rank matrix๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋ชจ๋ธ์˜ ํŠน์ • ์„ ํ˜• ๊ณ„์ธต(Linear Layer)์— ์ถ”๊ฐ€๋œ๋‹ค. )
  3. LoRA ํ•™์Šต ๊ณผ์ •:
    • ํ•™์Šต ์ค‘, ๋ชจ๋ธ ์ถœ๋ ฅ๊ณผ ์‹ค์ œ ์ •๋‹ต ์‚ฌ์ด์˜ ์˜ค์ฐจ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ LoRA ์–ด๋Œ‘ํ„ฐ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋งŒ ์—…๋ฐ์ดํŠธ ๋œ๋‹ค.
    • LoRA ์–ด๋Œ‘ํ„ฐ๋Š” ์–‘์žํ™”๋œ ๋ชจ๋ธ์˜ ์ถœ๋ ฅ์„ ๋ณด์ •ํ•˜์—ฌ, ์–‘์žํ™”๋กœ ์ธํ•œ ์„ฑ๋Šฅ ์†์‹ค์„ ์ตœ์†Œํ™”ํ•œ๋‹ค.
profile
๐Ÿ€

0๊ฐœ์˜ ๋Œ“๊ธ€