論文紹介 part7 :"The Ultimate Guide to Fine-Tuning LLMs from Basics to Breakthroughs: An Exhaustive Review of Technologies, Research, Best Practices, Applied Research Challenges and Opportunities"を読む
はじめに
今回も同様に以下の論文を読んでいきます。
論文名:The Ultimate Guide to Fine-Tuning LLMs from Basics to Breakthroughs: An Exhaustive Review of Technologies, Research, Best Practices, Applied Research Challenges and Opportunities
著者:Venkatesh Balavadhani Parthasarathy, Ahtsham Zafar, Aafaq Khan, and Arsalan Shahid
今回はステージ4のSelection of Fine-Tuning Techniques and Appropriate Model Configurationsについてみていきます。このステージは少々長いのでいくつかに分けたいと思います。この章では、さまざまなタスクの具体的な要件に適したファインチューニング技術とモデル構成の選択に焦点を当てています。ファインチューニングは、事前学習済みモデルを特定のタスクやドメインに適応させる重要な段階です。
以下、論文を訳して箇条書きにしてまとめていきます。重要な部分を抜き出そうと思って書いていますが、結構どこも重要です。
余談ですが、サムネイルはchatgptのDALL-Eにて生成していますが、て"Techniques"と"Appropriate"がなぜか書けませんw
6.1 ファインチューニングに関わるステップ
以下のステップは、高度な技術とベストプラクティスを統合したファインチューニングプロセスを概説している。
事前学習済みのトークナイザーとモデルの初期化:
まず、事前学習済みのトークナイザーとモデルをロード
トークナイザーは入力テキストをモデルが処理できる形式に変換し、事前学習済みモデルはさらなる適応の基盤となる
タスクに応じて、関連するデータで事前学習されたモデルを選択し、強力な出発点を提供
モデルの出力層の修正:
ターゲットタスクの具体的な要件に合わせて、モデルの出力層を調整
これは、既存の層を修正したり、新しい層を追加したりすることを含む
たとえば、分類タスクでは、適切なクラス数を持つソフトマックス層が必要かもしれないし、テキスト生成タスクではデコーディングメカニズムの変更が必要かもしれない
適切なファインチューニング戦略の選択:
タスクやモデルアーキテクチャに最も適したファインチューニング戦略を選択する。いくつかのオプションには以下が含まれる:タスク固有のファインチューニング:テキスト要約、コード生成、分類、質問応答などのタスクのために、関連するデータセットを使用してモデルを適応させる
ドメイン固有のファインチューニング:医療、金融、法律などの特定のドメインに関連するテキストを理解し生成できるようにモデルを調整する
パラメータ効率の良いファインチューニング(PEFT):LoRA、QLoRA、アダプターなどの技術を使用して、モデルパラメータの小さなサブセットのみを更新することで、計算コストを削減しながらファインチューニングを行う
ハーフ・ファインチューニング(HFT):各ファインチューニングラウンドでモデルのパラメータの半分のみを更新することで、事前学習済みの知識を保持しつつ新しいタスクを学習する
トレーニングループの設定:
選択したファインチューニング戦略を組み込んでトレーニングループを構築
このループには、データのロード、損失計算、逆伝播、パラメータ更新が含まれる
PEFTメソッドを使用する場合は、効率を最大化するために関連するパラメータのみが更新されるようにする
動的な学習率や早期停止などの技術を実装して、トレーニングプロセスを強化する
複数タスクを処理するための技術の組み込み:
複数のタスクに対してファインチューニングする場合、複数のアダプターを使用したファインチューニングや、Mixture of Experts(MoE)アーキテクチャの活用などの戦略を検討
これらの方法により、単一のモデルが各タスクのための専門的なサブネットワークやアダプターを利用してさまざまなタスクを処理可能
検証セットでのパフォーマンスのモニタリング:
モデルが未知のデータに対しても適切に一般化できるよう、検証セットでモデルのパフォーマンスを定期的に評価する
学習率、バッチサイズ、ドロップアウト率などのハイパーパラメータを検証結果に基づいて調整
精度、損失、過学習などの指標を追跡するために高度なモニタリングツールを利用
高度な技術を用いたモデルの最適化:
強化学習シナリオでは近似方策最適化(PPO)、またはモデルの出力を人間の好みに合わせるための直接好み最適化(DPO)などの技術を採用
これらの技術は、微妙な意思決定や人間らしい応答が求められるタスクのためにモデルをファインチューニングする際に特に有用
モデルのプルーニングと最適化(必要に応じて):
リソースが限られた環境でモデルをデプロイするために、プルーニング技術を検討してモデルのサイズと複雑さを削減
これは、パフォーマンスに大きな影響を与えることなく不要なパラメータやコンポーネントを削除することを含む
推論時に動的プルーニング方法を利用して、さまざまなシナリオに応じてモデルを即座に最適化する
継続的な評価と反復:
適切なベンチマークを使用して、さまざまなタスクにわたってモデルのパフォーマンスを継続的に評価
パフォーマンス指標や実世界でのテストに基づいて、ファインチューニングプロセスを反復し調整を行う
この反復的なアプローチは、モデルを特定のパフォーマンス基準に合わせて洗練させるのに役立つ
6.2 LLMのためのファインチューニング戦略
6.2.1 タスク固有のファインチューニング
タスク固有のファインチューニングは、適切にフォーマットされクリーンなデータを使用して、大規模言語モデル(LLM)を特定の下流タスクに適応させる。以下は、LLMのファインチューニングに適した主要なタスクの概要で、これらのタスクに合わせて調整されたLLMの例も含まれる。
テキストの要約
長いテキストを重要な情報を保持しつつ、一貫性のある要約に凝縮
アプローチには、重要な文を選択する「抽出的要約」と、新しい文を生成する「抽象的要約」が含まれる
代表的なモデルはBERTSUM、GPT-3、T5など
コード生成
自然言語の説明、部分的なコードスニペット、または構造化データの入力に基づいてプログラミングコードを自動的に生成
代表的魔モデルはCodex、GPT-3、CodeBERTなど
分類
テキストを感情分析、トピック分類、エンティティ分類などの事前定義されたラベルに分類
代表的なモデルはBERT、RoBERTa、GPT-4など
Q&A
自然言語の質問に対して、正確で文脈的に適切な回答を理解し生成
代表的なモデルはBERT、GPT-3、T5など
6.2.2 ドメイン固有のファインチューニング
ドメイン固有のファインチューニングは、特定のドメインや業界に関連するテキストを理解し生成できるようにモデルを調整することに焦点を当てている。
ターゲットドメインから得られたデータセットでモデルをファインチューニングすることで、モデルの文脈的理解とドメイン固有タスクにおける専門知識が向上。以下にドメイン固有のLLMの例を示す。
医療分野
モデルの説明:Med-PaLM 2は、厳選された医療データセットでトレーニングされており、医療専門家と同等のパフォーマンスで正確に医療質問に回答可能 [55]。
ベースモデル:PaLM 2
ファインチューニングされたモデルのパラメータ数:不明
使用されたファインチューニング技術:命令によるファインチューニング
使用されたデータセット:
MedQA
MedMCQA
LiveQA
MedicationQA
HealthSearchQA
結果:Med-PaLM 2は、いくつかの主要な医療ベンチマークでGPT-4を上回り、複雑な医療知識と推論タスクの処理において優れたパフォーマンスを示した。
金融分野
モデルの説明:FinGPTは、金融セクター向けに特化したオープンソースのLLMであり、データのアクセシビリティを促進し、データ取得や品質などの金融固有の問題に対処することで、金融研究と協力を強化 [56]。
ベースモデル:LlaMA、ChatGLM、その他のトランスフォーマーモデル
ファインチューニングされたモデルのパラメータ数:不明
使用されたファインチューニング技術:LoRA、株価に基づく強化学習(RLSP)
使用されたデータセット:
金融ニュース(Reuters、CNBC、Yahoo Finance)
ソーシャルメディア(Twitter、Facebook、Reddit、Weibo)
規制当局への提出書類(例:SEC提出書類)
トレンド情報(Seeking Alpha、Googleトレンド)
学術データセット
結果:該当なし
法律分野
モデルの説明:LAWGPTは、中国の法律アプリケーション向けに特別に設計された初のオープンソースモデルであり、中国の法律タスクにおいて優れた能力を示す [57]。
ベースモデル:Chinese Alpaca Plus 7Bベースモデル
ファインチューニングされたモデルのパラメータ数:不明
使用されたファインチューニング技術:Alpacaテンプレートを使用したLoRA
使用されたデータセット:
オープンソースデータセット:20万の犯罪タイプ予測と犯罪相談タスクの例
JEC-QAデータセット:2万の法律に関する質問応答タスクの例
構築された法律データセット:ChatGPTを使用してオープンソースとJEC-QAデータセットから精製した8万の例
結果:LAWGPTは、さまざまな法律タスクにおいてLLaMA 7Bモデルよりも優れたパフォーマンスを示したが、GPT-3.5 TurboやGPT-4などのプロプライエタリモデルにはまだ及ばない。
製薬分野
モデルの説明:PharmaGPTは、バイオ医薬品および化学産業向けに特化したドメイン固有の大規模言語モデルのスイートであり、これらの分野での精度における新たなベンチマークを設定 [58]。
ベースモデル:LlaMAシリーズ
ファインチューニングされたモデルのパラメータ数:13Bおよび70B
使用されたファインチューニング技術:命令によるファインチューニングとRLHF(人間のフィードバックによる強化学習)
使用されたデータセット:
学術論文や臨床報告からの特定ドメインデータ
質問応答、要約、対話などのNLPデータセット形式のテキストデータ
マルチタスク学習のための命令によるファインチューニングデータセット
人間の専門家が好みに基づいてアノテーションしたRLHFデータセット
結果:PharmaGPTモデルは、さまざまな製薬ベンチマークで印象的なパフォーマンスを示し、一貫してGPT-3.5 Turboを上回った。
金融分野
モデルの説明:Writer社が開発したPalmyra-Fin-70B-32Kは、金融セクター向けに特化した最先端の大規模言語モデル [59]。
ベースモデル:LlaMA
ファインチューニングされたモデルのパラメータ数:70B
使用されたファインチューニング技術:不明
使用されたデータセット:不明
結果:Palmyra-Fin-70B-32Kは、さまざまな金融データセットで最先端のパフォーマンスを示し、金融文書の分析、市場動向の予測、リスク評価において卓越した成果を達成。
6.3 パラメータ効率の良いファインチューニングParameter-Efficient Fine-Tuning(PEFT)技術
パラメータ効率の良いファインチューニング(PEFT)は、事前学習済みの言語モデルを高い効率でさまざまなアプリケーションに適応させる強力なNLP技術
PEFTメソッドでは、事前学習済みのLLMパラメータの大部分を固定したまま、モデルパラメータの小さなサブセット(追加のパラメータ)のみをファインチューニング
これにより、計算コストとストレージコストを大幅に削減
このアプローチは、ニューラルネットワークが新しいデータセットでトレーニングされたときに以前に取得した知識を失い、以前に学習したタスクで大幅な性能低下を経験する「破滅的な忘却」の問題を軽減する
PEFTメソッドは、特にデータが少ないシナリオで、フルファインチューニングと比較して優れた性能を示し、ドメイン外のコンテキストへの一般化も向上
この技術は、金融の市場分類や医療用語の機械翻訳など、さまざまなモダリティに適用可能
PEFTベースのファインチューニング手法の分類は図6.1に示す
以下のセクションで、いくつかの主要なPEFTベースのアプローチについて詳しく説明
6.3.1 アダプター
アダプターベースの手法では、固定された事前学習済みモデルのアテンション層と全結合層の後に追加の学習可能なパラメータを導入し、メモリ使用量の削減とトレーニングの高速化を目指す
具体的なアプローチはアダプターによって異なり、追加の層を加える場合や、重みの更新Δ(W)を重み行列の低ランク分解として表現する場合がある
方法に関係なく、アダプターは一般的に小型でありながら、フルファインチューニングされたモデルと同等の性能を達成し、より少ないリソースでより大きなモデルのトレーニングを可能にする
HuggingFaceはPEFTライブラリを通じてアダプターの設定をサポートしている
ファインチューニング中、新しいアダプターはLoraConfig¹を使用してモデルに統合される
HuggingFaceはPeftConfigを使用して既存の事前学習済みモデルをロードし、PEFT技術を適用する
さらに、HuggingFaceはAccelerate²を使用して任意の分散構成でファインチューニングプロセスを実行するための組み込みサポートを提供しており、大規模なトレーニングと推論を簡単かつ効率的、かつ適応的にする
¹ LoraConfigは、LoRA(Low-Rank Adaptation)の設定を行うための構成クラス。
² Accelerateは、HuggingFaceが提供する分散トレーニングを容易にするためのライブラリ
6.3.2 低ランク適応 Low-Rank Adaptation(LoRA)
低ランク適応(LoRA)[62]は、大規模言語モデルのファインチューニングのために設計された手法で、元のモデルの重みを固定し、元のパラメータに追加された別の重みセットに変更を適用することでファインチューニングプロセスを変更
LoRAはモデルパラメータを低ランクの次元に変換し、学習可能なパラメータ数を減らし、プロセスを高速化し、コストを削減
この方法は、複数のクライアントが異なるアプリケーションのためにファインチューニングされたモデルを必要とするシナリオで特に有用で、個別のモデルを用意することなく、各ユースケースに特化した重みを作成できる
低ランク近似手法を用いることで、LoRAは特定のタスクやドメインへの事前学習済みモデルの適応性を維持しながら、計算とリソースの要件を効果的に削減
LoRAを使用する利点
パラメータ効率:LoRAは低ランク行列のみに焦点を当てることで、学習が必要なパラメータ数を大幅に削減し、フルファインチューニングと比較してメモリとストレージの要件を低減
効率的なストレージ:学習済みモデルのストレージは、フルモデルの重みではなく低ランク行列のみを保存すればよいため、より効率的
計算負荷の削減:低ランク行列でのトレーニングは必要な計算資源が少なく、プロセスがより高速でスケーラブル
メモリフットプリントの低減:更新されるパラメータが少ないため、トレーニング中のメモリフットプリントが減少し、同じハードウェア制約内でより大きなバッチサイズやより複雑なモデルを使用できる
柔軟性:LoRAはモデルアーキテクチャに大きな変更を加えることなく、既存の事前学習済みモデルに容易に統合可能
互換性:アダプター層やプロンプトチューニングなどの他のファインチューニング技術と併用して、性能をさらに向上させることが可能
同等の結果:学習可能なパラメータ数が減少しているにもかかわらず、LoRAは多くのタスクでフルファインチューニングに匹敵する性能を達成することが示されている
タスク固有の適応:LoRAは、元のモデルに既に組み込まれている知識を活用して、事前学習済みモデルを特定のタスクに効果的に適応させる
過学習の回避:低ランクの更新に焦点を当てることで、特にタスク固有のデータセットが小さい場合に、過学習の軽減に役立つ
制限事項
LoRAは大きな力を示すが、次のような課題もある:
ファインチューニングの範囲:LoRAは、事前学習済みモデルの内部表現に大きな変更が必要なタスクに適用すると困難に直面する可能性がある
ハイパーパラメータの最適化:ランクパラメータ「r」の調整は、最適な性能のために綿密な調整が必要
研究の進行中:その有望性にもかかわらず、LoRAはまだ活発な研究段階にあり、その長期的な影響は完全には解明されていない
これらの課題にもかかわらず、LoRAはLLMの能力へのアクセスを民主化する大きな可能性を持つ先駆的な技術である。継続的な研究と開発により、現在の制限を克服し、さらなる効率と適応性を解き放つ可能性がある。
LoRAを使用したLLMのファインチューニングのチュートリアル
Hugging Faceライブラリを使用してLoRAメソッドでLLMをファインチューニングするためのオープンソースのテンプレートがこちらにある。このテンプレートは、命令によるファインチューニングプロセスのためにLLMを適応させることを目的としている。
6.3.3 QLoRA
QLoRA[64]は、重みパラメータを4ビット精度に量子化することで、大規模言語モデル(LLM)のメモリ効率を向上させるために設計されたLoRAの拡張版である
通常、LLMのパラメータは32ビット形式で保存されるが、QLoRAはそれらを4ビットに圧縮し、メモリフットプリントを大幅に削減する
これにより、一般消費者向けGPUを含む、性能が低いハードウェアでのファインチューニングが可能になる
QLoRAはまた、LoRAアダプターの重みを8ビットから4ビットに量子化し、メモリとストレージの要件をさらに減少させる(図6.4を参照)
ビット精度が低下しているにもかかわらず、QLoRAは従来の16ビットファインチューニングと同等の性能レベルを維持する
これは、凍結された4ビット量子化済みの事前学習済み言語モデルを通じて勾配を逆伝播させ、低ランクアダプターに入れることで実現され、モデルの有効性を維持しながらファインチューニングプロセスを効率化する
QLoRAの設定は、HuggingFaceのPEFTライブラリでサポートされており、LoraConfigとBitsAndBytesConfigを使用して量子化を行う
最適な4ビットデータ型、定数の二重量子化、メモリスパイク管理などの革新により、QLoRAは従来のファインチューニングでパラメータあたり96ビットのメモリ使用量を5.2ビットに削減し、18倍の削減を達成する
性能面では、QLoRAは単純な4ビット量子化を上回り、ベンチマークで16ビット量子化モデルと一致する。さらに、QLoRAは単一のGPUで24時間以内に高品質な4ビットチャットボットのファインチューニングを可能にし、ChatGPTに匹敵する品質を達成した。
このチュートリアルでは、Phi-2モデル用のカスタムデータセットでQLoRAをファインチューニングするためのエンドツーエンドの手順を説明している。
6.3.4 重み分解低ランク適応 Weight-Decomposed Low-Rank Adaptation(DoRA)
モデルのファインチューニングを最適化する文脈において、LoRAとフルファインチューニング(FT)のパターン分析は、学習行動と更新において重要な違いを明らかにする
LoRAは、2つの低ランク行列の積を使用して事前学習済みの重みを漸進的に更新する戦略を採用し、ファインチューニングプロセス中に元の重みをほぼ静的に保ち、効率的な推論を可能にする
その計算効率にもかかわらず、以前の研究では、LoRAの学習可能なパラメータ数の制限が、FTと比較した際の性能差に寄与している可能性が指摘されている
重み分解低ランク適応(DoRA)[66]は、事前学習済みのモデルの重みを大きさと方向成分に分解することで最適化する、新しいファインチューニング手法
このアプローチは、方向更新のためにLoRAの効率性を活用し、モデル全体のアーキテクチャを変更することなく大幅なパラメータ更新を促進する
DoRAは、モデルのシンプルさと推論効率を維持しながら、従来のフルファインチューニング(FT)に関連する計算上の課題に対処し、同時にLoRAとFTの間で一般的に観察される性能ギャップを埋める
実証的および理論的な評価により、DoRAは自然言語処理や視覚と言語のアプリケーションなど、さまざまなタスクでFTに匹敵する学習成果を達成するだけでなく、性能面で一貫してLoRAを上回り、大規模モデルの適応性と効率性を向上させるための堅牢なソリューションを提供することが示されている
Pythonライブラリ - DoRAはHuggingFaceのLoraConfigパッケージを介して利用できる。ファインチューニングプロセスにDoRAを組み込むには、Loraの設定時にuse_dora = Trueパラメータを指定する必要がある。初期化に関する詳細はこちらで確認可能。
DoRAの利点
学習能力の向上:DoRAは、事前学習済みの重みを大きさと方向成分に分解することで、フルファインチューニング(FT)に近い学習能力を達成し、より微細な更新を可能にする。
効率的なファインチューニング:方向更新のためにLoRAの構造上の利点を活用することで、モデルアーキテクチャを変更することなく効率的なファインチューニングを可能にする。
追加の推論遅延なし:学習能力が向上しているにもかかわらず、DoRAはLoRAよりも推論時の追加の遅延を導入せず、モデルのシンプルさと効率性を維持する。
優れた性能:実験結果は、DoRAが自然言語処理(NLP)、視覚的な命令チューニング、画像/ビデオとテキストの理解など、幅広いタスクで一貫してLoRAを上回ることを示している。例えば、常識的な推論や視覚的な命令チューニングのベンチマークで大幅な改善を示している。
バックボーン間での汎用性:DoRAは、大規模言語モデル(LLM)や視覚と言語のモデル(LVLM)など、さまざまなモデルバックボーンで検証されており、異なるドメインでの広範な適用性と堅牢性を示している。
革新的な分析:新しい重み分解分析の導入により、FTとさまざまなパラメータ効率の良いファインチューニング(PEFT)手法の学習パターンの根本的な違いが明らかになり、モデルのファインチューニングダイナミクスのより深い理解に貢献している
LoRAとDoRAの比較
低ランク適応(LoRA)と重み分解低ランク適応(DoRA)は、大規模な事前学習済みモデルのファインチューニングの効率と効果を改善するために設計された高度な技術である。両者は計算上のオーバーヘッドを削減するという共通の目標を共有しているが、それを達成するために異なる戦略を採用している。
DoRAを使用したLLMのファインチューニングのチュートリアル
このチュートリアルでは、DoRAを最初から実装するためのステップと、性能を最適化するために必要なファインチューニングプロセスに関する洞察を提供する詳細なガイドを提供している。
6.3.5 複数のアダプターを用いたファインチューニング
ファインチューニング中、LLMのパラメータを凍結し、LoRAを使用して数百万の学習可能なパラメータのファインチューニングに集中する方法を探った
例えば、翻訳のためにLLMをファインチューニングすることは、関連するデータで翻訳アダプターを訓練することを含む
このアプローチにより、LLMに実行させたい各特定のタスクに対して個別のアダプターをファインチューニングできる
しかし、重要な疑問が生じる:複数のアダプターを統合して、統一されたマルチタスクアダプターにまとめることは可能か?
例えば、翻訳と要約のタスクに対して別々のアダプターがある場合、それらを統合してLLMが両方のタスクを熟練して処理できるようにできるか?(図6.6で示されている)。
PEFTライブラリは、そのadd_weighted_adapter関数³により、アダプターのマージプロセスを簡素化する。この関数は3つの異なる方法を提供:
連結(Concatenation):この単純な方法では、アダプターのパラメータを連結。例えば、2つのアダプターがそれぞれランク16を持つ場合、結果のアダプターはランク32になる。この方法は非常に効率的。
線形結合(Linear Combination):文書化は少ないが、この方法はアダプターのパラメータの加重和を行うように見える。
SVD:デフォルトの方法は、torch.linalg.svdを通じて特異値分解を使用する。汎用性があるが、特にランクが高い(100以上)アダプターの場合、他の方法よりも著しく遅く、数時間かかることがある。
各方法は、重みを調整することで組み合わせをカスタマイズできる。例えば、2つのアダプターXとYをマージする際に、Xにより多くの重みを割り当てることで、結果のアダプターがXに似た動作を優先するようにする。
このアプローチは、各タスクドメインごとに別々のモデルを作成するのではなく、単一のLLMを統合して複数のタスクを処理するのに特に適している。この方法を採用することで、各タスクのために個別にモデルをファインチューニングする必要がなくなる。代わりに、各タスクのために単一のアダプター層をファインチューニングし、クエリに対して効率的に望ましい応答を得ることができる。
LoRAを用いた複数のタスクとアダプターのためのLLMファインチューニングの手順
アダプターの作成:異なるプロンプト形式やタスク識別タグ(例:[translate fren]、[chat])を使用して、特定のタスクにファインチューニングされた複数のアダプターを作成する。
LoRAの統合:LoRAを実装して、これらのアダプターを事前学習済みLLMに効率的に統合。LoRAの連結、線形結合、特異値分解(SVD)などの方法を活用して、計算オーバーヘッドを最小限に抑えつつ性能を維持しながらアダプターを組み合わせる。
タスク固有の適応:個々のタスクの性能を向上させるために、各アダプターをタスク固有のデータでファインチューニングする。アダプターがそれぞれのタスクに関連するデータで訓練され、正確な応答を生成する能力を最適化することを確認する。
動作の調整:個々のアダプターから受け継がれる望ましくない動作(例:翻訳アダプターからの短い応答生成)を特定するために、組み合わせたアダプターの動作を監視する。必要に応じてアダプターの組み合わせの重みや種類を調整し、各アダプターが意図したタスクに対して最適に機能するようにする。
評価と反復:検証データセットを使用して、複数のタスクにわたる結合モデルの性能を評価する。性能指標やユーザーからのフィードバックに基づいて、アダプターの組み合わせやトレーニングパラメータの調整を行い、ファインチューニングプロセスを反復する。
したがって、最適な性能を得るためには、明確に異なるプロンプト形式でファインチューニングされたアダプターを組み合わせることが望ましい。しかし、異なるプロンプト形式のアダプターを使用しても、結果のアダプターが望ましい動作を示さない場合がある。例えば、チャット用に新しく組み合わせたアダプターが、もともと1文を生成した後に停止するように訓練されたアダプターからこの傾向を受け継ぎ、短い応答しか生成しないかもしれない。組み合わせたアダプターの動作を調整するには、組み合わせプロセス中に特定のアダプターの影響を優先したり、使用する組み合わせ方法を変更することができる。
複数のアダプター層を使用してさまざまなタスクのために大規模言語モデル(LLM)をファインチューニングする方法を示す例示的なチュートリアルはこちらで見つけることができる。
本章では少々高度な内容を扱っているのではと思います。
まず、Parameter-Efficient Fine-Tuning(PEFT)の中にアダプタという概念があり、事前学習された重みWとは別にΔWを作り出し、ファインチューニングを可能にします。そのΔWを作り出すのにさらにLoRAが存在します。
LoRAではモデルの事前学習済みの重みWを固定したまま、低ランクの行列(A、B)を通じてパラメータの更新を行うだけで、タスク、ドメイン特化を果たせることができ、計算リソースを大きく削減可能となります。
そしてQLoRAは、LoRAのよりメモリ効率の高いバージョンです。QLoRAはLoRAをさらに進化させ、LoRAアダプター(小さな行列)の重みを低い精度(例えば8ビットではなく4ビット)に量子化します。これにより、メモリフットプリントとストレージ要件がさらに削減されます。QLoRAでは、事前学習済みモデルは量子化された4ビットの重みでGPUメモリにロードされます(LoRAで使用される8ビットとは対照的)。ビット精度が低下しているにもかかわらず、QLoRAはLoRAと同等の効果を維持します。
さらにDoRAは、LoRAと同様に低ランク行列を用いてパラメータの更新を行いますが、さらに重みを大きさ(マグニチュード)と方向(ディレクション)に分解することで、学習能力を向上させています。
ここまではLoRAを中心としたファインチューニングの内容です。次はHalf Fine Tuningから見ていきます。