最新モデルの事前トレーニングでは、時間とコストを削減するために、より大規模なクラスターのデプロイが必要になることがよくあります。 サーバー レベルでは、このようなトレーニング ワークロードには、より高速なコンピューティングとメモリ割り当ての増加が必要です。 モデルが数千億のパラメーターに成長するにつれて、複数のノード (インスタンス) にまたがる分散トレーニング メカニズムが必要になります。
2022 年 XNUMX 月に Amazon EC2 Trn1 インスタンス、を搭載 AWS トレーニングは、AWS が設計した第 1 世代の機械学習アクセラレータです。 Trn50 インスタンスは、ハイパフォーマンスの深層学習モデルのトレーニング専用に構築されており、同等の GPU ベースのインスタンスよりも最大 2% のトレーニング費用を節約できます。 トレーニング時間を数週間から数日、または数日から数時間に短縮し、大規模なモデルのトレーニング ジョブを分散するために、EC1 Trn1 UltraCluster を使用できます。ノンブロッキングのペタバイト規模のネットワーキング。 これは、これまでで最大の UltraCluster であり、最大 6 の Trainium チップで 30,000 エクサフロップスの計算能力をオンデマンドで提供します。
この投稿では、Hugging Face BERT-Large モデルの事前トレーニング ワークロードを簡単な例として使用して、Trn1 UltraClusters の使用方法を説明します。
Trn1 ウルトラクラスター
Trn1 UltraCluster は、データ センター内の Trn1 インスタンスの配置グループです。 単一のクラスター実行の一部として、Trainium アクセラレーターを使用して Trn1 インスタンスのクラスターをスピンアップできます。 次の図に例を示します。
Trn1 インスタンスの UltraCluster はデータ センター内に配置され、相互接続されています。 エラスティックファブリックアダプター(EFA)これはペタバイト規模のノンブロッキング ネットワーク インターフェイスであり、最大 800 Gbps のネットワーク帯域幅を備えています。これは、AWS P4d インスタンスでサポートされる帯域幅の 1.6 倍です (1 Tbps、今後の Trn1n インスタンスでは XNUMX 倍になります)。 これらの EFA インターフェイスは、Neuron Collective Communication Libraries を使用するモデル トレーニング ワークロードを大規模に実行するのに役立ちます。 TrnXNUMX UltraClusters には、次のようなコロケーション ネットワーク接続ストレージ サービスも含まれます。 光沢のためのAmazonFSx 大規模なデータセットへの高スループット アクセスを可能にし、クラスターが効率的に動作するようにします。 Trn1 UltraCluster は、最大 30,000 台の Trainium デバイスをホストでき、6 つのクラスターで最大 2 エクサフロップのコンピューティングを提供できます。 EC1 Trn6 UltraCluster は、従量課金制の使用モデルで、文字通りオンデマンドのスーパーコンピューターである最大 XNUMX エクサフロップスのコンピューティングを提供します。 この投稿では、Slurm などの HPC ツールを使用して UltraCluster を立ち上げ、ワークロードを管理します。
ソリューションの概要
AWS は、分散モデルのトレーニングやワークロードの推論を大規模に行うためのさまざまなサービスを提供しています。 AWSバッチ, Amazon Elastic Kubernetesサービス (Amazon EKS)、および UltraClusters です。 この投稿では、UltraCluster でのモデル トレーニングに焦点を当てています。 私たちのソリューションは、 AWS パラレルクラスター Trn1 UltraCluster を起動するために必要なインフラストラクチャと環境を作成するための管理ツール。 インフラストラクチャは、仮想プライベート クラウド (VPC) 内のヘッド ノードと複数の Trn1 コンピューティング ノードで構成されます。 クラスタ管理およびジョブ スケジューリング システムとして Slurm を使用します。 次の図は、ソリューション アーキテクチャを示しています。
詳細とこのソリューションの展開方法については、次を参照してください。 AWS Trn1 ParallelCluster でモデルをトレーニングする.
このソリューションのいくつかの重要な手順を見てみましょう。
- VPC とサブネットを作成します。
- コンピューティング フリートを構成します。
- クラスターを作成します。
- クラスタを検査します。
- トレーニング ジョブを起動します。
前提条件
この投稿を進めるには、次のような AWS のコア サービスに関する幅広い知識が必要です。 アマゾン エラスティック コンピューティング クラウド (Amazon EC2) が暗示され、ディープ ラーニングと PyTorch の基本的な知識が役立つでしょう。
VPC とサブネットを作成する
VPC とサブネットを作成する簡単な方法は、 アマゾン バーチャル プライベート クラウド (Amazon VPC) コンソール。 完全な手順については、 GitHubの. VPC とサブネットをインストールしたら、コンピューティング フリートでインスタンスを構成する必要があります。 簡単に言うと、これは、ParallelCluster の作成に使用される YAML ファイルの CustomActions で指定されたインストール スクリプトによって可能になります ( ParallelCluster の作成)。 ParallelCluster には、前のアーキテクチャ図に示すように、1 つのサブネットとネットワーク アドレス変換 (NAT) ゲートウェイを持つ VPC が必要です。 この VPC は、Trn1 インスタンスが利用可能なアベイラビリティーゾーンに存在する必要があります。 また、この VPC には、ヘッド ノードと Trn1 コンピューティング ノードをそれぞれ保持するためのパブリック サブネットとプライベート サブネットが必要です。 また、TrnXNUMX 計算ノードがダウンロードできるように、NAT ゲートウェイのインターネット アクセスも必要です。 AWS ニューロン パッケージ。 通常、計算ノードは、OS パッケージ、Neuron ドライバーとランタイム、およびマルチインスタンス トレーニング用の EFA ドライバーの更新を受け取ります。
ヘッド ノードに関しては、計算ノード用の前述のコンポーネントに加えて、PyTorch-NeuronX および NeuronX コンパイラも受け取ります。これにより、Trainium などの XLA デバイスでのモデル コンパイル プロセスが可能になります。
コンピューティング フリートを構成する
Trn1 UltraCluster を作成するための YAML ファイルで、 InstanceType
trn1.32xlarge として指定されます。 MaxCount
および MinCount
は、コンピューティング フリートのサイズ範囲を示すために使用されます。 あなたは使用することができます MinCount
一部またはすべての Trn1 インスタンスを常に利用できるようにします。 MinCount
ゼロに設定すると、実行中のジョブがない場合に Trn1 インスタンスがこのクラスターから解放されます。
Trn1 は、複数のキューを持つ UltraCluster に展開することもできます。 次の例では、Slurm ジョブの送信用に設定されているキューが XNUMX つだけあります。
複数のキューが必要な場合は、複数指定できます InstanceType
、それぞれ独自の MaxCount
, MinCount
, Name
:
ここでは、XNUMX つのキューが設定されているため、ユーザーは Slurm ジョブのリソースを柔軟に選択できます。
クラスターを作成する
Trn1 UltraCluster を起動するには、次を使用します。 pcluster
あなたのどこからコマンド ParallelCluster ツール インストールされています:
このコマンドでは、次のオプションを使用します。
--cluster-configuration
– このオプションでは、クラスター構成を記述する YAML ファイルが必要です-n
(または--cluster-name
) – このクラスターの名前
このコマンドは、AWS アカウントに Trn1 クラスターを作成します。 クラスタ作成の進行状況は、 AWS CloudFormation コンソール。 詳細については、次を参照してください。 AWS CloudFormation コンソールの使用.
または、次のコマンドを使用して、リクエストのステータスを確認できます。
コマンドはステータスを示します。次に例を示します。
以下は、出力からの重要なパラメーターです。
- インスタンスID – これはヘッド ノードのインスタンス ID であり、Amazon EC2 コンソールに表示されます
- フリートステータスを計算する – この属性は、計算ノードの準備ができていることを示します
- タグ – この属性は、
pcluster
このクラスターの作成に使用したツール
クラスターを検査する
前述のものを使用できます pcluster describe-cluster
コマンドを実行してクラスターを確認します。 クラスターが作成されると、次の出力が表示されます。
この時点で、ヘッド ノード (Amazon EC2 コンソールのインスタンス ID で識別) に SSH で接続できます。 以下は、クラスターの論理図です。
ヘッド ノードに SSH 接続した後、次のような Slurm コマンドを使用して、コンピューティング フリートとその状態を確認できます。 sinfo
システムのノード情報を表示します。 次に出力例を示します。
これは、16 つのパーティションで示されるように、キューが XNUMX つあることを示します。 XNUMX 個のノードが利用可能で、リソースが割り当てられています。 ヘッド ノードから、任意の計算ノードに SSH で接続できます。
exit
ヘッド ノードに戻ります。
同様に、別の計算ノードから計算ノードに SSH で接続できます。 各計算ノードには、Neuron ツールがインストールされています。 neuron-top
。 呼び出すことができます neuron-top
トレーニング スクリプトの実行中に、各ノードでの NeuronCore の使用率を調べます。
トレーニング ジョブを開始する
私たちは、使用 Hugging Face BERT-Large 事前トレーニング チュートリアル このクラスターで実行する例として。 トレーニング データとスクリプトがクラスターにダウンロードされたら、Slurm コントローラーを使用してワークロードを管理および調整します。 トレーニングジョブを送信します sbatch
指図。 シェル スクリプトは、 neuron_parallel_compile
完全なトレーニングを実行せずにモデルをグラフにコンパイルするための API。 次のコードを参照してください。
このコマンドでは、次のオプションを使用します。
--exclusive
– このジョブはすべてのノードを使用し、現在のジョブの実行中に他のジョブとノードを共有しません。--nodes
– このジョブのノード数。--wrap
– これは、Slurm コントローラーによって実行されるコマンド文字列を定義します。 この場合、すべてのノードを使用してモデルを並列にコンパイルするだけです。
モデルが正常にコンパイルされたら、次のコマンドを使用して完全なトレーニング ジョブを開始できます。
このコマンドは、Hugging Face BERT-Large モデルのトレーニング ジョブを起動します。 16 個の Trn1.32xlarge ノードを使用すると、8 時間以内に完了することが期待できます。
この時点で、次のような Slurm コマンドを使用できます。 squeue
送信されたジョブを検査します。 出力例は次のとおりです。
この出力は、ジョブが実行されていることを示しています (R
) 16 の計算ノードで。
ジョブの実行中、出力がキャプチャされ、Slurm ログ ファイルに追加されます。 ヘッド ノードのターミナルから、リアルタイムで検査できます。
また、Slurm ログ ファイルと同じディレクトリに、このジョブに対応するディレクトリがあります。 このディレクトリには、次のものが含まれます(例):
このディレクトリは、すべての計算ノードからアクセスできます。 results.json
モデルの構成、バッチ サイズ、合計ステップ、勾配累積ステップ、トレーニング データセット名など、この特定のジョブ実行のメタデータをキャプチャします。 各計算ノードごとのモデル チェックポイントと出力ログも、このディレクトリにキャプチャされます。
クラスタのスケーラビリティを考慮する
Trn1 UltraCluster では、相互接続された複数の Trn1 インスタンスが大規模なモデル トレーニング ワークロードを並行して実行し、合計計算時間または収束までの時間を短縮します。 クラスタのスケーラビリティには、次の XNUMX つの尺度があります。 強力なスケーリング および 弱いスケーリング. 通常、モデルのトレーニングでは、トレーニングの実行を高速化する必要があります。これは、勾配更新のラウンドのサンプル スループットによって使用コストが決まるためです。 ストロング スケーリングとは、プロセッサの数が増加しても問題の合計サイズが変わらないシナリオを指します。ストロング スケーリングは、モデル トレーニングのスケーラビリティの重要な尺度です。 強力なスケーリング (つまり、並列化の影響) を評価する際には、グローバル バッチ サイズを同じに保ち、収束にかかる時間を確認したいと考えています。 このようなシナリオでは、計算ノードの数に応じて勾配累積マイクロステップを調整する必要があります。 これは、トレーニング シェル スクリプトで次のように実行されます。 run_dp_bert_large_hf_pretrain_bf16_s128.sh
:
一方、ノードを追加することで一定時間にどれだけ多くのワークロードを実行できるかを評価したい場合は、弱いスケーリングを使用してスケーラビリティを測定します。 弱いスケーリングでは、NeuronCores の数と同じ割合で問題のサイズが増加するため、NeuronCores ごとの作業量が同じに保たれます。 弱いスケーリング、またはワークロードの増加に対するノードの追加の影響を評価するには、トレーニング スクリプトから上記の行を削除し、トレーニング スクリプトで提供されるデフォルト値 (32) で勾配累積のステップ数を一定に保ちます。
結果を評価する
いくつかのベンチマーク結果を ニューロンパフォーマンスページ スケーリングの効果を実証します。 このデータは、複数のインスタンスを使用してトレーニング ジョブを並列化し、多くの異なる大規模モデルを大規模にトレーニングする利点を示しています。
インフラストラクチャをクリーンアップする
この UltraCluster のすべてのインフラストラクチャを削除するには、 pcluster
コマンドを実行して、クラスターとそのリソースを削除します。
まとめ
この投稿では、AWS の Trainium アクセラレーターを利用した Trn1-UltraCluster でトレーニング ジョブをスケーリングすることで、モデルのトレーニング時間を短縮する方法について説明しました。 へのリンクも提供しました。 ニューロン サンプル リポジトリには、BERT-Large モデルの分散トレーニング ジョブをデプロイする方法が記載されています。 Trn1-UltraCluster は、分散トレーニング ワークロードを実行して、超大規模なディープ ラーニング モデルを大規模にトレーニングします。 分散トレーニングの設定により、単一の Trn1 インスタンスでのトレーニングと比較して、モデルの収束がはるかに高速になります。
Trainium を利用した Trn1 インスタンスの使用を開始する方法の詳細については、次の Web サイトにアクセスしてください。 ニューロンのドキュメント.
著者について
KC トゥン AWS Annapurna Labs のシニア ソリューション アーキテクトです。 彼は、クラウドでの大規模なディープ ラーニング モデルのトレーニングと展開を専門としています。 彼は博士号を持っています。 ダラスのテキサス大学サウスウェスタン医療センターで分子生物物理学の博士号を取得しています。 彼は AWS Summits と AWS Reinvent で講演しました。 現在、彼はお客様が AWS クラウドで大規模な PyTorch および TensorFlow モデルをトレーニングおよびデプロイするのを支援しています。 彼は次の XNUMX 冊の本の著者です。 TensorFlow Enterprise を学ぶ および TensorFlow 2 ポケット リファレンス.
ジェフリー・ハイン AWS Annapurna Labs のプリンシパル エンジニアです。 彼は、Trainium および Inferentia アクセラレータ デバイスでトレーニングと推論のワークロードを実行する顧客を支援することに情熱を注いでいます。 AWS ニューロン SDK. 彼はカリフォルニア工科大学/スタンフォード大学の卒業生で、物理学と EE の学位を取得しています。 趣味はランニング、テニス、料理、科学技術に関する読書です。
シュルティ・コパーカー AWS のシニア プロダクト マーケティング マネージャーです。 彼女は、顧客が機械学習のニーズに合わせて EC2 アクセラレーテッド コンピューティング インフラストラクチャを調査、評価、採用するのを支援しています。
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- Platoblockchain。 Web3メタバースインテリジェンス。 知識の増幅。 こちらからアクセスしてください。
- 情報源: https://aws.amazon.com/blogs/machine-learning/scaling-large-language-model-llm-training-with-amazon-ec2-trn1-ultraclusters/
- 000
- 1
- 10
- 100
- 2022
- 7
- 9
- a
- 私たちについて
- 上記の.
- 加速された
- 加速器
- 加速器
- アクセス
- アクセス可能な
- 従った
- 累積
- 達成
- 越えて
- 添加
- 住所
- 採用
- 後
- すべて
- 割り当てられました
- 配分
- Amazon
- Amazon EC2
- 量
- および
- 別の
- API
- 建築
- 著者
- 賃貸条件の詳細・契約費用のお見積り等について
- 利用できます
- AWS
- AWS CloudFormation
- バック
- 帯域幅
- 基本
- なぜなら
- さ
- ベンチマーク
- 恩恵
- 億
- 生物物理学
- 本
- 簡潔に
- 持って来る
- 広い
- 内蔵
- コール
- キャプチャ
- 場合
- センター
- チェック
- チップ
- 選択する
- クラウド
- クラスタ
- コード
- 集団
- コミュニケーション
- 匹敵します
- 比べ
- コンプリート
- コンポーネント
- 計算
- 計算
- コンピューティング
- 領事
- 定数
- 含まれています
- コントローラ
- 収束
- 基本
- 対応する
- 費用
- 作ります
- 作成した
- 作成します。
- 作成
- 創造
- 電流プローブ
- Customers
- ダラス
- データ
- データセンター
- データセット
- 日付
- 日
- 深いです
- 深い学習
- デフォルト
- 定義する
- 配信する
- 需要
- 実証します
- 実証
- 展開します
- 展開
- 展開
- 設計
- 細部
- 決定
- Devices
- 異なります
- 議論する
- 分配します
- 配布
- 分散トレーニング
- ダウン
- ダウンロード
- ドライバー
- 間に
- 各
- 効果
- 効率良く
- enable
- 可能
- エンジニア
- 確保する
- 環境
- 評価する
- 評価します
- 例
- 期待する
- 期待する
- 説明する
- 探る
- ファブリック
- 顔
- 親しみ
- 速いです
- File
- 固定の
- 艦隊
- 柔軟性
- 焦点を当てて
- フォロー中
- 次
- 発見
- から
- フル
- ゲートウェイ
- 世代
- 取得する
- Gitの
- 与えられた
- グローバル
- グラフ
- 大きい
- グループ
- 成長する
- ハンド
- 助けます
- 役立つ
- 助け
- ことができます
- ハイ
- ハイパフォーマンス
- host
- HOURS
- 認定条件
- How To
- hpc
- HTML
- HTTPS
- 何百
- ID
- 特定され
- 影響
- 暗黙の
- 重要
- in
- include
- 含ま
- 含めて
- 増加した
- 増加
- 示す
- を示し
- 無限
- 情報
- インフラ関連事業
- インストール
- 説明書
- 相互接続
- 関心
- インタフェース
- インターフェース
- インターネット
- インターネット・アクセス
- 呼び出す
- IT
- ジョン
- ジョブ
- Jobs > Create New Job
- JSON
- キープ
- 保管
- キー
- ラボ
- 言語
- 大
- より大きい
- 最大の
- 起動する
- 打ち上げ
- LEARN
- 学習
- レベル
- ライブラリ
- LINE
- LINK
- リストされた
- LLM
- 論理的な
- 見て
- 機械
- 機械学習
- 製
- 管理します
- 管理
- マネージャー
- 多くの
- マーケティング
- だけど
- 措置
- メカニズム
- 医療の
- メモリ
- モデル
- 分子の
- 他には?
- の試合に
- 名
- 必要
- 必要
- ニーズ
- ネットワーク
- ネットワーキング
- ノード
- 数
- 観察する
- 10月
- 提供すること
- オファー
- ONE
- 操作する
- オプション
- オプション
- 注文
- OS
- その他
- 自分の
- パッケージ
- パック
- 並列シミュレーションの設定
- パラメータ
- 部
- 特定の
- 情熱的な
- パフォーマンス
- 物理学
- プラトン
- プラトンデータインテリジェンス
- プラトデータ
- ポイント
- 可能
- ポスト
- 電力
- パワード
- 校長
- プライベート
- 問題
- プロセス
- プロセッサ
- プロダクト
- 進捗
- 提供します
- 提供
- 公共
- 目的
- Python
- パイトーチ
- ランプ
- 範囲
- レート
- 準備
- リーディング
- リアル
- への
- 理由
- 受け取ります
- 受け取り
- 減らします
- 軽減
- 指し
- 地域
- リリース
- 削除します
- 要求
- 必要とする
- 必要
- リソース
- 結果
- ラウンド
- ラン
- ランニング
- 同じ
- 貯蓄
- スケーラビリティ
- 規模
- スケーリング
- シナリオ
- 科学
- 科学技術
- スクリプト
- 二番
- 第2世代
- シニア
- サービス
- セッションに
- シェアする
- シェル(Shell)
- 示す
- 作品
- 簡単な拡張で
- 単に
- サイズ
- So
- 溶液
- 一部
- スパン
- 専門にする
- 指定の
- スピード
- スピン
- start
- 開始
- 都道府県
- Status:
- ステップ
- ストレージ利用料
- 強い
- 提出
- 提出する
- 提出された
- サブネット
- サブネット
- 首尾よく
- そのような
- サミット
- スーパーコンピュータ
- サポート
- 取り
- テクノロジー
- テンソルフロー
- ターミナル
- テキサス州
- アプリ環境に合わせて
- それによって
- 介して
- スループット
- 時間
- <font style="vertical-align: inherit;">回数</font>
- 〜へ
- 今日
- ツール
- 豊富なツール群
- トータル
- トレーニング
- トレーニング
- インタビュー
- 一般的に
- Ubuntu
- 大学
- 今後の
- 更新版
- URL
- 使用法
- つかいます
- ユーザー
- 値
- 多様
- 確認する
- バージョン
- 、
- 詳しく見る
- バーチャル
- ウィークス
- which
- while
- ワイド
- 意志
- 以内
- 無し
- 仕事
- でしょう
- ラップ
- ヤムル
- You
- あなたの
- ゼファーネット
- ゼロ
- ゾーン