言語モデルのサイズの増加は、近年の自然言語処理(NLP)の最大のトレンドの2018つです。 2年以降、BERTとそのバリアント、GPT-3、T-NLG、GPT-175(XNUMX億パラメーター)など、これまでにない規模の言語モデルの開発と展開が見られました。
これらのモデルは、可能なアーキテクチャの革新の限界を押し広げました。 大規模な深層学習モデルをトレーニングする場合、特に生成型の事前トレーニング済みトランスフォーマーの新しい波に直面する場合、いくつかの課題に直面します。 これらの課題には、ハードウェアの制限と、計算および効率とのトレードオフが含まれます。 モデルとデータの並列処理のこれらの課題を克服するために、AWSは幅広い機能を提供します。
この投稿では、データの並列化とモデルの並列化を使用したXNUMXつの主要なアプローチを紹介します。 アマゾンセージメーカー、そして彼らの賛否両論について話し合う。
モデル
言語モデルには、論文で紹介したTransformersを使用します 注意はあなたが必要とするすべてです。 トランスフォーマーは、入力と出力の間にグローバルな依存関係を描画するための自己注意メカニズムに依存することにより、RNNの落とし穴を意図的に回避するように設計された深層学習モデルです。 Transformerモデルのアーキテクチャーにより、並列化が大幅に向上し、比較的短いトレーニング時間で高いパフォーマンスを実現できます。 論文で紹介されたTransformers、BERTの成功に基づいて構築 BERT:言語理解のためのディープ双方向トランスフォーマーの事前トレーニング、言語表現のための双方向の事前トレーニングを追加しました。 クローズタスクに触発されたBERTは、マスクされた言語モデリング(MLM)で事前にトレーニングされており、モデルはランダムにマスクされたトークンの元の単語を復元することを学習します。 BERTモデルは、次の文の予測(NSP)タスクでも事前にトレーニングされており、2018つの文が正しい読み順であるかどうかを予測します。 XNUMX年の登場以来、BERTとそのバリエーションは言語モデルで広く使用されています。
まず、トークン埋め込みと位置埋め込み用にXNUMXつの埋め込みレイヤーを作成します。 入力埋め込みは、トークン埋め込みと位置埋め込みの合計です。
次に、XNUMXつのサブレイヤーを持つ変圧器デコーダーブロックを定義します。マルチヘッド自己注意レイヤーと、レイヤーの正規化とドロップアウトが続く単純な完全に接続されたフィードフォワードネットワークです。
最後に、先行する埋め込みレイヤーとトランスフォーマーブロックを使用して言語モデルを作成します。
ハイパーパラメータに応じて、このモデルを数千のパラメータから数十億のパラメータにスケーリングできます。 億パラメータモデルの主な課題は、モデルをXNUMXつのインスタンスでホストできず、トレーニングと推論のためにモデルを複数のノードに分散させる必要があることです。
データセット
私たちの実験では、 パイルデータセット。 Pileは、大規模な言語モデルをトレーニングするために設計された800GiBの英語テキストデータセットです。 これは、確立されたNLPデータセットと新しく導入されたデータセットの両方を含む、22の多様で高品質なデータセットから作成されます。
データセットは、書籍を含むさまざまなデータソースから作成されます。 GitHubリポジトリ; ウェブページ; チャットログ; 医学、物理学、数学、コンピューターサイエンス、哲学の論文。 具体的には、次のソースを使用します:Pile-CC、PubMed Central、ArXiv、GitHub、FreeLaw Project、Stack Exchange、米国特許商標庁、PubMed、Ubuntu、IRC、HackerNews、YouTube、PhilPapers、Books3、Project Gutenberg( PG-19)、OpenSubtitles、英語版ウィキペディア、DM数学、EuroParl、Enron Emailsコーパス、およびNIHExPorter。 また、元のOpenWebTextおよびBookCorpusデータセットの拡張であるOpenWebText2およびBookCorpus2も含まれています。 データソースの多様性により、一般的なクロスドメインの知識が向上し、その結果、ダウンストリームの一般化機能が向上します。
このデータセットの主な課題は、サイズの大きさです。 データセットには825GiBのテキストがあり、これは4.2TiBの前処理および圧縮されたデータポイントに変換されます。 モデルのトレーニングとホスティングで直面する課題と同様に、単一のインスタンスでこのデータセットを使用してモデルをトレーニングするには、多くの時間がかかり、実用的ではありません。
私たちのソリューションは、データセットを約1 GiBのデータチャンクに分割し、機能をロードして前処理することです。 TensorFlowデータセット オブジェクト、およびそれらを格納します Amazon エラスティック ファイル サービス (Amazon EFS)。 TensorFlowデータセットは、モデルとうまく統合できる、使いやすく高性能なデータパイプラインを提供します。 Amazon EFSは使いやすいサービスであり、ファイルの追加と削除に応じて自動的に拡張される共有ファイルシステムを構築できます。 さらに、Amazon EFSは、必要に応じてより高いスループットレベルにバーストすることができます。これは、データとモデルのトレーニングパイプラインで重要です。
次に、これらの課題に取り組むための分散トレーニング戦略を検討します。
分散トレーニング
このプロジェクトでは、モデルサイズとデータ量のスケーリングというXNUMXつの課題に直面しました。 モデルのサイズとトレーニング可能なパラメーターの数を増やすと、精度が向上する可能性がありますが、単一のGPUメモリまたは単一のインスタンスで複数のGPUに適合できるモデルには制限があります。 さらに、モデルサイズが大きいほど、トレーニングに時間がかかります。
これらの課題には、データの並列処理とモデルの並列処理というXNUMXつの異なる方法で取り組むことができます。 データの並列処理では、ミニバッチの記録をさまざまなデバイスに分散してトレーニングを高速化することにより、確率的勾配降下法(SGD)を実行します。 ただし、並列データトレーニングには、すべてのデバイスからの勾配を使用したミニバッチ勾配平均の計算が非常に複雑になります。 AllReduce
、トレーニングクラスターが大きくなるにつれて難しくなります。 データの並列処理を使用する場合、モデルと単一のデータポイントをデバイス(CPUまたはGPU)に適合させる必要があります。これは、このような大きなモデルのサイズが単一のGPUのメモリよりもはるかに大きいため、実験の制限要因です。サイズ。
もうXNUMXつの解決策は、モデルを複数のデバイスに分割するモデル並列処理を使用することです。 モデルの並列処理は、モデルを複数のデバイスまたはノード(GPUを搭載したインスタンスなど)に分割し、効率的なパイプラインを作成してこれらのデバイス間でモデルをトレーニングし、GPUの使用率を最大化するプロセスです。
データの並列化
データの並列化は、複数のGPUまたは分散トレーニングへの最も一般的なアプローチです。 データをバッチ処理し、複数のデバイス(それぞれが複製されたモデルをホストしている)に送信してから、結果を集約できます。 データの並列化のために、Horovodと SageMaker分散データ並列ライブラリ.
Horovodは、TensorFlow、Keras、PyTorch、ApacheMXNet向けの分散型ディープラーニングトレーニングフレームワークです。 Horovodを使用するために、次のプロセスを実行しました。
- 実行して初期化する
hvd.init()
. - 各デバイスを単一のプロセスに関連付けます。 最初のプロセスまたはワーカーは最初のデバイスに関連付けられ、XNUMX番目のプロセスはXNUMX番目のデバイスに関連付けられ、以下同様に続きます。
- デバイスの数に基づいて学習率を調整します。
- オプティマイザを
hvd.DistributedOptimizer
. - ランク0の最初のワーカーから他のすべてのプロセスに初期変数の状態をブロードキャストします。 これは、トレーニングがランダムな重みで開始されたとき、またはチェックポイントから復元されたときに、すべてのワーカーの一貫した初期化を保証するために必要です。
- 他のワーカーがチェックポイントを破損しないように、デバイス0のみがチェックポイントを保存できることを確認してください。
トレーニングスクリプトは次のとおりです。
SageMakerデータ並列ライブラリを使用すると、ほぼ線形の効率でトレーニングを拡張でき、コードの変更を最小限に抑えてトレーニングを高速化できます。 ライブラリはカスタムを実行します AllReduce
AWSのネットワークインフラストラクチャを十分に活用することにより、デバイス間の通信を運用および最適化し、 アマゾン エラスティック コンピューティング クラウド (Amazon EC2)インスタンストポロジ。 SageMakerデータ並列ライブラリを使用するために、次のプロセスを実行しました。
- インポートして初期化する
sdp.init()
. - 各デバイスを単一のデバイスに関連付けます
smdistributed.dataparallel
と処理local_rank
.sdp.tensorflow.local_rank()
デバイスのローカルランクを示します。 リーダーはランク0、ワーカーはランク1、2、3などです。 - デバイスの数に基づいて学習率を調整します。
- ラップ
tf.GradientTape
DistributedGradientTape
実行するAllReduce
. - 初期モデル変数をリーダーノードからすべてのワーカーノードにブロードキャストします。
- デバイス0のみがチェックポイントを保存できることを確認してください。
モデルの並列化
ハイパーパラメータを調整して、単一のGPUを使用してトレーニングできるようにモデルを十分に小さく保つか、モデルの並列処理を使用して、複数のインスタンスにまたがる複数のGPU間でモデルを分割できます。 モデルのトレーニング可能なパラメーターの数を増やすと、精度が向上する可能性がありますが、単一のGPUメモリに収めることができるモデルの最大サイズには制限があります。 SageMaker分散モデル並列ライブラリを使用して、より大きなモデルをトレーニングしました。 手順は次のとおりです。
- ライブラリをインポートして初期化します。
smp.init()
. - Kerasモデルは、KerasModelクラスではなくsmp.DistributedModelから継承する必要があります。
- 作成セッションプロセスで
drop_remainder=True
セクションにtf.Dataset.batch()
バッチサイズが常にマイクロバッチの数で割り切れることを保証する方法。 - データパイプラインのランダム操作はすべて、同じシードを使用する必要があります。
smp.dp_rank()
例えば、shuffle(ds, seed=smp.dp_rank())
。 これにより、異なるモデルパーティションを保持するデバイス間でデータサンプルの一貫性が保証されます。 - 順方向および逆方向のロジックは、次のステップ関数に含まれている必要があります。
smp.step
装飾。 - 次のようなStepOutputメソッドを使用して、マイクロバッチ全体の出力に対して後処理を実行します。
reduce_mean
を選択します。smp.step
関数には、の出力に依存する戻り値が必要です。smp.DistributedModel
.
トレーニングスクリプトは次のとおりです。
SageMaker分散モデル並列ライブラリのTensorFlowトレーニングスクリプトを有効にするための詳細なガイドについては、を参照してください。 TensorFlowトレーニングスクリプトを変更する。 PyTorchについては、を参照してください PyTorchトレーニングスクリプトを変更する.
SageMakerデバッガー
前のセクションでは、モデルとデータの並列化手法を使用してトレーニングを最適化する方法について説明しました。 と Amazon SageMakerデバッガ、トレーニングの実行からパフォーマンスプロファイリング情報を取得して、トレーニングがどれだけ改善されたかを判断できるようになりました。 デフォルトでは、デバッガーは500ミリ秒のサンプリング間隔でGPU、CPU使用率、メモリ、ネットワーク、I/Oなどの各SageMakerトレーニングジョブのシステムメトリックをキャプチャします。 次のようにデータにアクセスできます。
デバッガーは次のユーティリティを提供します 視覚化する さまざまな方法でデータをプロファイリングします。 次の例では、GPUとCPUの合計使用率、およびHorovodを使用したマルチGPUトレーニングジョブのI/O待機時間を確認できます。 これらのグラフを生成するには、次のコードを実行します。
GPU使用率は0〜100%の間で頻繁に変動し、GPU使用率が低い状態でI / O待機時間が長いことは、I/Oボトルネックの指標です。 さらに、合計CPU使用率が70%を超えることはありません。つまり、ワーカープロセスの数を増やすことで、データの前処理を改善できます。
HorovodからSageMaker分散データ並列ライブラリに切り替えることでパフォーマンスを向上させることができます。 次のグラフでは、GPUがより効率的に使用されており、短期間で使用率が低くなっていることがわかります。
トレーニングインフラストラクチャ
モデルのトレーニングには、SageMakerトレーニングジョブを使用して10ml.p3.16xlargeインスタンスを使用しました。 SageMakerは、インフラストラクチャを管理することなく、機械学習(ML)モデルのトレーニングと調整にかかる時間とコストを削減します。 SageMakerを使用すると、組み込みツールを使用してMLモデルを簡単にトレーニングおよび調整して、トレーニング実験を管理および追跡し、最適なハイパーパラメーターを自動的に選択し、トレーニングジョブをデバッグし、GPU、CPU、ネットワーク帯域幅などのシステムリソースの使用率を監視できます。 データはAmazonEFSでホストされていたため、管理やプロビジョニングを必要とせずにファイルを追加および削除するときに、データを拡大および縮小できました。 私たちの主な目的は、トレーニング速度を向上させ、コストを削減することでした。
モデルのスケーラビリティ
このインフラストラクチャは主に言語生成に使用されますが、GPTアーキテクチャとPileデータセットを使用すると、これらの手法を使用して大規模なトランスモデルをトレーニングできます。これは、NLP以外の多くのドメインで役立ちます。 機械学習自体では、多くのコンピュータービジョンタスクが大規模パラメーター(トランスフォーマー)アーキテクチャで解決され、表現学習などのタスクで従来のCNN(畳み込みニューラルネットワーク)よりも優れていることが示されています(を参照)。 自己監視型トランスフォーマーと10倍効率的なトレーニングにより、コンピュータービジョンの最先端を前進させる)および画像からテキストへの大規模なマッピング( CLIP)。 大パラメータモデルはまた、次のような分野のライフサイエンスの新境地を開拓しています タンパク質構造分析 & 医用画像データの分析.
分散トレーニングと大規模モデルの管理についてこの投稿で詳しく説明するソリューションは、これらのドメインのいずれかのモデルにも適用する必要があります。
トレードオフ
大規模な言語モデルをトレーニングするリスク、およびそれらの開発に関連する潜在的なリスクとこれらのリスクを軽減するための戦略について十分な考慮が払われているかどうかについて、研究コミュニティで継続的な議論が行われています。環境コスト。 によると 紙 ACMで公開され、GPUで単一のBERTベースモデル(ハイパーパラメーター調整なし)をトレーニングするには、アメリカ横断のフライトと同じくらいのエネルギーが必要であると推定されました。 環境への影響はモデルのサイズに応じて変化し、そのようなモデルを効率的に微調整できることで、排出量を大幅に削減できる可能性があります。 AWSは最近新しい カスタマーカーボンフットプリントツール、持続可能性を高め、炭素排出量を削減するためのAmazonの取り組みの一環として、すべてのAWSのお客様が無料で利用できます。 AWSクラウドでアプリケーションを実行すると、二酸化炭素排出量を削減できる可能性があります( 2019レポート).
まとめ
この投稿では、SageMakerを使用してAWSクラウドでXNUMX億のパラメーターを使用して言語モデルを微調整することを容易にするソリューションを示しました。
SageMakerを使用したモデルの並列処理の詳細については、を参照してください。 AmazonSageMakerでモデルの並列追加とHuggingFaceを使用して175億以上のパラメーターNLPモデルをトレーニングする & LatentSpaceがAmazonSageMakerモデルの並列処理ライブラリを使用して大規模なトランスフォーマーのフロンティアを推進した方法.
製品やプロセスでのMLの使用を加速するためにサポートが必要な場合は、 Amazon MLソリューションラボ.
著者について
シア・ゴラミ アマゾンMLソリューションラボのシニアデータサイエンティストであり、さまざまな業界の顧客向けにAI/MLソリューションを構築しています。 彼は自然言語処理(NLP)とディープラーニングに情熱を注いでいます。 仕事以外では、Siaは自然の中で過ごしたりテニスをしたりすることを楽しんでいます。
メディ・ノリアマゾンMLソリューションラボのマネージャー兼シニアアプライドサイエンティストであり、さまざまな業界のお客様と協力して、クラウド移行の旅を加速し、最先端のソリューションを使用してMLの問題を解決するのを支援しています。テクノロジー。
キム・ムヒョン Amazon Machine Learning SolutionsLabのデータサイエンティストです。 彼は、機械学習とディープラーニングを適用することで顧客のさまざまなビジネス上の問題を解決し、顧客が熟練するのを支援します。
ダニー・バード は、Amazon MLSolutionsLabの応用科学者です。 ラボでは、コンピュータービジョンから強化学習まで、MLの専門分野で、顧客が高度なMLソリューションを開発するのを支援しました。 彼はテクノロジーを前進させ、その過程でAWS製品から新しい可能性を解き放つことに情熱を注いでいます。
フランシスコ・カルデロン・ロドリゲス は、Amazon MLSolutionsLabのデータサイエンティストです。 ML Solutions Labのメンバーとして、ディープラーニングを使用してAWSのお客様の重大なビジネス問題の解決を支援しています。 余暇には、音楽やギターを弾いたり、娘とサッカーをしたり、家族と一緒に時間を楽しんだりするのが好きです。
中山陽平 は、Amazon MLSolutionsLabのディープラーニングアーキテクトです。 彼はさまざまな分野の顧客と協力して、人工知能とAWSクラウドサービスの使用を加速し、ビジネス上の課題を解決しています。 彼はML/AI技術を宇宙産業に適用することに興味を持っています。
ナタリー・ラウシュマイヤー AWSのシニア応用科学者であり、顧客がディープラーニングアプリケーションを開発するのを支援しています。
- "
- 10
- 100
- 2019
- a
- 私たちについて
- 加速する
- 加速している
- アクセス
- 従った
- 達成する
- 越えて
- 追加されました
- 添加
- 高度な
- すべて
- ことができます
- 常に
- Amazon
- 分析
- API
- 適用された
- 申し込む
- 適用
- アプローチ
- アプローチ
- 約
- 建築の
- 建築
- 宝品
- 人工の
- 人工知能
- 関連する
- 注意
- 自動的に
- 利用できます
- 平均
- AWS
- なぜなら
- さ
- の間に
- 越えて
- より大きい
- 最大の
- 10億
- 億
- ブロック
- 本
- ビルド
- 構築します
- 内蔵
- ビジネス
- 機能
- できる
- キャプチャー
- キャプチャ
- カーボン
- 炭素排出量
- 中央の
- 挑戦する
- 課題
- 選択する
- class
- クラウド
- クラウドサービス
- コード
- コマンドと
- コミュニケーション
- コミュニティ
- 比べ
- 計算
- 計算
- コンピュータ
- コンピュータサイエンス
- コンピューティング
- 交流
- デメリット
- 整合性のある
- 接触
- コスト
- 作ります
- 作成した
- 作成します。
- 作成
- 重大な
- カスタム
- Customers
- データ
- データセンター
- データサイエンティスト
- 深いです
- 実証
- 依存
- 展開します
- 展開
- 設計
- 詳細
- 詳細な
- 決定する
- 開発する
- 開発
- 開発
- デバイス
- Devices
- 異なります
- 話し合います
- 配布
- 配布する
- 多様性
- DM
- ドメイン
- ダウン
- 簡単に
- 使いやすい
- 効率
- 効率的な
- 効率良く
- 努力
- 排出量
- enable
- 可能
- エネルギー
- 英語
- Enterprise
- 環境の
- 特に
- 設立
- 推定
- 例
- 超え
- 交換
- エクステンション
- 顔
- 直面して
- 家族
- 特徴
- フィールズ
- ファイナンシャル
- 名
- フィット
- フライト
- フォロー中
- 次
- フットプリント
- フォワード
- フレームワーク
- フランシスコ
- から
- function
- さらに
- 生成する
- 世代
- 生々しい
- 受け
- GitHubの
- グローバル
- GPU
- GPU
- 成長する
- ガイド
- Hardware
- 助けます
- ことができます
- ハイ
- 高品質
- より高い
- 主催
- ホスティング
- 認定条件
- How To
- しかしながら
- HTTPS
- 画像
- 画像
- 改善します
- 改善されました
- include
- 含ま
- 含めて
- 増える
- の増加
- index
- 産業
- 産業を変えます
- 情報
- インフラ
- イノベーション
- インスピレーションある
- インテリジェンス
- 興味がある
- IT
- 自体
- ジョブ
- Jobs > Create New Job
- 旅
- キープ
- 知識
- ラボ
- ラベル
- ラベル
- 言語
- 大
- より大きい
- 打ち上げ
- 層
- リーダー
- 学習
- レベル
- 図書館
- 生命科学
- 負荷
- ローカル
- 見て
- 機械
- 機械学習
- 管理します
- 管理
- マネージャー
- 管理する
- マッピング
- mask
- math
- 数学
- 手段
- 医療の
- メンバー
- メモリ
- メソッド
- メトリック
- ML
- モデル
- モニター
- 他には?
- 最も
- の試合に
- 音楽を聴く際のスピーカーとして
- ナチュラル
- 自然
- 必要
- ニーズ
- ネットワーク
- NIHの
- ノード
- 数
- 目的
- オファー
- Office
- 継続
- 操作
- 業務執行統括
- 最適化
- 注文
- その他
- 紙素材
- 部
- 情熱的な
- 特許
- パフォーマンス
- 期間
- 哲学
- 物理学
- プレイ
- 再生
- 位置
- 可能
- 潜在的な
- 予測する
- 予測
- 予測
- 前
- 主要な
- 問題
- プロセス
- ラボレーション
- 処理
- 製品
- プロファイリング
- プロジェクト
- PROS
- 提供します
- は、大阪で
- プッシュ
- 範囲
- リーディング
- 最近
- 最近
- 記録
- 回復する
- 減らします
- に対する
- 表現
- で表さ
- 必要とする
- 研究
- リソース
- 結果
- return
- リスク
- ラン
- ランニング
- 同じ
- 規模
- スケーリング
- 科学
- 科学
- 科学者
- シード
- サービス
- サービス
- いくつかの
- SGD
- 形状
- shared
- ショート
- 示す
- 同様の
- 簡単な拡張で
- から
- サイズ
- 小さい
- So
- サッカー
- 溶液
- ソリューション
- 解決する
- 解決する
- 一部
- スペース
- 特に
- スピード
- 支出
- split
- 分割
- スタック
- 開始
- 都道府県
- 最先端の
- 米国
- 店舗
- 作戦
- 成功
- 3つの柱
- タスク
- テクニック
- テクノロジー
- テクノロジー
- 数千
- 介して
- スループット
- 時間
- <font style="vertical-align: inherit;">回数</font>
- トークン
- トークン
- 豊富なツール群
- 追跡する
- 商標
- 伝統的な
- トレーニング
- トレンド
- Ubuntu
- 前例のない
- us
- つかいます
- 公益事業
- 活用
- 値
- 多様
- さまざまな
- 垂直
- ビジョン
- ボリューム
- wait
- ウェーブ
- 方法
- かどうか
- while
- Wikipedia
- 無し
- 言葉
- 仕事
- ワーカー
- 労働者
- 作品
- X
- 年
- あなたの
- ユーチューブ