本日は、以下のプレビューを発表できることを嬉しく思います。 Amazon SageMaker プロファイラー、の機能 アマゾンセージメーカー これは、SageMaker での深層学習モデルのトレーニング中にプロビジョニングされた AWS コンピューティング リソースの詳細なビューを提供します。 SageMaker Profiler を使用すると、CPU と GPU の使用率、GPU でのカーネルの実行、CPU でのカーネルの起動、同期操作、GPU 間のメモリ操作、カーネルの起動と対応する実行の間のレイテンシー、データ転送など、CPU と GPU 上のすべてのアクティビティを追跡できます。 CPUとGPUの間。 この投稿では、SageMaker Profiler の機能について説明します。
SageMaker Profiler は、PyTorch または TensorFlow トレーニング スクリプトに注釈を付け、SageMaker Profiler をアクティブ化するための Python モジュールを提供します。 また、視覚化するユーザー インターフェイス (UI) も提供します。 プロフィール、プロファイリングされたイベントの統計的概要、および GPU と CPU 間のイベントの時間関係を追跡して理解するためのトレーニング ジョブのタイムライン。
プロファイリングトレーニングジョブの必要性
ディープラーニング (DL) の台頭により、機械学習 (ML) はコンピューティングとデータを大量に使用するようになり、通常はマルチノード、マルチ GPU クラスターが必要になります。 最先端のモデルのサイズが数兆パラメータのオーダーで増大するにつれて、計算の複雑さとコストも急速に増加します。 ML の実践者は、このような大規模なモデルをトレーニングする際に、リソースの効率的な利用という共通の課題に対処する必要があります。 これは、大規模言語モデル (LLM) で特に顕著です。LLM には通常、数十億のパラメーターがあるため、効率的にトレーニングするには大規模なマルチノード GPU クラスターが必要です。
これらのモデルを大規模なコンピューティング クラスターでトレーニングすると、I/O ボトルネック、カーネル起動遅延、メモリ制限、リソース使用率の低さなど、コンピューティング リソースの最適化に関する課題が発生する可能性があります。 トレーニング ジョブの構成が最適化されていない場合、これらの課題によりハードウェアの使用効率が低下し、トレーニング時間が長くなったり、トレーニングの実行が不完全になったりして、プロジェクト全体のコストとスケジュールが増加する可能性があります。
前提条件
SageMaker Profiler の使用を開始するための前提条件は次のとおりです。
- AWS アカウントの SageMaker ドメイン – ドメインの設定手順については、次を参照してください。 クイックセットアップを使用して Amazon SageMaker ドメインにオンボードする。 また、SageMaker Profiler UI アプリケーションにアクセスするには、個々のユーザーのドメイン ユーザー プロファイルを追加する必要があります。 詳細については、を参照してください。 SageMaker ドメイン ユーザー プロファイルの追加と削除.
- 権限 – 次のリストは、SageMaker Profiler UI アプリケーションを使用するために実行ロールに割り当てる必要がある最小限の権限セットです。
sagemaker:CreateApp
sagemaker:DeleteApp
sagemaker:DescribeTrainingJob
sagemaker:SearchTrainingJobs
s3:GetObject
s3:ListBucket
SageMaker Profiler を使用してトレーニング ジョブを準備して実行する
トレーニング ジョブの実行中に GPU で実行されるカーネルのキャプチャを開始するには、SageMaker Profiler Python モジュールを使用してトレーニング スクリプトを変更します。 ライブラリをインポートし、 start_profiling()
および stop_profiling()
プロファイリングの開始と終了を定義するメソッド。 オプションのカスタム アノテーションを使用してトレーニング スクリプトにマーカーを追加し、各ステップの特定の操作中のハードウェア アクティビティを視覚化することもできます。
SageMaker Profiler を使用してトレーニング スクリプトをプロファイリングするために使用できるアプローチは XNUMX つあります。 最初のアプローチは、完全な機能のプロファイリングに基づいています。 XNUMX 番目のアプローチは、関数内の特定のコード行のプロファイリングに基づいています。
関数ごとにプロファイリングするには、コンテキスト マネージャーを使用します。 smppy.annotate
完全な関数に注釈を付けるため。 次のサンプル スクリプトは、コンテキスト マネージャーを実装して、各反復でトレーニング ループと完全な関数をラップする方法を示しています。
使用することもできます smppy.annotation_begin()
および smppy.annotation_end()
関数内のコードの特定の行に注釈を付けるため。 詳細については、以下を参照してください。 ドキュメント.
SageMaker トレーニング ジョブ ランチャーを構成する
アノテーション付けとプロファイラー開始モジュールの設定が完了したら、トレーニング スクリプトを保存し、SageMaker Python SDK を使用したトレーニング用に SageMaker フレームワーク推定ツールを準備します。
- デジタルフィルターボックス(フィルターと増幅用)と周波数応答アナライザーを使用して
profiler_config
を使用するオブジェクトProfilerConfig
およびProfiler
次のようなモジュール: - 以下を使用して SageMaker 推定器を作成します。
profiler_config
前のステップで作成されたオブジェクト。 次のコードは、PyTorch 推定器の作成例を示しています。
TensorFlow エスティメーターを作成したい場合は、インポートします。 sagemaker.tensorflow.TensorFlow
代わりに、SageMaker Profiler でサポートされている TensorFlow バージョンの XNUMX つを指定します。 サポートされているフレームワークとインスタンス タイプの詳細については、を参照してください。 サポートされているフレームワーク.
- fit メソッドを実行してトレーニング ジョブを開始します。
SageMaker プロファイラー UI を起動する
トレーニング ジョブが完了したら、SageMaker Profiler UI を起動して、トレーニング ジョブのプロファイルを視覚化して探索できます。 SageMaker Profiler UI アプリケーションには、SageMaker コンソールの SageMaker Profiler ランディング ページまたは SageMaker ドメインを通じてアクセスできます。
SageMaker コンソールで SageMaker Profiler UI アプリケーションを起動するには、次の手順を実行します。
- SageMakerコンソールで、 プロファイラー ナビゲーションペインに表示されます。
- 始める、SageMaker Profiler UI アプリケーションを起動するドメインを選択します。
ユーザー プロファイルが XNUMX つのドメインにのみ属している場合、ドメインを選択するオプションは表示されません。
- SageMaker Profiler UI アプリケーションを起動するユーザー プロファイルを選択します。
ドメインにユーザー プロファイルがない場合は、 ユーザープロファイルの作成。 新しいユーザー プロファイルの作成の詳細については、次を参照してください。 ユーザープロファイルの追加と削除.
- 選択する プロファイラーを開く.
また、ワイルドカード*を使用すると、任意の文字にマッチし、XNUMXつのコマンドで複数のファイルを削除することができます。 ドメインの詳細ページから SageMaker Profiler UI を起動します。.
SageMaker Profiler から洞察を得る
SageMaker Profiler UI を開くと、 プロファイルを選択してロードする 次のスクリーンショットに示すように、ページが開きます。
SageMaker Profiler に送信されたすべてのトレーニング ジョブのリストを表示し、名前、作成時間、実行ステータス (進行中、完了、失敗、停止、または停止中) によって特定のトレーニング ジョブを検索できます。 プロファイルをロードするには、表示したいトレーニング ジョブを選択し、 負荷。 ジョブ名が ロードされたプロファイル 上部のセクション。
ダッシュボードとタイムラインを生成するジョブ名を選択します。 ジョブを選択すると、UI によってダッシュボードが自動的に開くことに注意してください。 一度に XNUMX つのプロファイルをロードして視覚化できます。 別のプロファイルをロードするには、まず以前にロードしたプロファイルをアンロードする必要があります。 プロファイルをアンロードするには、 ロードされたプロファイル のセクションから無料でダウンロードできます。
この投稿では、ある人のプロフィールを表示します。 アルベフ 4 つの ml.p24d.XNUMXxlarge インスタンスでのトレーニング ジョブ。
トレーニング ジョブの読み込みと選択が完了すると、UI が開きます。 ダッシュボード 次のスクリーンショットに示すように、ページ。
主要なメトリクス、つまり GPU アクティブ時間、経時的な GPU 使用率、CPU アクティブ時間、および経時的な CPU 使用率のプロットを確認できます。 GPU アクティブ時間の円グラフには、GPU アクティブ時間と GPU アイドル時間の割合が表示されます。これにより、トレーニング ジョブ全体を通じて GPU がアイドル時間よりもアクティブであるかどうかを確認できます。. 時間の経過に伴う GPU 使用率のタイムライン グラフには、ノードごとの時間の経過に伴う平均 GPU 使用率が表示され、すべてのノードが XNUMX つのグラフに集計されます。 特定の時間間隔中に、GPU に不均衡なワークロード、使用率不足の問題、ボトルネック、またはアイドルの問題があるかどうかを確認できます。. これらのメトリクスの解釈の詳細については、以下を参照してください。 ドキュメント.
ダッシュボードには、次のスクリーンショットに示すように、すべての GPU カーネルが費やした時間、上位 15 の GPU カーネルが費やした時間、すべての GPU カーネルの起動数、上位 15 の GPU カーネルの起動数などの追加のプロットが表示されます。
最後に、ダッシュボードでは、GPU でのステップ時間の分布を示すヒストグラムであるステップ時間分布や、カーネルの実行に費やされた時間の割合を示すカーネル精度分布円グラフなどの追加のメトリクスを視覚化できます。 FP32、FP16、INT32、INT8 などのさまざまなデータ型で。
また、GPU アクティビティの分布に関する円グラフを取得して、カーネルの実行やメモリなどの GPU アクティビティに費やされた時間の割合を示すこともできます (memcpy
および memset
)、および同期 (sync
)。 GPU メモリ操作の分布円グラフから、GPU メモリ操作に費やされた時間の割合を視覚化できます。
この投稿で前述したように、手動で注釈を付けたカスタム メトリックに基づいて独自のヒストグラムを作成することもできます。 新しいヒストグラムにカスタム注釈を追加する場合、トレーニング スクリプトに追加した注釈の名前を選択または入力します。
タイムラインインターフェース
SageMaker Profiler UI にはタイムライン インターフェイスも含まれており、これにより、CPU 上でスケジュールされ、GPU 上で実行されるオペレーションおよびカーネルのレベルでコンピューティング リソースの詳細が表示されます。 次のスクリーンショットに示すように、タイムラインはツリー構造で編成され、ホスト レベルからデバイス レベルまでの情報が表示されます。
CPU ごとに、次のような CPU パフォーマンス カウンターを追跡できます。 clk_unhalted_ref.tsc
および itlb_misses.miss_causes_a_walk
。 2x p4d.24xlarge インスタンス上の各 GPU について、ホスト タイムラインとデバイス タイムラインを確認できます。 カーネルの起動はホストのタイムライン上で行われ、カーネルの実行はデバイスのタイムライン上で行われます。
個々のステップにズームインすることもできます。 次のスクリーンショットでは、step_41 を拡大しています。 次のスクリーンショットで選択されているタイムライン ストリップは、 AllReduce
分散トレーニングにおける重要な通信と同期のステップである操作は、GPU-0 で実行されます。 スクリーンショットでは、GPU-0 ホストでのカーネル起動が、シアンの矢印で示されている GPU-0 デバイス ストリーム 1 で実行されるカーネルに接続していることに注目してください。
可用性と考慮事項
SageMaker Profiler は、PyTorch (バージョン 2.0.0 および 1.13.1) および TensorFlow (バージョン 2.12.0 および 2.11.1) で利用できます。 次の表に、サポートされているリンクへのリンクを示します。 SageMaker 用の AWS 深層学習コンテナ.
フレームワーク | AWS DLC イメージ URI | |
パイトーチ | 2.0.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.0-gpu-py310-cu118-ubuntu20.04-sagemaker |
パイトーチ | 1.13.1 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.13.1-gpu-py39-cu117-ubuntu20.04-sagemaker |
TensorFlow | 2.12.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/tensorflow-training:2.12.0-gpu-py310-cu118-ubuntu20.04-sagemaker |
TensorFlow | 2.11.1 | 763104351884.dkr.ecr.<region>.amazonaws.com/tensorflow-training:2.11.1-gpu-py39-cu112-ubuntu20.04-sagemaker |
SageMaker Profiler は現在、米国東部 (オハイオ、バージニア北部)、米国西部 (オレゴン)、および欧州 (フランクフルト、アイルランド) のリージョンで利用できます。
SageMaker Profiler は、トレーニング インスタンス タイプ ml.p4d.24xlarge、ml.p3dn.24xlarge、および ml.g4dn.12xlarge で使用できます。
サポートされているフレームワークとバージョンの完全なリストについては、以下を参照してください。 ドキュメント.
SageMaker Profiler は、SageMaker 無料利用枠または機能の無料試用期間が終了した後に料金が発生します。 詳細については、「」を参照してください。 Amazon SageMakerの価格.
SageMaker プロファイラーのパフォーマンス
SageMaker Profiler のオーバーヘッドをさまざまなオープンソース プロファイラーと比較しました。 比較に使用されるベースラインは、プロファイラーを使用せずにトレーニング ジョブを実行することで取得されました。
私たちの主な調査結果では、SageMaker Profiler はエンドツーエンドのトレーニング実行のオーバーヘッド時間が少ないため、一般に請求対象となるトレーニング期間が短くなることが明らかになりました。 また、オープンソースの代替手段と比較した場合、生成されるプロファイリング データも少なくなります (最大 10 分の XNUMX)。 SageMaker Profiler によって生成されるプロファイリング アーティファクトが小さいほど、必要なストレージが少なくなるため、コストも節約されます。
まとめ
SageMaker Profiler を使用すると、深層学習モデルをトレーニングする際のコンピューティング リソースの使用状況に関する詳細な洞察を得ることができます。 これにより、パフォーマンスのホットスポットとボトルネックを解決してリソースを効率的に使用できるようになり、最終的にはトレーニング コストが削減され、トレーニング全体の期間が短縮されます。
SageMaker Profiler の使用を開始するには、以下を参照してください。 ドキュメント.
著者について
ロイ・アレラ は、ドイツのミュンヘンを拠点とする AWS のシニア AI/ML スペシャリスト ソリューション アーキテクトです。 Roy は、小規模なスタートアップから大企業まで、AWS の顧客が AWS 上で大規模な言語モデルを効率的にトレーニングしてデプロイできるよう支援します。 Roy は、計算最適化問題と AI ワークロードのパフォーマンスの向上に情熱を注いでいます。
スシャント・ムーン インドの AWS のデータ サイエンティストで、AI/ML の取り組みを通じて顧客を指導することに特化しています。 小売、金融、保険の分野にわたる多様な背景を持ち、革新的でカスタマイズされたソリューションを提供しています。 スシャントは職業生活を超えて、水泳に若返りを見出し、さまざまな場所への旅行からインスピレーションを求めています。
ディクシャ・シャルマ Worldwide Specialist Organization の AI/ML スペシャリスト ソリューション アーキテクトです。 彼女は公共部門の顧客と協力して、AWS 上の生成 AI ソリューションを含む、効率的で安全かつスケーラブルな機械学習アプリケーションの設計を支援しています。 ディクシャは余暇には、本を読んだり、絵を描いたり、家族と時間を過ごすのが大好きです。
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- PlatoData.Network 垂直生成 Ai。 自分自身に力を与えましょう。 こちらからアクセスしてください。
- プラトアイストリーム。 Web3 インテリジェンス。 知識増幅。 こちらからアクセスしてください。
- プラトンESG。 自動車/EV、 カーボン、 クリーンテック、 エネルギー、 環境、 太陽、 廃棄物管理。 こちらからアクセスしてください。
- プラトンヘルス。 バイオテクノロジーと臨床試験のインテリジェンス。 こちらからアクセスしてください。
- チャートプライム。 ChartPrime でトレーディング ゲームをレベルアップしましょう。 こちらからアクセスしてください。
- ブロックオフセット。 環境オフセット所有権の近代化。 こちらからアクセスしてください。
- 情報源: https://aws.amazon.com/blogs/machine-learning/announcing-the-preview-of-amazon-sagemaker-profiler-track-and-visualize-detailed-hardware-performance-data-for-your-model-training-workloads/
- :持っている
- :は
- :not
- $UP
- 1
- 10
- 100
- 11
- 12
- 125
- 13
- 視聴者の38%が
- 17
- 20
- 7
- 9
- a
- 私たちについて
- アクセス
- 越えて
- 活性化する
- アクティブ
- 活動
- アクティビティ
- 加えます
- 追加されました
- 追加
- NEW
- 後
- に対して
- 集約する
- AI
- AI / ML
- すべて
- また
- 選択肢
- Amazon
- アマゾンセージメーカー
- Amazon Webサービス
- an
- および
- アナウンス
- 発表
- 別の
- どれか
- 現れる
- 申し込み
- アプローチ
- アプローチ
- です
- AS
- 割り当てられた
- At
- 自動的に
- 利用できます
- 平均
- AWS
- 背景
- ベース
- ベースライン
- BE
- なぜなら
- になる
- き
- 開始
- 所属
- の間に
- 越えて
- 億
- BIN
- by
- 缶
- 機能
- 機能
- キャプチャ
- 一定
- 課題
- 課金
- チャート
- チェック
- 選択する
- コード
- コマンドと
- コミュニケーション
- 比べ
- 比較
- コンプリート
- 記入済みの
- 複雑さ
- 計算
- コネクト
- 領事
- コンテナ
- コンテキスト
- 対応する
- 費用
- コスト
- カウンター
- 作ります
- 作成した
- 作成
- 創造
- 現在
- カスタム
- Customers
- シアン
- ダッシュボード
- データ
- データサイエンティスト
- 深いです
- 深い学習
- 定義します
- 提供します
- 展開します
- 記載された
- 詳細な
- 細部
- デバイス
- 異なります
- 配布
- 分散トレーニング
- ディストリビューション
- 異なる
- ドメイン
- ドメイン
- 行われ
- ダウン
- ドライブ
- デュレーション
- 間に
- 各
- 前
- 東
- 効率的な
- 効率良く
- enable
- 可能
- end
- 端から端まで
- 努力
- 終了
- 確保
- 入力します
- 全体
- エントリ
- 時代
- エポック
- 本質的な
- ヨーロッパ
- イベント
- 明らか
- 例
- 実行
- 探る
- Failed:
- 家族
- 特徴
- ファイナンス
- 発見
- 発見
- 仕上げ
- 名
- フィット
- フォロー中
- 次
- フォワード
- フレームワーク
- フレームワーク
- 無料版
- 無料試用
- から
- フル
- 機能
- 一般に
- 生成する
- 生成された
- 生々しい
- 生成AI
- ドイツ
- 取得する
- 与え
- GPU
- GPU
- グラフ
- 成長する
- 持っていました
- Hardware
- 持ってる
- he
- 助けます
- ことができます
- 彼女の
- 彼の
- host
- 認定条件
- How To
- HTML
- HTTP
- HTTPS
- i
- ICON
- アイドル
- if
- 画像
- 実装する
- import
- 改善
- in
- 含ま
- 含めて
- 増える
- インド
- 示された
- 個人
- 非効率的な
- 情報
- 革新的な
- 入力
- 洞察
- ひらめき
- を取得する必要がある者
- 説明書
- 保険
- インタフェース
- に
- アイルランド
- 問題
- IT
- 繰り返し
- ITS
- ジョブ
- Jobs > Create New Job
- JPG
- キー
- ラベル
- 着陸
- 言語
- 大
- 起動する
- 起動
- 学習
- less
- レベル
- 図書館
- 生活
- 制限
- ライン
- リンク
- リスト
- 負荷
- ローディング
- より長いです
- 損失
- で
- ロー
- 機械
- 機械学習
- マネージャー
- 手動で
- メモリ
- 方法
- メソッド
- メトリック
- メトリック
- 最小
- ML
- モデル
- 修正する
- モジュール
- 他には?
- しなければなりません
- 名
- すなわち
- ナビゲーション
- 必要
- 新作
- いいえ
- ノード
- オブジェクト
- 入手する
- 得
- of
- オファー
- オハイオ
- on
- ONE
- の
- 開いた
- オープンソース
- 開きます
- 操作
- 業務執行統括
- 最適化
- 最適化
- オプション
- or
- 注文
- オレゴン
- 組織
- 整理
- が
- 全体
- 自分の
- ページ
- ペイン
- パラメータ
- 特定の
- 特に
- 情熱的な
- 以下のために
- 割合
- パフォーマンス
- 期間
- パーミッション
- プラトン
- プラトンデータインテリジェンス
- プラトデータ
- 喜んだ
- ポイント
- ポスト
- 精度
- 準備
- 前提条件
- プレビュー
- 前
- 前に
- 問題
- プロ
- プロフィール
- 対応プロファイル
- プロファイリング
- 進捗
- プロジェクト
- は、大阪で
- 公共
- Python
- パイトーチ
- クイック
- 急速に
- レート
- 読む
- 減らします
- 地域
- 若返り
- 関係
- 削除します
- 必要とする
- リソースを追加する。
- リソース
- 結果
- 小売
- 明らかに
- 上昇
- 職種
- ロイ
- ラン
- ランニング
- runs
- セージメーカー
- Save
- 節約
- ド電源のデ
- 予定の
- 科学者
- スクリプト
- SDDK
- を検索
- 二番
- セクション
- セクター
- 安全に
- 求める
- 選択
- 選択
- シニア
- サービス
- セッションに
- 設定
- 彼女
- すべき
- 示す
- 作品
- サイズ
- 小さい
- より小さい
- ソリューション
- ソース
- 緊張
- 専門家
- 特化
- 特定の
- 過ごす
- 費やした
- start
- 開始
- スタートアップ
- 最先端の
- 統計的
- Status:
- 手順
- ステップ
- 停止
- 停止
- ストレージ利用料
- 流れ
- 構造
- 提出された
- そのような
- 概要
- サポート
- 同期
- テーブル
- テーラード
- 取る
- テンソルフロー
- より
- それ
- アプリ環境に合わせて
- それら
- そこ。
- それによって
- したがって、
- ボーマン
- この
- 介して
- 全体
- 層
- 時間
- タイムライン
- タイムライン
- <font style="vertical-align: inherit;">回数</font>
- 〜へ
- top
- 追跡する
- 追跡
- トレーニング
- トレーニング
- 転送
- 旅行
- ツリー
- トライアル
- 数兆
- 2
- 一般的に
- ui
- 最終的に
- 理解する
- us
- つかいます
- 中古
- ユーザー
- ユーザーインターフェース
- users
- さまざまな
- バージョン
- バージョン
- 詳しく見る
- バージニア州
- vs
- 欲しいです
- ました
- we
- ウェブ
- Webサービス
- ウェスト
- いつ
- which
- while
- 意志
- 無し
- 作品
- でしょう
- ラップ
- You
- あなたの
- ゼファーネット
- ズーム