PEFTの概要:最先端のパラメータ効率の良い微調整の概要

PEFTの概要:最先端のパラメータ効率の良い微調整の詳細解説

“`html

 

PEFTとは何ですか

 

大規模言語モデル(GPT-3.5、LLaMA2、PaLM2など)がますます大きくなるにつれ、下流の自然言語処理(NLP)タスクに対する微調整は計算量が増えてメモリが必要になるため、ますますコンピュータ上で高価になっています。

パラメータ効率の高い微調整(PEFT)の手法は、予め学習されたモデルのほとんどを凍結させながらごく少数の追加パラメータだけを微調整することで、これらの問題に対処します。これにより大規模モデルでの壊滅的な忘却を防ぎ、限られた計算リソースでの微調整が可能になります。

PEFTは画像分類やテキスト生成などのタスクにおいて、大幅にパラメータ数を減らして有効な結果を出すことが証明されています。微調整された小さな重みは、単純に元の予め学習された重みに追加されます。

Google Colabの無料版を使用して、4ビットの量子化とPEFTテクニックでLLMを微調整することも可能です。

PEFTのモジュール化の特性により、同じ予め学習されたモデルを小さなタスク固有の重みを追加することで複数のタスクに適応させることができるため、完全なコピーの保存が不要になります。

PEFTライブラリには、LoRA、Prefix Tuning、AdaLoRA、Prompt Tuning、MultiTask Prompt Tuning、およびLoHaなどの人気のあるPEFTテクニックがTransformersとAccelerateと統合されています。これにより効率的かつスケーラブルな微調整を実現した最新の大規模言語モデルに簡単にアクセスできます。

 

LoRAとは何ですか

 

このチュートリアルでは、最も人気のあるパラメータ効率の高い微調整(PEFT)手法であるLoRA(Low-Rank Adaptation of Large Language Models)を使用します。LoRAは、大規模言語モデルの微調整プロセスを大幅に高速化し、メモリを節約します。

LoRAのキーポイントは、低ランク分解を介して二つの小さな行列を使用して重みの更新を表現することです。これらの行列は新しいデータに適応するためにトレーニングすることができ、全体の修正数を最小限に抑えます。元の重み行列は変更されず、さらなる調整は行われません。最終的な結果は、元の重みと適応された重みを組み合わせて得られます。

LoRAの使用にはいくつかの利点があります。まず、トレーニング可能なパラメータの数が少なくなるため、微調整の効率が大幅に向上します。また、LoRAはさまざまな他のパラメータ効率の手法と互換性があり、それらと組み合わせることができます。LoRAを使用して微調整されたモデルは、完全な微調整モデルとほぼ同等の性能を示します。重要なのは、LoRAは推論のレイテンシを追加せず、アダプタの重みをベースモデルとシームレスにマージできる点です。

 

ユースケース

 

PEFTのユースケースは、言語モデルから画像分類までさまざまです。公式のドキュメントで全てのユースケースのチュートリアルを確認できます。

  1. StackLLaMA: LLaMAをRLHFでトレーニングする手順
  2. Finetune-opt-bnb-peft
  3. LoRAとHuggingFaceを使用した効率的なflan-t5-xxlトレーニング
  4. LoRAを使用したDreamBoothの微調整
  5. LoRAを使用した画像分類

“`

 

PEFTを使用してLLMをトレーニングする

 

このセクションでは、`bitsandbytes`と`peft`ライブラリを使用して、トランスフォーマーモデルを読み込み、ラップする方法を学びます。また、保存されたファインチューニングされたQLoRAモデルをロードし、それを使用して推論を実行する方法も説明します。

 

始めましょう

 

まず、必要なライブラリをすべてインストールします。

%%capture%pip install accelerate peft transformers datasets bitsandbytes

 

次に、必要なモジュールをインポートし、ベースモデル(Llama-2-7b-chat-hf)をロードし、mlabonne/guanaco-llama2-1kデータセットを使用してファインチューニングします。

from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfigfrom peft import get_peft_model, LoraConfigimport torchmodel_name = "NousResearch/Llama-2-7b-chat-hf"dataset_name = "mlabonne/guanaco-llama2-1k"

 

PEFTの設定

 

モデルをラップまたは訓練するために使用するPEFTの設定を作成します。

peft_config = LoraConfig(    lora_alpha=16,    lora_dropout=0.1,    r=64,    bias="none",    task_type="CAUSAL_LM",)

 

4ビットの量子化

 

消費者やColabのGPU上でLLMをロードすることはかなりの課題です。ただし、BitsAndBytesを使用して4ビットの量子化技術を実装することで、この問題を解決することができます。このアプローチを使用することで、効果的にモデルをロードし、メモリを節約し、マシンのクラッシュを防ぐことができます。

compute_dtype = getattr(torch, "float16")bnb_config = BitsAndBytesConfig(    load_in_4bit=True,    bnb_4bit_quant_type="nf4",    bnb_4bit_compute_dtype=compute_dtype,    bnb_4bit_use_double_quant=False,)

 

ベーストランスフォーマーモデルのラップ

 

モデルをパラメータ効率化するために、`get_peft_model`を使用してベーストランスフォーマーモデルをラップします。

model = AutoModelForCausalLM.from_pretrained(    model_name,    quantization_config=bnb_config,    device_map="auto")model = get_peft_model(model, peft_config)model.print_trainable_parameters()

 

訓練可能なパラメータはベースモデルよりも少なくなっているため、メモリ使用量を減らしてモデルのファインチューニングをより速く行うことができます。

trainable params: 33,554,432 || all params: 6,771,970,048 || trainable%: 0.49548996469513035

 

次のステップはモデルをトレーニングすることです。これについては、4ビットの量子化とQLoRAガイドに従って行うことができます。

 

モデルの保存

 

トレーニング後、モデルアダプターをローカルに保存するか、Hugging Face Hubにプッシュすることができます。

model.save_pretrained("llama-2-7b-chat-guanaco")

 

または、Hugging Face Hubにプッシュすることもできます。

!huggingface-cli login --token $secret_value_0

 

model.push_to_hub("llama-2-7b-chat-guanaco")

 

モデルアダプターは134MBですが、ベースのLLaMA 2 7Bモデルは約13GBです。

 

 

モデルの読み込み

 

モデルの推論を実行するには、まずモデルを4ビット精度の量子化を使用して読み込み、トレーニングされたPEFTの重みをベース(LlaMA 2)モデルとマージする必要があります。

from transformers import AutoModelForCausalLMfrom peft import PeftModel, PeftConfigimport torchpeft_model = "kingabzpro/llama-2-7b-chat-guanaco"base_model = AutoModelForCausalLM.from_pretrained(    model_name,    quantization_config=bnb_config,    device_map="auto")model = PeftModel.from_pretrained(base_model, peft_model)tokenizer = AutoTokenizer.from_pretrained(model_name)model = model.to("cuda")model.eval()

 

推論

 

推論を実行するためには、プロンプトをguanaco-llama2-1kデータセットのスタイルで書く必要があります(「<s>[INST] {prompt} [/INST]」)。それ以外の場合、異なる言語での応答が得られます。

prompt = "What is Hacktoberfest?"inputs = tokenizer(f"<s>[INST] {prompt} [/INST]", return_tensors="pt")with torch.no_grad():    outputs = model.generate(        input_ids=inputs["input_ids"].to("cuda"), max_new_tokens=100    )    print(        tokenizer.batch_decode(            outputs.detach().cpu().numpy(), skip_special_tokens=True        )[0]    )

 

出力は完璧です。

[INST] What is Hacktoberfest? [/INST] Hacktoberfestは、10月に行われるオープンソースのソフトウェア開発イベントです。それは2017年に非営利団体であるオープンソースソフトウェア研究所(OSSI)によって作成されました。このイベントは、貢献者の数を増やし、オープンソースソフトウェアの品質を向上させることを目的として、人々にオープンソースプロジェクトへの貢献を奨励することを目的としています。Hacktoberfestでは、参加者はオープンソースへの貢献を促されます。

 

注意:Colabでモデルの読み込みに問題がある場合は、以下のノートブックをご覧ください:PEFTの概要

 

結論

 

LoRAのようなパラメータ効率の高いファインチューニング技術により、限られたパラメータのみを使用して大規模な言語モデルの効率的なファインチューニングが可能になります。これにより、高価な完全なファインチューニングの回避と、限られた計算リソースを使用したトレーニングが可能となります。PEFTのモジュラーな性質により、複数のタスクに対してモデルを適応させることができます。4ビット精度のような量子化手法は、メモリ使用量をさらに削減できます。全体的に、PEFTは大規模な言語モデルの能力をより幅広いユーザーに提供します。  

****[Abid Ali Awan](https://www.polywork.com/kingabzpro)****@1abidaliawan)は、機械学習モデルの構築が大好きな認定されたデータサイエンティストです。現在、彼はコンテンツ制作と機械学習およびデータサイエンス技術に関する技術的なブログの執筆に焦点を当てています。アビドはテクノロジーマネジメントの修士号および通信工学の学士号を持っています。彼のビジョンは、精神疾患で苦しむ学生向けにグラフニューラルネットワークを使用したAI製品を構築することです。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AIニュース

「マイクロソフトのBing ChatがChromeとSafariに拡大」

マイクロソフトのBing Chatは、AIパワードチャットボットであり、マイクロソフト専用の制約から脱出し、非マイクロソフトのブ...

AI研究

OpenAIのChatGPTアプリがBingの統合機能を備えたブラウジング機能を導入しました

OpenAIは、AIに関する最先端の研究機関であり、彼らのAIチャットボットのプレミアムバージョンであるChatGPT Plusのサブスク...

人工知能

「Unblock Your Software Engineers With Unblocked(アンブロックドでソフトウェアエンジニアを活用しましょう)」

「AIは、私たちのフィールドでますます重要な役割を果たしており、私たち開発者の生産性を大きく向上させる能力を持っていま...

データサイエンス

LLM幻覚を軽減する方法

AIの幻覚は、訓練データの欠陥と過度の複雑さから生じます幻覚を減らすための研究に基づく戦略を発見しましょう

データサイエンス

「CNNによる特徴抽出の探求」

「畳み込みニューラルネットワークは、機械学習を用いた画像分類タスクにおいて、今日の基礎となっていますただし、分類の前...

機械学習

「2023年に知っておく必要のあるトップ10のディープラーニングツール」

コンピュータと人工知能の世界の複雑な問題には、ディープラーニングツールの支援が必要です。課題は時間とともに変化し、分...