ランチェーン 101:パート2d. 人間のフィードバックでLLMの微調整

「ランチェーン 101:パート2d. 人間からのフィードバックでLLMを微調整する方法」

これはLangChain 101コースのモデルセクションの2d部分であり、最後の部分です。この記事の文脈をより理解するために、最初の2つのパートをチェックすることを強くお勧めします。

LangChain 101:パート2ab。 (大規模な言語)モデルについて知っておくべきすべて

pub.towardsai.net

LangChain 101:パート2c。 PEFT、LORA、およびRLでLLMを微調整する方法

LLMの微調整、PEFT、LORA、および大規模言語モデルのトレーニングについて知っておくべきすべて

pub.towardsai.net

(次の部分を見逃さないように、著者をフォローしてください)。

RLHF(人間のフィードバックからの強化学習)は、高度な言語モデルの現在のトレーニング方法の重要な要素です。モデルの微調整時に人々のフィードバックを取り入れ、モデルをより価値あるものにし、セキュリティを向上させるのに役立ちます。

最も一般的なトレーニング方法について説明します:

ベースモデル

ベースモデルは、大量の一般的なテキストデータセット(時にはコード)で事前にトレーニングされた大規模な言語モデルです:GPT、LLAMA、Falconなど。

ベースモデルは、一般的な用途のドメインにおいてテキスト生成に使用するのに適しています。ただし、特定のタスクやドメインに対するパフォーマンスは、品質に欠ける場合があります。

プロンプティング

プロンプティングは、LLMのパフォーマンスを向上させるためのテクニックであり、タスクに固有のプロンプトをモデルに提供します。

たとえば、あなたが料理のアドバイスをLLMに求めたい場合、クエリの最初に「プロフェッショナルなミシェルシェフとして行動する」というような内容を追加したいかもしれません。そうすればLLMはこのプロンプトを使用して「経験豊富な料理人として行動します」。

プロンプティングはLLMのパフォーマンスを向上させる簡単な方法ですが、既存のLLMでトレーニングされた追加情報や語彙が必要なタスクには効果が少ないです。

微調整

微調整は、LLMのパフォーマンスを向上させるためのテクニックであり、特定のデータセット(望ましい入力と出力の例)でトレーニングします。

たとえば、英語からアラビア語への翻訳LLMを微調整したい場合、英語-アラビア語の翻訳対のデータセットを提供する必要があります。

微調整は、新しいデータと情報を多く学習する必要があるタスクにとって、通常はプロンプティングよりも効果的です。ただし、より多くのデータと計算リソースが必要です。

LangChain 101:パート2c。 PEFT、LORA、およびRLでLLMを微調整する方法

LLMの微調整、PEFT、LORA、および大規模言語モデルのトレーニングについて知っておくべきすべて

pub.towardsai.net

微調整+ RLHF

人間のフィードバックによる強化学習(RLHF)による微調整は、モデルを特定のデータセットによってトレーニングすることでLLMのパフォーマンスを向上させるテクニックです。このようなデータには、タスクの望ましい入力と出力の例、および人間の評価者からのプロデュース品質に関するフィードバックが含まれます。

RLHFを使用した微調整は、特にLLMが人間の価値観や好みを学ぶ必要があるタスクにおいて、単独の微調整よりも効果的です。ただし、より多くのデータ、計算リソース、および人間の取り組みが必要です。

ベースとなる研究:https://arxiv.org/pdf/2203.02155.pdf

(インストラクト)GPT RLHFパイプライン

では、この(Instruct)GPT RLHFパイプライン(おそらくChatGPTパイプラインも同様です)がどのように構築されているか、詳しく見てみましょう。

Instruct(GPT) RLHFパイプラインは、事前学習されたモデルを取り、教師付きトレーニングを通じてそれを洗練させる(「伝統的なトレーニングパイプライン」の「教師ありfine-tuning」と同様)ことから始まります。その後、更新されたモデルは近接ポリシーオプティマイゼーションを使ってさらに洗練されます。

RLHFパイプラインは、以下の3ステップのトレーニングプロセスで構成されています:

  1. 教師ありfine-tuningを通じた事前学習モデルの洗練
  2. 報酬を提供するモデルの開発
  3. 近接ポリシーオプティマイゼーション(PPO)を使った追加の洗練

RLHFパイプラインの最初のステップでは、プロンプト(おそらくデータセットやデータベースから生成または選択)を作成し、人間に高品質な応答を作成してもらいます。このデータ収集を使用して、事前に存在するベースモデルをガイド付きで微調整します。

ステップ1. (インストラクト)GPT RLHFパイプライン

RLHFパイプラインのステップ2では、教師ありfine-tuningを経た微調整モデルを教師付きトレーニングを介して使用し、次のステップのための報酬モデルを構築します。これには、各プロンプトに対して複数の応答を生成し、それらを個人が好みに基づいてランク付けする作業が含まれます。

RLHFパイプラインのステップ1から報酬モデルへのモデル変換には、出力レイヤー(次のトークンレイヤー)を、単一の出力ノードを持つ回帰レイヤーで置き換えます。

ステップ2. (インストラクト)GPT RLHFパイプライン

RLHFパイプラインの3番目のステップでは、報酬モデル(v2)を使用して教師ありfine-tuning(v1)を行った以前のモデルをさらに微調整します。

RLHFパイプラインのステップ2で確立した報酬モデルから得られた報酬スコアに基づいて、報酬モデルをガイドとしてv1モデルを近接ポリシーオプティマイゼーション(PPO)を使って調整します。

ステップ3. (インストラクト)GPT RLHFパイプライン

これが(Instruct)GPT RLHFパイプラインの動作原理のほとんどです。この方法は品質の高い結果を提供しますが、多くの時間と人的労力を必要とします。より効果的に行うことはできるでしょうか?

(Instruct)GPT RLHFパイプライン

LLAMA RLHFパイプライン

Meta AIのLlama 2モデルは、InstructGPTと似たRLHF手法を使用していますが、いくつかの注目すべき違いがあります:

  • 2つの報酬モデル
  • マージンロス
  • 拒否サンプリング

2つの報酬モデル: Llama2は、助けになる度合いと安全性に焦点を当てた2つの報酬モデルを使用しています。モデルの最終的な最適化は、これら2つのスコアの組み合わせに基づいて行われます。

マージンロス: Llama2は、モデルの応答をランキングする際に「マージン」ラベルを導入し、好みの間隔を測定します。このマージンパラメータは、ランキングの損失計算を洗練するのに役立ちます。

ステップ2. LLAMA RLHFパイプライン

リジェクションサンプリング: Llama2では、反復的なRLHFアプローチを使用して、モデルの複数バージョン(RLHF-V1からRLHF-V5まで)を作成します。PPOに加えて、リジェクションサンプリングも使用されています。

この手法では、複数の出力を生成し、最も高い報酬を選択して最適化中の勾配更新に使用します。これは、単一のサンプルに基づいて更新するPPOとは異なります。

ステップ3:LLAMA RLHFパイプライン

最終的なパイプラインは次のようになります:

LLAMA RLHFパイプライン

2つのうちより良い応答を選ぶことは、4つのセットをランク付けするよりも速いことがわかります。また、マージンを追加することで、モデルがより速く学習するのは理解できます。これは、クラシックな機械学習のトレーニングプロセスに類似しています。最後に、サンプルの拒否は、パイプの終わりで品質を向上させるための興味深い概念のように聞こえます。

名誉ある言及

コードに移る前に、他のRLHFテクニックをいくつかリストアップします:

研究者は、人間によって提供された一連のルールに基づく自己トレーニングメソッドを紹介しています。

この研究では、ヒンサイト指示ラベリング(HIR)という、プロンプトのサンプリングとトレーニングを含む2段階の方法を紹介しており、言語モデルが指示から逸脱する場合に効果的に変換します。

RLAIFに関する研究は、RLHFで報酬モデルトレーニングに使用される評価を、人間の入力だけでなく、LLMによって生成することができることを示しています。

ReSTは、サンプリングベースのアプローチを通じて言語モデルを人間の選好と調整し、徐々に高品質なサブセットで反復的に訓練することで、報酬関数を強化する方法です。

コーディングの時間です

完全なコードはGitHubで入手できます。

まず、使用する一般的なトレーニングおよびLora構成パラメータを定義する必要があります。これは、シリーズのファインチューニング部分から非常に似ています。

from transformers import TrainingArgumentsfrom peft import LoraConfig# Prepare training parameterstraining_args = TrainingArguments(    output_dir="./train_logs",  # 出力フォルダー    max_steps=100,  # 最大トレーニングステップ数    per_device_train_batch_size=4,  # トレーニング用のGPUごとのバッチサイズ    gradient_accumulation_steps=1,  # 勾配を蓄積するステップ数    learning_rate=1.0e-4,  # 学習率    optim="adamw_torch",  # オプティマイザー    save_steps=50,  # チェックポイントを保存する頻度    logging_steps=10,  # トレーニング情報をログする頻度    report_to="tensorboard",  # 報告方法(この場合、TensorBoard)    remove_unused_columns=False,  # 未使用の列を削除するかどうか    evaluation_strategy="steps",  # 評価戦略    num_train_epochs=5,  # トレーニングエポック数)# Prepare PEFT parameterspeft_config = LoraConfig(    r=16,  # rの値    lora_alpha=16,  # lora_alphaの値    bias="none",  # バイアス設定    task_type="SEQ_CLS",  # タスクタイプ(シーケンス分類)    modules_to_save=["scores"],  # 保存するモジュール)

さあ、RLHFパイプラインを定義する時が来ました。

まず、データを定義しましょう。通常、RLHFは、不正解の質問データセットを持っている場合に製品化に優れています。たとえば、ネガティブな回答であるかもしれません。

後で、このデータセットを整形して分割して、モデルのトレーニングとテストに使用します。人間のフィードバックが備わっているため、強化学習のためのコードを指定しましょう:

from trl import RewardTrainer# Prepare RewardTrainertrainer = RewardTrainer(    model=model,  # 強化学習モデル    tokenizer=tokenizer,  # 入力データ処理のためのトークナイザー    args=training_args,  # トレーニング引数    train_dataset=formatted_dataset["train"],  # トレーニングデータセット    eval_dataset=formatted_dataset["test"],  # 評価データセット    peft_config=peft_config,  # PEFTの設定    max_length=512,  # 最大入力長)# トレーニングを実行trainer.train()# 事前学習済み報酬モデルを保存trainer.model.save_pretrained("./reward_model")

これだけで、人間のフィードバックを使用した強化学習を実行するために必要なものが揃いました!

今では、いつRLHFを使用するか、データの形式はどのようになるべきか、コードの実行方法を知っています。

これがPart 2dの終わりです。これにより、LangChain 101コースのModelsパートが終了します。

投稿に拍手し、フォローしてくれると、新しい記事を書く意欲がわきます 🙂

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 カリキュラムの日が今こそ必要な時に会う

MIT RAISEの無料K-12プログラムへのグローバル参加者が、2年目にして2倍以上に増加しました

人工知能

「ChatGPTを使用してテキストをPowerPointプレゼンテーションに変換する方法」

ChatGPTを使用して、長いテキストを短いPowerPointプレゼンテーションに変換する迅速な方法

AI研究

手首に装着するモバイルアルコールセンサーは、アルコール使用研究を促進する可能性があります

ペンシルバニア州立大学とノースカロライナ大学の科学者たちは、より目立たない形でアルコール摂取に関するデータを収集する...

データサイエンス

「NVIDIA H100 GPUがAWS Cloudで利用可能になりました」

AWSユーザーは、AIトレーニングおよび推論の業界ベンチマークで示された最先端のパフォーマンスにアクセスできるようになりま...

AI研究

UCIと浙江大学の研究者は、ドラフティングと検証のステージを使用した自己推測デコーディングによるロスレスな大規模言語モデルの高速化を紹介しました

トランスフォーマーに基づく大規模言語モデル(LLM)は、GPT、PaLM、LLaMAなど、さまざまな実世界のアプリケーションで広く使...

AI研究

このAI研究レビューでは、衛星画像とディープラーニングの統合による資産ベースの貧困の測定について探求しています

ルンド大学とハルムスタッド大学の研究者は、衛星画像と深層機械学習による貧困推定の説明可能なAIに関するレビューを実施し...