Slide 1

Slide 1 text

QLoRA: Efficient Finetuning of Quantized LLMs Sansan株式会社 研究開発部 齋藤 慎⼀朗 NeurIPS 2023 論⽂読み会

Slide 2

Slide 2 text

⾃⼰紹介 齋藤慎⼀朗 研究員 東北⼤学⼤学院⼯学研究科博⼠前期課程修了。⽇系SIerや 外資系IT企業で、電⼒・保険・製薬など多様な業界に対する、 機械学習を⽤いたシステムの提案やPoC・開発・保守運⽤に 従事。現在は、サービス改善のために、請求書データ化技術 の開発を担当。 (旧Twitter) @sinchir0 Virtual Card

Slide 3

Slide 3 text

- QLoRAは、性能を維持しながら、48GBのGPUで65Bのパラメータモデル をfine-tuning可能な効率的な⼿法である。 - 3つの⼿法で実現されている。 - 4-bit NormalFloat: 正規分布の重みに最適な新しいデータ型である。 - Double Quantization: 量⼦化定数を更に量⼦化することでメモリを削減する。 - Paged Optimizers: メモリスパイクを防ぐ。 - Guanaco(QLoRAを⽤いたChatbot)は、Vicunaベンチマークにおいて、 GPU1つを⽤いたfine-tuningを24時間を⾏い、ChatGPTの性能の99.3%に 達する。 1ページでまとめ

Slide 4

Slide 4 text

前提知識

Slide 5

Slide 5 text

- LoRA(Low-Rank Adaptation) - 量⼦化 前提知識

Slide 6

Slide 6 text

- 課題 - ⼤規模⾔語モデルで保存/最適化するパラメータを減らしたい - ⼿法 - ベースモデルの線形層の隣にΔ𝑊 = 𝐵𝐴( Adapter層 )を追加す る。 - ベースモデルの線形層は凍結する。 - Δ𝑊 = 𝐵𝐴のみ Fine Tuningし、結果を⾜す - 結果 - Full Fine Tuningと⽐較して、 > 学習パラメータ数を削減した > 性能は同等である - 推論コストが増加しない LoRA(Low-Rank Adaptation) Figure 1(Edward et al., 2021)

Slide 7

Slide 7 text

- QLoRA論⽂内での数式 - 𝑌 = 𝑋𝑊 + 𝑠𝑋𝐿! 𝐿" > 𝑋𝑊 ∈ 𝑌 𝑤𝑖𝑡ℎ 𝑋 ∈ ℝ!×#, 𝑊 ∈ ℝ#×$ > 𝐿% ∈ ℝ#×&, 𝐿' ∈ ℝ&×$ > 𝑠は定数 - 注: LoRA論⽂(Edward et al., 2021)のFIgure 1とは 変数名が異なる LoRA(Low-Rank Adaptation) 𝒐 Figure 1(Edward et al., 2021) ⼀部改変 𝑾 ∈ ℝ𝒉×𝒐 𝒉 𝑳𝟏 𝑳𝟐 𝑿 𝒀 𝒃

Slide 8

Slide 8 text

- Adapterはメモリをほぼ使⽤しないため、多くのAdapterを使⽤しても メモリ的な問題は発⽣しない。 LoRA(Low-Rank Adaptation) Figure 6

Slide 9

Slide 9 text

- QLoRA論⽂内での説明(32bit → 8bitする例) - Block-wise k-bit Quantization(量⼦化) > X()*+ = round %', -./0-1 2$%&' X345' = round(c345' 6 X345') - 𝑐は定数 - 8bitの範囲は[-127, 127] - Dequantization(量⼦化を元に戻す) > dequant c345', X()*+ = 2()*+ 6$%&' = X345' 量⼦化

Slide 10

Slide 10 text

課題・⽬的

Slide 11

Slide 11 text

- LLaMAの65Bの16ビットファインチューニングには、780GB以上のGPU メモリが必要である。 - 最近の量⼦化⼿法はLLMのメモリを削減することができる。 - それらの⼿法は推論にのみ有効であり、学習中に破綻する。 課題

Slide 12

Slide 12 text

- 量⼦化された4ビットモデルを性能劣化なしにfine- tuneできることを初めて実証する。 - 注:ここで量⼦化するのは元のモデルである。 - 𝑌 = 𝑋𝑊 + 𝑠𝑋𝐿! 𝐿" でいうと 𝑊 の部分を量⼦化する。 - 𝐿! , 𝐿" の部分はメモリをあまり利⽤していないため、ス コープ外である。 ⽬的 𝒐 Figure 1(Edward et al., 2021) ⼀部改変 𝑾 ∈ ℝ𝒉×𝒐 𝒉 𝑳𝟏 𝑳𝟐 𝑿 𝒀 𝒃

Slide 13

Slide 13 text

⼿法

Slide 14

Slide 14 text

⼿法の全体図

Slide 15

Slide 15 text

- 4-bit NormalFloat - Double Quantization - Paged Optimizers ⼿法

Slide 16

Slide 16 text

- 正規分布に基づくデータに対して情報理論的に最適な量⼦化データ型であ る。 - Quantile Quantization(Dettmers et al., 2022)に基づく。 - 各ビンが⼊⼒テンソルから割り当てられる値の数が等しい。 - ブロック単位での量⼦化アプローチを⾏う。 > 外れ値の影響が低減される。 > 正規化を各コアで独⽴して計算可能である。 - pretrained neural networkの重みは⼀般的に標準偏差σを持つ0中⼼の正規 分布を持っているため、4-bit NormalFloat が有効である。 4-bit NormalFloat

Slide 17

Slide 17 text

- ⼿順 1. 標準正規分布N(0, 1) を27 + 1個に量⼦化するための閾値を決め、[-1, 1]に正規化する。 2. ⼊⼒重みテンソルを[−1, 1]の範囲に正規化する。 3. 2で得られた結果を、1で決めた閾値を⽤いて量⼦化する。 - ⼿順1における閾値を決める⽅法 - 隣接する⼆つの量⼦位置の平均を取る。 - 𝑞8 = % ' (𝑄9 8 ',:% + 𝑄9( 8:% ',:% )) > 𝑞# : 𝑖番⽬の量⼦値 > 𝑄$ :標準正規分布の量⼦関数 > 𝑘: 量⼦化に使⽤されるビット数 4-bit NormalFloat

Slide 18

Slide 18 text

- メモリを節約するために、量⼦化定数を更に量⼦化する。 - 例えば、32bitの量⼦化定数をblocksize(パラメータ)が64の 𝑊 に対して 利⽤する場合、32bit分はメモリが必要になる。パラメータあたりの追加 のメモリは32/64 = 0.5bitである。 - Double Quantizationを利⽤すると、パラメータあたりの追加のメモリは 8/64 + 32/(64・256) = 0.127ビットとなり、パラメータあたり0.5 - 0.127 = 0.373ビットの削減となる。 Double Quantization

Slide 19

Slide 19 text

⁃ ページング ⁃ コンピュータにおけるメモリ管理技術の1つであり、補助記憶装置にデータを 格納し、あるいは取り出す⾏為 ※ ⁃ NVIDIA unified memoryを利⽤する際、optimizerのメモリをGPUとCPUの 間でページングすることで、GPUのメモリ不⾜を回避する。 ⁃ GPUがメモリ不⾜になったときに⾃動的にCPU RAMに退避され、 optimizerの更新ステップでメモリが必要になったときに再びGPUメモリ にページングされる。 Paged Optimizers ※ 引⽤元: https://www.sompocybersecurity.com/column/glossary/paging

Slide 20

Slide 20 text

QLoRA(全体) - LoRA(再掲) - Y = XW + sXL! L" - LoRAにdata typeを追記 - 𝑌&'!( = 𝑋&'!(𝑊&'!( + s𝑋&'!(𝐿! &'!(𝐿" &'!( - QLoRA - Y)*!( = X)*!(doubleDequant(c! *+,", c" -./01, W2*3) + X)*!(L! )*!(L" )*!( > doubleDequant 𝑐% ;<5', 𝑐' 7=!8>, 𝑊7=!8> = dequant dequant 𝑐% ;<5', 𝑐' 7=!8> , 𝑊?!8> = 𝑊@;%A 差分はここだけ

Slide 21

Slide 21 text

結果

Slide 22

Slide 22 text

QLoRA vs Standard Finetuning - QLoRA(4bit)は、16bitのモデルと同等の性能 Figure 2

Slide 23

Slide 23 text

QLoRA vs Standard Finetuning - Stanford-Alpaca = llama-7b + LoRA - Stanford-Alpacaは、RougeLにおいて ⼗分な性能が でない。 - Alpaca(Ours)は、Stanford-Alpacaに対し、全ての linear transformer blockでLoRAを⾏い、性能が出る ことを確認した。 - このことから、LoRAの最も重要なhyper parameterは、LoRA adaptersを合計何個使うかで あることを発⾒した。 Figure 2

Slide 24

Slide 24 text

4-bit NormalFloatは4-bit Floating Pointよりも性能が良い Figure 3 Table 2 DQ = Double Quantization

Slide 25

Slide 25 text

k-bit QLoRA は16-bit full finetuning, 16-bit LoRAの 性能を再現可能 Table 3

Slide 26

Slide 26 text

- Table 3のRoBERTaやT5はモデルサイズが125M~3Bなので、 より⼤きなモデルでも性能が落ちないことを確かめた。 より⼤きなモデルでも性能を再現可能 Table 4

Slide 27

Slide 27 text

- Guanaco = OASST1(ChatBotのSoTA)をQLoRAでinstruction tuning - Mean列はVicunaというbenchmarkに対して、ChatGPTの性能を100%と した時の性能である。 - 65BのモデルをMemory41GBで学習でき、その性能は99.3%でChatGPT とほぼ同等である。 QLoRAでSoTAなChatbotを学習する Table 6(抜粋)

Slide 28

Slide 28 text

まとめ・感想

Slide 29

Slide 29 text

- QLoRAは、性能を維持しながら、48GBのGPUで65Bのパラメータモデル をfine-tuning可能な効率的な⼿法である。 - 3つの⼿法で実現されている。 - 4-bit NormalFloat: 正規分布の重みに最適な新しいデータ型である。 - Double Quantization: 量⼦化定数を更に量⼦化することでメモリを削減する。 - Paged Optimizers: メモリスパイクを防ぐ。 - Guanaco(QLoRAを⽤いたChatbot)は、Vicunaベンチマークにおいて、 GPU1つを⽤いたfine-tuningを24時間を⾏い、ChatGPTの性能の99.3%に 達する。 1ページでまとめ(再掲)

Slide 30

Slide 30 text

- 誰でもLLMのFine-Tuningが可能な時代になりました。 - メモリのボトルネックを調査し、その部分に限定して量⼦化を⾏うことで メモリ削減を実現しており、スマートだなと感じた。 - LoRAに対して、性能を維持した状態で、メモリがどれだけ減るのかの 検証が(おそらくないため)欲しかった。 感想

Slide 31

Slide 31 text

実際に動くの? ※ 引⽤元:https://note.com/npaka/n/na7c631175111 - Google Colaboratoryで、Llama-2-7Bを、ござるデータセットを⽤いて ファインチューニング可能 - A100: 1000ステップを20分 - T4: 1000ステップを50分

Slide 32

Slide 32 text

No content