PAI-ChatLearn は、Alibaba Cloud Machine Learning Platform の PAI チームが独自に開発した、柔軟で使いやすい大規模モデル RLHF 効率トレーニング フレームワークです。大規模モデルに対する SFT (教師あり指導の微調整)、RM (報酬モデル)、RLHF (人間のフィードバックに基づく強化学習) の完全なトレーニング プロセスをサポートします。 PAI-ChatLearn は、トレーニングと推論に異なるバックエンドの使用をサポートし、モデルごとに異なる並列戦略と柔軟なリソース割り当てを構成でき、大規模 (175B + 175B) モデルの効率的な RLHF トレーニングをサポートし、業界のフレームワークと比較してパフォーマンスが大幅に向上しているため、ユーザーはモデル効果のチューニングに集中できます。 1. 大規模モデルトレーニング方法の進化大規模モデルの急速な発展により、モデルのトレーニング方法(特にディープラーニングと人工知能の分野)が継続的に進化しました。モデルのサイズが大きくなるにつれて、単一のデバイス (GPU や CPU など) のメモリと計算能力ではモデル全体を処理するのに十分ではなくなるため、タスクと計算負荷を分散するための並列化戦略が必要になります。以下では、モデルトレーニングのデータ並列性、モデル並列性、タスク並列性についてそれぞれ紹介します。 1. データの並列処理初期のディープラーニング モデルは、古典的な畳み込みニューラル ネットワーク モデルの AlexNet や ResNet など比較的小規模で、単一の GPU でスムーズに実行できました。しかし、画像データの量が急増するにつれ、単一の GPU のトレーニング パフォーマンスでは徐々に需要を満たせなくなってきました。この課題に対処するために、モデル トレーニングではデータ並列戦略を採用してトレーニングを加速し始めました。 データ並列処理とは、トレーニング データセットを複数の小さなバッチに分割し、モデルのコピーを複数のプロセッサまたはデバイスで同時にトレーニングするプロセスです。各デバイスにはモデルの完全なコピーがあり、各トレーニング ステップの最後に、モデル パラメーターは何らかの形式の通信 (勾配平均化やパラメーター サーバーなど) を通じて同期されます。 データ並列化戦略自体も一連の進化を遂げてきました。たとえば、Zero Redundancy Optimizer (ZeRO) や Fully Sharded Data Parallel (FSDP) などの概念が登場しています。これらの概念の核となるのは、計算プロセスは依然としてデータ並列性の原則に従いながら、トレーニング中に状態情報、勾配、またはモデル パラメータを分散的に保存するというものです。トレーニング データセットを複数のミニバッチに分割し、モデルのコピーを複数のプロセッサまたはデバイスで同時にトレーニングします。各デバイスにはモデルの完全なコピーがあり、各トレーニング ステップの最後に、モデル パラメーターは何らかの形式の通信 (勾配平均化やパラメーター サーバーなど) を通じて同期されます。 このアプローチにより、各 GPU のメモリ負荷が大幅に軽減され、より大きなモデルをトレーニングできるようになります。しかし、モデルのサイズが大きくなるにつれて、データ並列戦略では、増加する同期負荷を処理するために、より効率的な通信メカニズムとより大きな帯域幅が必要になります。 2. モデルの並列処理モデルのサイズが大きくなり続けると、純粋なデータ並列処理だけではトレーニングのニーズを満たすことができなくなります。私たちが直面している課題は、ビデオ メモリ容量の不足だけでなく、計算能力の限界でもあります。そのため、モデルの並列処理は、大規模なディープラーニング モデルのトレーニングにおける一般的なソリューションとなっています。 モデル並列処理は、モデル分割方法に応じて、主にパイプライン並列処理とテンソル並列処理の 2 つの形式に分けられます。
単一モデルの並列処理では、モデルのトレーニングを効率的にサポートすることが難しい場合がよくあります。 GPT3-175B などの大型モデルでは、並列戦略を組み合わせる必要があります。ハイブリッド並列処理は、データ並列処理、モデル並列処理、タスク並列処理の利点を組み合わせて、より効率的なトレーニングを実現します。たとえば、データ並列処理を使用して複数のデバイス上でモデルの異なるコピーをトレーニングし、各デバイス内でモデル並列処理を使用してモデルの異なる部分を処理することができます。 3. タスクの並列処理モデルが進化し続けるにつれて、モデルのトレーニング方法にいくつかの新しいトレンドが生まれています。タスクの並列処理は、モデルまたはデータの並列処理を直接目的としたものではなく、異なるタスクを異なるプロセッサまたはデバイスに割り当てることを目的としています。大規模モデルのトレーニングでは、タスクの並列処理を使用して、ハイパーパラメータの検索、モデルの評価、異なるモデルの同時トレーニングなど、複数の異なるトレーニング プロセスを同時に実行できます。タスクの並列処理により、リソースの使用率とトレーニングの効率が向上しますが、効果的なタスクのスケジュールと管理のメカニズムが必要です。
(1)RLHFRLHF (Reinforcement Learning from Human Feedback) は、初期言語モデルの微調整タスクを RL 強化学習問題としてモデル化し、人間のフィードバック信号を使用して最適化することで、生成を人間の期待にさらに沿わせ、モデルのパフォーマンスと信頼性を向上させます。 トレーニング手順:
(2)ChatLearnフレームワーク構築の必要性RLHF トレーニングでは、ポリシー、報酬、価値、その他のモデルを同時にトレーニングする必要があります。 Megatron-LMやDeepSpeedなどの既存のフレームワークは、単一モデルのトレーニング/推論に適しています。既存の RLHF フレームワークは、単一マシンのトレーニングまたは同じデバイスへの複数のモデルの配置のみをサポートしています。サポートされるモデルの最大スケールは制限されており、70B + 70B 以上のスケールはサポートされておらず、ハイブリッド フレームワークのトレーニング/推論をサポートすることはできません。 2. PAI-ChatLearnフレームワークの紹介このセクションでは、主に PAI-ChatLearn フレームワークの基礎となる実装の詳細、インターフェースの定義方法、大規模で効率的な RLHF トレーニングの実装方法について紹介します。 1. PAI-ChatLearnフレームワークPAI_ChatLearn は、次の機能を備えた大規模な RHF トレーニングのための柔軟で効率的なフレームワークです。
次の図は、PAI_ChatLearn に実装されている RLHF トレーニング プロセスの図です。 2. PAI-ChatLearnアーキテクチャの紹介(1)API層APIレイヤーはモデル構築のためのインターフェースを提供する
(2)エンジン層エンジン層は、特定のリソースの割り当てとスケジュール、およびトレーニングと推論の実際の実行を担当します。
3. PAI-ChatLearnトレーニングコアプロセスPAI-ChatLearn トレーニングのコア プロセスは次のとおりです。まず chatlearn を初期化し、次にモデルを定義します (RLHF トレーニング プロセスには 2 つのトレーニング モデルと 4 つの推論モデルが含まれます)。次に、エンジンとデータ セットを定義し、engine.learn() を呼び出してトレーニングを開始します。 4. PAI-ChatLearnトレーニング構成実行環境の構成PAI-ChatLearn トレーニング フレームワークでは、ユーザーは YAML ファイルを通じて動作環境全体を構成します。PAI 実行環境 DLC とローカル環境の両方を柔軟に構成できます。 タスク配布プロセスでは、内部最適化戦略が採用されます。つまり、「除外」機能を通じて、配布する必要のないコンポーネントを明示的に指定できます。これにより、不要な通信オーバーヘッドが効果的に削減され、全体的な効率が向上します。 モデル構成各モデルには独立した構成オプションがあり、ユーザーは必要に応じてリソースの割り当てと戦略をカスタマイズできます。 RLHF では、6 つの異なるモデル構成がサポートされています。 RLHF トレーニング構成ユーザーは、実際の実行回数、トレーニング バッチ サイズ、生成されたタスクのベースライン サイズなどのパラメータを定義できます。さらに、チェックポイントを定期的に保存する時間間隔、データの保存パス、モデルのパフォーマンスを評価する時点も設定できます。 PAI-ChatLearn フレームワークは明確な構成プロセスを提供します。ユーザーはモデルを定義し、対応する構成を追加するだけで、簡単にトレーニング プロセスを開始できます。 5. PAI-ChatLearnインターフェースモデルの定義モデル構築プロセスを加速するために、開発プロセスを簡素化および高速化するように設計された一連のサブクラスを提供します。これらのサブクラスは、PyTorch、Meta、または VIM に基づくフレームワークに強力なサポートを提供します。同時に、ユーザーはこれらのサブクラスに基づいて HF モデルを構築するか、親クラスに直接基づいて HF モデルを構築するかを選択できます。 PAI-ChatLearn フレームワークでは、モデルのカプセル化が非常に簡単になります。ユーザーは、初期化 (init) ステップなどのモデルのセットアップと構築プロセスにのみ集中する必要があります。カプセル化レイヤーは、異なるフレームワーク間のインターフェースの違いを隠すように設計されているため、ユーザーはフレームワーク内で 1 つのカプセル化レイヤーのみを実行する必要があります。たとえば、ユーザーが推論のためだけに、または完全なトレーニング サイクルのために前進ステップを実装する必要がある場合、ラッパーによってこのプロセスが簡素化されます。標準モデル トレーニング プロセスを実装するには、ユーザーは定義されたトレーニング モジュールをモデルに統合するだけで済みます。 さらに、このフレームワークでは、さまざまな実行要件に対応するために、基盤となるインターフェースを柔軟に選択できます。ユーザーは、実行エンジンとして Megatron、バックエンドとして VIM を選択することも、当チームが開発した高性能コンピュータ HC をバックエンド リソースとして使用することもできます。この自由に切り替える機能により、ユーザーは特定のニーズと好みに基づいて最も適切なツールとリソースを選択できます。 3. PAI-ChatLearnの使用例このセクションでは、オープンソースのモデル例に基づいて、RLHF モデルの具体的なプロセスとトレーニング結果について説明します。 1. オープンソースのトランスフォーマーモデルの例(1)画像とモデルの準備鏡: PAI-DLCは、ChatLearnが提供するDockerfileを参照して、既製のイメージを提供するか、イメージをカスタマイズします。 モデル: Huggingface や ModeScope などのオープンソース モデルをダウンロードします。 HuggingFace トランスフォーマー モデルの場合は、ChatLearn が提供するツールを呼び出して、トランスフォーマー モデルを、モデルを変更するための並列戦略をサポートする Megatron-LM 形式に変換します。 (2)トレーニング手順ステップ1: SFTモデルをトレーニングする SFT トレーニング用のデータを準備します。 形式: {'query': 質問、'response': 返信}。 トレーニング方法: 変換されたモデルが構築された後、ChatLearn が呼び出され、SFT トレーニングが実行されます。 SFTモデルをトレーニングして保存する トレーニング済みの SFT モデルがある場合は、この手順をスキップできます。 ステップ 2: 報酬モデル (RM) をトレーニングします。 RM トレーニング用のデータを準備します。 形式: {'query': 質問、'response': [response1、response2、.....]、'score': [score1、score2、.....]}。 トレーニング方法: RM を定義します。一般的なメイン構造は SFT を再利用し、ヘッド レイヤーを追加します。 トレーニングされた SFT モデル パラメータを使用して RM を初期化します。 RM トレーニングを実行するには、ChatLearn に電話します。 トレーニング済みのモデルを保存します。 ステップ 3: 強化学習を使用して微調整します。 RL トレーニング用のデータを準備します。 形式: {"prompt": 質問}。 トレーニング方法: SFT モデルと構造が一致するポリシー/参照モデルを定義します。 SFT モデル パラメータを使用してポリシー/参照モデルを初期化します。 報酬/価値モデルを定義します。その構造は報酬モデルと一致します。 RM モデル パラメータを使用して報酬/価値モデルを初期化します。 RLHF トレーニングを実行するには、ChatLearn に電話します。 トレーニング済みのモデルを保存します。 ステップ 4: 推論。 オフラインバッチ予測。 予測する必要があるデータセットを準備します。 ChatLearn を呼び出して、オフライン バッチ予測用にトレーニング済みの RLHF モデルを読み込みます。 オンライン予測。 ChatLearn ツールを呼び出して、トレーニング済みの RLHF モデルを Transformer 形式に変換します。 PAI-EAS または vLLM を呼び出して、オンライン予測用のモデルを展開します。 2. ビクーニャ13B+13Bトレーニング効果ベースモデルは Vicuna 13B を使用し、RM も 13B スケールを使用します。 SFT、RM、RLHF は、HH (有用かつ無害) データセットでトレーニングされます。 RLHF トレーニングでは 16 個の GPU が使用されました。 RLHF トレーニングにおける報酬モデルのスコアを図に示します。 GPT-4 API は MT-Bench で使用され、SFT モデルと RLHF モデルのパフォーマンスを評価し、平均スコアが 11% 向上しました。
3. PAI-ChatLearn効果
ポリシーと報酬モデルは両方とも 14B です。 基本評価の結果は上図に示されており、同じ規模の他のオープンソース モデルよりも優れています。 幅広いトピックを網羅したテスト データセットが手動評価用に構築され、RLHF でトレーニングされたモデルは SFT モデルよりも大幅に優れたパフォーマンスを発揮しました。テスト問題には、知識、言語理解、創造性、数学、コーディング、その他の能力が含まれます。 4. 質疑応答Q1: 報酬モデルには、科学的正確性、コンプライアンス、人間的な表現など、複数のスコアリングメカニズムがあります。多次元報酬モデルの評価に関する実践的なエンジニアリング経験はありますか?A1: Baichuan2 の技術レポートでは、モデルの HF トレーニングでは複数の報酬モデルが使用されていると述べられています。たとえば、数学の分野では、既存の報酬モデルは数学的なスコアリングにおいて十分な精度がなく、効果が理想的でない可能性があります。報酬モデルのトレーニングを支援するために、より強力な数学的機能を備えた別のモジュールを具体的に使用します。 一部のオープンソース フレームワークは、タイル化された設計のため、ビデオ メモリの不足などのさまざまな課題に直面し、拡張が困難です。 PAI-ChatLearn フレームワークは分離されたアーキテクチャ設計を採用しており、さまざまな段階でのさまざまな拡張を容易にします。報酬モデル部分に一連の処理ロジックを追加するだけで、複数の報酬モデルの組み合わせを実現できます。各モデルは独立した分散アクターとしてカプセル化されるため、新しい分散アクターを追加し、その結果を連結し、最後に KL ダイバージェンスまたはその他の方法を使用して計算するだけで済みます。 Q2: PAI 開発キットを使用しているときに、TP または PP 分割してディスクに保存した後、Hugging Face から変換された Megatron モデルのサイズが何倍も大きくなるという問題が発生しました。原因と解決方法は何ですか?A2: TP テンソル並列処理または PP パイプライン並列処理を使用してモデルを分割しても、モデルのサイズは変わりません。 Megatron の古いバージョンには、変換後に複数のコピーが保存されるというバグがありました。最新バージョンではこの問題は発生しません。 Q3: PAI_ChatLearn に実装されている RLHF トレーニング フローチャートには多くの変数があります。これらは任意に設定できますか?A3: これは標準の PPO 実装であり、これらのパラメータは必須です。 PAI-ChatLearn は推論とトレーニングを分離し、パラメータ同期を追加します。これが最上位のラインです。 |
<<: Chain World: シンプルで効果的な人間行動エージェントモデル強化学習フレームワーク
この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...
言語/視覚入力をロボットの動作に変換するにはどうすればよいでしょうか?カスタムモデルをトレーニングす...
ChatGPTの最新の脆弱性が明らかになり、たった1つの文でトレーニングデータがそのまま漏洩してしま...
[[402907]]先週、Google Research はディープラーニングにおける概念理解に関す...
[[267184]] [51CTO.com クイック翻訳] 近年の機械学習技術の急速な発展により、ネ...
[[281019]]この記事はLeiphone.comから転載したものです。転載する場合は、Lei...
[[413763]]最近、4年に一度のオリンピックがついに東京で開催されました。フィールドでは、世界...
[51CTO.comより引用] モバイルインターネットの発展に伴い、あらゆるものの相互接続が可能に...
今年、AI分野では大規模言語モデル(LLM)が注目を浴びています。 LLM はさまざまな自然言語処理...
過去数十年にわたり、チャットボットは進化を続け、私たちの日常生活に欠かせないヘルパーになりました。携...