XLogo

Research

Articles

QLoRAとは 構造と効率性について説明

記事のまとめ

  1. QLoRAは量子化とLow rank Adaptationを組み合わせた手法である。
  2. 量子化はモデルのデータサイズを削減する手法である。
  3. LoRAは学習時の重み行列を分割する手法である。

QLoRAとは?

QLoRAは2023年に発表された論文"QLoRA: Efficient Finetuning of Quantized LLMs"で登場した主にLLMのファインチューニングで使用される計算量削減手法です。ファインチューニングとは、特定のタスクに適応させるためにLLMを追加学習することを指します。QLoRAは量子化(Quantization)とLoRA(Low Rank Adaptation)を併用した技術です。本記事ではそれぞれについて説明していきます

量子化とは?

量子化
量子化は大規模モデルの軽量化に使われる手法で、データサイズの縮小を行います。PytorchやTensorflowのニューラルネットワークではデフォルトで32ビット浮動小数点を使用して計算を行います。量子化では32ビット浮動小数点のデータを圧縮してより小さいビット数のデータに変換します。
4ビットのデータに圧縮する場合では、32ビット浮動小数点のデータの表現領域を16等分し、それぞれに4ビットの数を割り当てます。量子化を行うとデータの表現力は損なわれますが、学習効率を非常に高めることが出来ます。

LoRAとは?

LoRA
LoRAは2021年に発表された論文"LoRA: Low-Rank Adaptation of Large Language Models"

引用:https://arxiv.org/abs/2106.09685

で登場した学習の軽量化手法です。一般的にLoRAは学習済みモデルに特定のタスクに特化させる学習であるファインチューニングを行う際に使用される技術になります。一般的な学習手法では重みの更新は以下の式で行われます。
Wnew=Wold+δWW_{new} = W_{old} + \delta W
重み行列のサイズがd×dd \times dであるならば、更新量もd×dd \times dの計算が必要になります。これに対し、LoRAでは以下の式で更新を行います。
Wnew=Wold+ABW_{new} = W_{old} + A B
LoRAでは学習時の重み行列の更新に二つの低ランク行列A,BA , Bを使用することで計算量を削減します。低ランク行列AAの行列サイズはd×rd \times rで、BBの行列サイズはr×dr \times dとなり、この時の計算量は2×d×r2 \times d \times rになり、d>>rd >> rならば計算量を大幅に削減できます。

まとめ

QLoRAは大規模言語モデルのファインチューニング時に使用される効率化手法であり、量子化(Quantization)とLoRA(Low Rank Adaptation)を組み合わせることにより、大規模モデルを少ないリソースで学習させることを可能にしました。
データの表現力が低くなることが懸念されますが、知識を追加することが目的のファインチューニングではむしろ過学習を防ぐ要因にもなり得ます。
大規模言語モデルを使用して特定のプロジェクトを行おうとしている型は是非使用してみてください。



ご愛読ありがとうございます。