「大規模言語モデルの微調整方法:ステップバイステップガイド」
「美容とファッションの専門家が教える:大ヒットのビューティーアイテムとファッショントレンド」
2023年、Alpaca、Falcon、Llama 2、GPT-4などの大規模言語モデル(LLM)の台頭は、AIの民主化の傾向を示しています。これにより、小規模な企業でもカスタマイズされたモデルを手に入れることができ、普及が促進されています。ただし、オープンソースモデルのライセンス制限やファインチューニングおよびメンテナンスのコストなどの課題は依然として存在し、これらは主に大企業や研究機関によって管理可能です。
LLMの潜在能力を最大限に引き出す鍵は、特定のタスクに対して事前トレーニングされたモデルをファインチューニングおよびカスタマイズすることにあります。このアプローチは個々の要件に合わせており、革新的かつカスタマイズされたソリューションを提供します。ファインチューニングはモデルの効率と精度を向上させるだけでなく、システムリソースの利用を最適化し、ゼロからトレーニングするよりも少ない計算能力を必要とします。
多数のパラメータを持つモデルのGPU RAMの効率的な管理は重要です。例えば、32ビットの精度で10億パラメータモデルを読み込む場合、4GBのGPU RAMが必要です。これを克服するために、量子化によってパラメータの精度を低下させ、メモリ要件を削減します。32ビットから16ビット精度に変換することで、読み込みおよびモデルのトレーニングに必要なメモリを半分にすることができます。
最適化されたファインチューニングを管理するために最も一般的に使用される技術は、PEFT(Parameter Efficient Fine Tuning)およびRLHF(Reinforcement Learning with Human Feedback)です。
- 「GPS ガウシアンと出会う:リアルタイムにキャラクターの新しい視点を合成するための新たな人工知能アプローチ」
- 「Vchitectを紹介します:テキストからビデオ(T2V)およびイメージからビデオ(I2V)アプリケーションに適したオープンソースの大規模一般istビデオ作成システム」
- ジェミニに会ってください:Googleの画期的なマルチモーダルAIモデルが人工知能の未来を再定義する
パラメータ効率の高いファインチューニング手法
大規模言語モデルの完全なファインチューニングプロセスでは、巨大なモデルの重みだけでなく、他の要素も効率的に扱うことが重要です。先進的なモデルでは重量が数百ギガバイトに達しています。以下はLLMのファインチューニング最適化のためのPEFT手法のカテゴリです。
加算型メソッド
このタイプのチューニングでは、追加のパラメータやレイヤーを元のモデルに追加し、新しく追加されたパラメータのみをトレーニングの対象とします。加算型メソッドはさらに以下のサブカテゴリに分けられます:
- アダプター: トランスフォーマーサブレイヤーの後に小規模な完全接続ネットワークを組み込みます。代表的な例としてAdaMix、KronA、およびCompactorがあります。
- ソフトプロンプト: 勾配降下法を通じてモデルの一部の入力埋め込みをファインチューニングします。IPT、prefix-tuning、およびWARPが代表的な例です。
- その他の加算型手法: LeTS、AttentionFusion、およびLadder-Side Tuningなどの技術が含まれます。
選択型メソッド
選択型PEFTは、レイヤータイプや内部モデル構造に基づいて一部の上位レイヤーのみをファインチューニングする手法です。このカテゴリには、BitFitやLNチューニングなどの手法が含まれます。これらの手法は、モデルのバイアスや特定の行など、特定の要素のチューニングに焦点を当てています。
再パラメータ化ベースのメソッド
これらの手法は、低ランク表現を利用してトレーニング可能なパラメータの数を減らすために使用されます。その中でも最も有名な手法はLow-Rank AdaptationまたはLoRAです。
LoRA(Low-Rank Adaptation)
LoRAは、2021年にEdward J. Huらによって発表された論文で紹介された画期的なPEFT手法です。これは再パラメータ化カテゴリの一環として動作し、LLMの元の重みを凍結し、新しいトレーニング可能な低ランク行列をTransformerアーキテクチャの各レイヤーに統合します。これにより、トレーニング可能なパラメータの数を削減し、トレーニング時間と計算リソースを減らすことができます。これは完全なファインチューニングに比べてより効率的な代替手法を提供します。
LoRAは、特異値分解(SVD)の概念を使用しています。基本的に、SVDは行列を3つの異なる行列に分解し、そのうちの1つが特異値を収めた対角行列です。
LoRAは、このプロセスに介入し、すべての元のモデルパラメータを凍結し、元の重みに加えて「ランク分解行列」のペアを導入します。これらの小さな行列はAとBとして示され、教師あり学習を通じてトレーニングを受けます。この戦略は、HuggingFace Transformersなどのオープンソースライブラリを使用して効率的な各種タスクのLoRAファインチューニングを実現します。
QLoRA:LoRAの効率をさらに高める
LoRAが築いた基盤に基づいて、QLoRAはメモリ要件をさらに最小限に抑えます。2023年にTim Dettmers 他によって発表されたQLoRAは、低ランク適応と量子化を組み合わせ、NormalFloatまたはNumericFloat4(nf4)と呼ばれる4ビットの量子化フォーマットを使用します。量子化は基本的にはデータを情報量の少ない表現に変換するプロセスです。このアプローチにより、16ビットのファインチューニング方法の効果を維持しつつ、計算プロセス中に必要に応じて4ビットの重みを16ビットに復元します。
QLoRAは、NumericFloat4(nf4)を用いてトランスフォーマーアーキテクチャ全体の各レイヤーに対応し、ファインチューニングに必要なメモリフットプリントを縮小するために二重量子化の概念を導入します。これは、既に量子化された定数に対して量子化を実行することで実現されます。これにより、ページド最適化プロセッサと統一メモリ管理を利用して、通常の勾配チェックポイントメモリスパイクを回避します。
人間のフィードバックによる強化学習の手法
人間のフィードバックによる強化学習(RLHF)は、事前にトレーニングされた言語モデルをより人間の価値観に合わせるために使用されます。RLHFプロセスでは、人間のフィードバックを広範に活用し、報酬モデルのトレーニングに使用します。これは、言語生成の文脈での報酬を獲得するためのフィードバックループの連続的な動的プロセスです。RLHFの核には、強化学習パラダイムがあり、これは、エージェントが行動を実行し報酬を受け取ることで、環境内でどのように行動するかを学習するタイプの機械学習技術です。これは、最も高い報酬をもたらす選択肢を選ぶようにエージェントに刺激を与えるactionとfeedbackの連続的なループです。言語モデルの場合、エージェントはモデルそのものであり、環境は与えられたコンテキストウィンドウ内で動作し、状態は現在のトークンで定義されるものです。”アクションスペース“には、モデルが選択できる潜在的なトークンが含まれており、目標は、人間の好みに最も近いトークンを選択することです。
指示に基づいたファインチューニング
Generative AIライフサイクルのファインチューニングフェーズでは、指示入力および出力とステップバイステップの推論の例が組み合わされます。
単一タスクのファインチューニング
単一タスクのファインチューニングは、モデルの特定のタスクにおける専門性を磨くことに焦点を当てています。要約などのタスクにおいて大量のドキュメントや会話スレッドを最適化する際に特に有益です。このファインチューニングでは、数百から数千の例を使用しても大幅なパフォーマンスの向上が実現できますが、事前トレーニングフェーズで使用される数十億のトークンとは対照的です。
LLM の微調整手順
数十億のパラメータを持つ LLM モデルを微調整するために必要な手順を以下に示します。
この例では、QLoRA 技術を使用してモデルを微調整します。それには、Hugging Face の LLM ライブラリである transformers、accelerate、peft、trl、および bitsandbytes を使用できます。
1. はじめに
まず、必要なライブラリを Python 環境にインストールし、必要な GPU の容量を持つマシンで、ユースケースの微調整を行うための準備をします。その後、これらのライブラリから必要なモジュールをロードします。
2. モデルの設定
Hugging Face ライブラリからモデルにアクセスし、リクエストを申請して承認を得ます。
オープンソースモデル Llama 2 の Hugging Face でのアクセスリクエストの例です。承認が得られれば、オンラインライブラリからモデルを環境にダウンロードします。
画像はHugging Faceから
3. データセットの読み込み
ユースケースに応じて、モデルと微調整方法に基づいて微調整用のデータセットを特定します。Hugging Face ライブラリでの例として、mlabonne/guanaco-llama2-1k というデータセットを使用します。特定したデータセットを Hugging Face ハブから環境に読み込みます。
4. 必要ならクオンタイゼーションの設定を行う
QLoRA を使用した 4-bit クオンタイゼーションにより、消費者向けハードウェアで大規模な LLM モデルの効率的な微調整が可能となり、高いパフォーマンスを保持します。これにより、実世界のアプリケーションの利用性と使いやすさが大幅に向上します。
QLoRA では、事前学習済みの言語モデルを4ビットにクオンタイズし、パラメータを固定します。その後、モデルに可訓練な Low-Rank Adapter レイヤーを追加します。
5. トークナイザの読み込み
次に、HuggingFace のトークナイザを読み込み、パディングの問題を修正します。
6. PEFT パラメータ
事前学習済み言語モデル(PLM)の従来の微調整では、モデルのすべてのパラメータを更新する必要があり、計算コストが高く、膨大なデータが必要です。
パラメータ効率的な微調整(PEFT)は、モデルのごく一部のパラメータのみを更新することで、効率性が向上します。PEFT の公式ドキュメントを読むことで、パラメータについて詳しく学ぶことができます。
7. トレーニングパラメータ
トレーニングプロセスを最適化するために使用できるハイパーパラメータのリストを以下に示します:
- output_dir:モデルの予測結果とチェックポイントが保存される出力ディレクトリ。
- num_train_epochs:1つのトレーニングエポック。
- fp16/bf16:fp16/bf16 トレーニングを無効にする。
- per_device_train_batch_size:トレーニング用のGPUごとのバッチサイズ。
- per_device_eval_batch_size:評価用のGPUごとのバッチサイズ。
- gradient_accumulation_steps:更新プロセス中に勾配を蓄積するために必要なステップ数。
- gradient_checkpointing:勾配チェックポイントを有効にする。
- max_grad_norm:勾配クリッピング。
- learning_rate:初期学習率。
- weight_decay:バイアス/レイヤー正規化の重み以外のすべてのレイヤーに適用されるウェイト減衰。
- Optim:モデルの最適化手法(AdamW optimizer)。
- lr_scheduler_type:学習率スケジュール。
- max_steps:トレーニングステップ数。
- warmup_ratio:線形ウォームアップのステップの割合。
- group_by_length:パフォーマンスを大幅に改善し、トレーニングプロセスを加速することができます。
- save_steps:25回のアップデートステップごとにチェックポイントを保存。
- logging_steps:25回のアップデートステップごとにログを取る。
8. モデルの微調整
教師付き微調整(SFT)は、人間のフィードバックからの強化学習(RLHF)における重要なステップです。HuggingFaceのTRLライブラリは、わずか数行のコードでSFTモデルを作成し、データセットでトレーニングするための簡単なAPIを提供しています。これには、教師付き微調整から始まり、報酬モデリング、そして最終的には近接方策最適化(PPO)まで、強化学習を使用して言語モデルをトレーニングするためのツールが付属しています。モデルのトレーニングが完了したら、モデルアダプターとトークナイザーを保存します。同様のAPIを使用して、モデルをHugging Faceにアップロードすることもできます。
9. 評価
Tensorboardのインタラクティブセッションでトレーニング結果を確認してください。
微調整されたモデルをテストするには、Transformersのテキスト生成パイプラインを使用し、単純な質問(例:「レオナルド·ダ·ヴィンチは誰ですか?」)をしてみてください。
結論
このチュートリアルでは、QLoRA、PEFT、およびSFTなどの技術を使って、LLaMA 2モデルの微調整について総合的なガイドを提供しました。transformers、accelerate、peft、trl、およびbitsandbytesなどのHugging Faceライブラリを活用することで、消費者向けGPU上で7BパラメータLLaMA 2モデルを成功裏に微調整することができました。
全体として、このチュートリアルは、最近の進歩により大規模な言語モデルの民主化とアクセシビリティが実現され、リソースが制限されていても趣味の開発者でも最先端のAIを構築することが可能になったことを示しました。
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