LoRa、QLoRA、およびQA-LoRa:低ランク行列分解を通じた大規模言語モデルの効率的な適応性
「LoRa、QLoRA、およびQA-LoRa:大規模言語モデルの効率的な適応性に向けた低ランク行列分解」
大規模な言語モデル(LLM)は、人間のようなテキストを理解・生成する能力において他に類を見ない能力を持ちます。LLMのパワーは、その膨大なサイズによって支えられており、パラメーター数が何十億もあることが一因です。この巨大なスケールは性能を向上させる一方で、特定のタスクやドメインにおけるモデルの適応には課題も生じます。従来のLLMの管理方法である、すべてのパラメーターの微調整による手法は、計算や財務上の負荷が大きいため、実世界のアプリケーションでの広範な活用には重要な障壁となっています。
以前の記事では、大規模な言語モデル(LLM)の微調整について詳しく調査し、特定の要件に合わせて調整する方法について探求しました。インストラクションベースの微調整、単一タスクの微調整、パラメーター効率の微調整(PEFT)など、それぞれ異なるアプローチでLLMを最適化するためのさまざまな微調整手法について検討しました。議論の中心には、LLMのバックボーンであるトランスフォーマーアーキテクチャと、微調整中の膨大なパラメーターの計算とメモリ要件がもたらす課題がありました。
https://huggingface.co/blog/hf-bitsandbytes-integration
- このAIニュースレターがあれば、あなたは全てが揃った!#70
- クラウドストライクは、Fal.Con 2023におけるAI駆動のセキュリティに関するビジョンを概説します
- 「リトリーバルの充実は長文の質問応答にどのように影響を与えるのか? このAIの研究は、リトリーバルの充実が言語モデルの長文での知識豊かなテキスト生成にどのような影響をもたらすかについて新しい示唆を提供します」
上記の画像は、さまざまな大規模な言語モデルのスケールをパラメーター数に基づいて並べたものです。特に、PaLM、BLOOMなどが挙げられます。
今年現在でも、さらに大きなモデルへの進展がありました。しかし、このような巨大なオープンソースモデルを標準システムでチューニングすることは、専用の最適化技術なしでは実現不可能です。
Microsoftがこの論文で紹介した「Low-Rank Adaptation (LoRA)」は、これらの課題を軽減し、LLMをより利用しやすく、適応性を持たせることを目指しています。
LoRAの肝は、全モデルを再トレーニングする複雑な手法には入り込まず、モデルの適応手法に対するアプローチです。従来の微調整とは異なり、すべてのパラメーターが変更対象ではなく、LoRAではよりスマートなルートを取ります。事前学習済みモデルの重みを固定し、トランスフォーマーアーキテクチャの各レイヤーに学習可能なランク分解行列を導入します。この手法により、学習可能なパラメーターの数が大幅に削減され、より効率的な適応プロセスが確保されます。
LLMの微調整戦略の進化
LLMの微調整の歴史を振り返ると、長年にわたって実践されたいくつかの戦略が確認できます。最初は、事前学習済みモデルの微調整に焦点が当てられ、モデルパラメーター全体を包括的に変更して特定のタスクに適応させる戦略が採用されました。ただし、モデルが大きく複雑になるにつれて、このアプローチの計算要件も増えていきました。
次に注目された戦略は、モデルのパラメーターの一部のみを微調整する部分的な微調整です。これにより、計算負荷がある程度軽減されました。その利点にもかかわらず、部分的な微調整でもLLMのサイズの拡大に追いつくことができませんでした。
実践者がより効率的な手法を探求する中で、フル微調整が厳格かつ有益なアプローチとして登場しました。
LoRAの紹介
行列のランクは、その列によって作成される次元を示し、ユニークな行または列の数によって決まります。
- フルランク行列:そのランクは行または列の少ない方の数と一致します。
- 低ランク行列:そのランクが行と列の数に比べて著しく小さいため、より少ない特徴を捉えます。
現在、大きなモデルは、言語モデルなどのドメインについて広範な理解を持っています。しかし、特定のタスクのためにそれらを微調整する場合、これらの理解の一部を強調するだけで十分です。ここでLoRAが活躍します。この更新行列は、低ランク行列であることが示唆されており、より少ない特徴を捉えます。
LoRAは、この更新行列のランクを制限することで、それを2つのより小さなランク行列に分割します。つまり、全体の重み行列全体を変更するのではなく、一部のみを変更することで、微調整タスクをより効率的に行います。
TransformersへのLoRAの適用
LoRAは、特定の重み行列に焦点を当てることで、ニューラルネットワークのトレーニング負荷を最小限に抑えます。Transformerアーキテクチャの下で、特定の重み行列は、Wq、Wk、Wv、およびWoに加えて、Multi-Layer Perceptron(MLP)モジュールの2つの重み行列と関連付けられています。
Transformers Architecture
Transformer Attention Heads
LoRAの数学的説明
LoRAの数学を分解してみましょう:
- 事前学習された重み行列W0:
- サイズがd×kの事前学習された重み行列W0で始まります。つまり、この行列はd行k列です。
- 低ランク分解:
- 計算コストが高い可能性がある完全な行列W0を直接更新する代わりに、低ランク分解手法を提案します。
- 更新ΔWは、2つの行列BとAの積として表現できます:
- Bはサイズがd×rである
- Aはサイズがr×kである
- ここでの重要なポイントは、ランクrがdおよびkよりもはるかに小さいことであり、計算効率的な表現が可能になることです。
- トレーニング:
- トレーニングプロセス中、W0は変更されません。これは重みを「凍結する」と呼ばれます。
- 一方、AとBはトレーニング可能なパラメータです。つまり、トレーニング中に、行列AとBを調整してモデルのパフォーマンスを向上させます。
- 乗算と加算:
- W0と更新ΔW(BとAの積)は、同じ入力xによって乗算されます。
- これらの乗算の出力は、その後加算されます。
- このプロセスは、方程式h=W0x+ΔWx=W0x+BAxで要約されます。ここで、hは入力xへの更新を適用した後の最終出力を表します。
要するに、この方法は、大きな重み行列を低ランク分解を使用して効率的に更新する方法を提供するため、計算効率とメモリ使用量の観点で有益です。
LORA
初期化とスケーリング:
モデルのトレーニング時に、パラメータの初期化方法は学習プロセスの効率と効果に大きな影響を与えることがあります。AとBを使用した重み行列の更新の文脈において:
- 行列AおよびBの初期化:
- 行列A:この行列はランダムなガウス値(正規分布)で初期化されます。ガウス初期化を使用する理由は、対称性を打破するためです。同じレイヤー内の異なるニューロンは、異なる初期重みを持つため、異なる特徴を学習します。
- 行列B:この行列はゼロで初期化されます。これにより、更新ΔW=BAはトレーニングの初めにゼロから始まります。モデルの振る舞いに急激な変化がないことを保証し、Bがトレーニング中に適切な値を学習するように段階的に適応できるようにします。
- ΔWからの出力のスケーリング:
- 更新ΔWの計算後、その出力は定数αによってrα倍スケーリングされます。スケーリングにより、更新の大きさが制御されます。
- スケーリングは、ランクrが変化する場合に特に重要です。たとえば、精度を向上させるためにランクを増やすことを決定した場合、スケーリングにより他の多くのハイパーパラメータを調整する必要がないことが保証されます。モデルに安定性を提供します。
LoRAの実用的な影響
LoRAは、AIコミュニティの人々によって、特定の芸術スタイルに効率的にLLMを調整する潜在能力を示しました。これは特に、Greg Rutkowskiの芸術スタイルを模倣するモデルへの適応で示されました。
GPT-3 175Bを例に挙げた論文で強調されています。個別のファインチューニングモデルは175Bのパラメータを持ち、コストが非常に高くなります。しかし、LoRAでは訓練可能なパラメータが10,000分の1に減少し、GPUのメモリ使用量も3分の1に削減されます。
GPT-3のファインチューニングにおけるLoRAの影響
LoRAの手法は、LLMをよりアクセスしやすくするだけでなく、AI領域における理論的な進歩と実用的な応用とのギャップを埋める潜在能力も示しています。計算上の障壁を取り除き、効率的なモデル適応プロセスを促進することにより、LoRAは現実世界のシナリオでのLLMの広範な採用と展開において重要な役割を果たすことが期待されています。
QLoRA(量子化されたLoRA)
LoRAはストレージ容量の要求を削減する画期的な技術ですが、トレーニングのためには大量のGPUを必要とします。ここで、LoRAと量子化を組み合わせたスマートなアプローチであるQLoRAが登場します。
量子化
通常、重みパラメータは32ビット形式(FP32)で保存されます。つまり、行列内の各要素は32ビットのスペースを占有します。同じ情報をわずか8ビットまたは4ビットに収めることができたらどうでしょうか。それがQLoRAの核心です。量子化は、連続的な無限の値をより小さな有限の値のセットにマッピングするプロセスを指します。LLMの文脈では、モデルの重みを高精度のデータ型から低精度のデータ型に変換するプロセスを指します。
LLMにおける量子化
以下はQLoRAの簡単な説明です:
- 初期の量子化:まず、Large Language Model(LLM)を4ビットに量子化し、メモリのフットプリントを大幅に削減します。
- LoRAトレーニング:その後、LoRAトレーニングが行われますが、標準の32ビット精度(FP32)で行われます。
では、4ビットに縮小した後になぜ32ビットに戻すのでしょうか?それは、FP32で効果的にLoRAアダプタを訓練するために、モデルの重みもFP32に戻す必要があるからです。この切り替えは、GPUメモリを圧迫しないようにスマートにステップバイステップで行われます。
LoRAは、Hugging FaceのParameter Efficient Fine-Tuning(PEFT)ライブラリで実用化され、その利用が容易化されています。QLoRAを使用したい方は、bitsandbytesとPEFTライブラリの組み合わせを介してアクセスできます。さらに、HuggingFaceのTransformer Reinforcement Learning(TRL)ライブラリは、LoRAの統合サポートを備えた監督付きファインチューニングを容易にするための重要なツールキットを提供します。これらの3つのライブラリは、選択した事前学習モデルのファインチューニングを容易にし、特定の属性指示に従って説得力のある統一された商品説明を生成する能力を可能にします。
QLoRAからのファインチューニング後、重みは高精度の形式に戻る必要があり、これにより精度が低下し、プロセスの高速化が行われていません。
提案された解決策は、重み行列をより小さなセグメントにグループ化し、各グループに対して量子化と低ランク適応を適用することです。新しい方法であるQA-LoRAは、量子化と低ランク適応の利点を組み合わせながら、プロセスを効率的にし、望ましいタスクに対してモデルを効果的に保持します。
結論
本記事では、その巨大なパラメータサイズによってもたらされる課題に触れました。従来のファインチューニング手法と関連する計算および財務上の要求についても探求しました。LoRAの肝は、完全な再学習なしで事前にトレーニングされたモデルを修正する能力にあり、これにより訓練可能なパラメータが減少し、適応プロセスがよりコスト効果的になります。
また、Quantized LoRA(QLoRA)にも簡単に触れました。これは、モデルのメモリフットプリントを削減しつつ、トレーニングに必要な基本的な精度を保持するLoRAと量子化の組み合わせです。これらの高度なテクニックにより、実践者は強力なライブラリを備えており、LLMsの採用と展開をより簡単に実現できます。
Matrix
これらの戦略は、LLMsを特定のタスクに適応可能にすると同時に、計算およびストレージリソースの観点でファインチューニングと展開プロセスが過度に要求されないように調整されています。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles