Amazon Debugger SageMaker のベストプラクティス - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Debugger SageMaker のベストプラクティス

デバッガーを使ってトレーニングジョブを実行する場合は、次のガイドラインに従ってください。

機械学習フレームワークを選択する

機械学習フレームワークを選択し、 SageMaker 構築済みのトレーニングコンテナまたは独自のコンテナを使用できます。デバッガーを使用してトレーニングとパフォーマンスの問題を検出し、 でトレーニングジョブのトレーニングの進行状況を分析します SageMaker。 SageMaker には、Amazon EC2 でモデルをトレーニングするために、多数の機械学習フレームワーク環境用に準備された構築済みコンテナを使用するオプションが用意されています。トレーニングジョブは、深 AWS 層学習コンテナ、 SageMaker トレーニングコンテナ、カスタムコンテナで実行するように調整できます。

Studio デバッガーインサイトダッシュボードを使用する

Studio デバッガーのインサイトダッシュボードを使うと、トレーニングジョブを管理できます。Studio デバッガーダッシュボードを使って、Amazon EC2 インスタンス上のモデルのパフォーマンスを管理され最適化された状態に保つことができます。Amazon EC2 インスタンスで実行されている SageMaker トレーニングジョブの場合、デバッガーはリソース使用率と基本的なモデル出力データ (損失値と精度値) をモニタリングします。Studio デバッガーダッシュボードを使って、トレーニングジョブに関するインサイトを得て、モデルトレーニングのパフォーマンスを向上させます。詳細については、「Amazon SageMaker Studio Classic Experiments の Amazon SageMaker デバッガー UI」を参照してください。

デバッガーレポートをダウンロードして、より多くのインサイトを得る

デバッガーレポートで集約結果を表示しインサイトを得ることができます。デバッガーは、組み込みのルール分析から収集されたトレーニングとプロファイリングの結果を、トレーニングジョブごとにレポートに集約します。デバッガーレポートを通じてトレーニング結果の詳細情報を確認できます。詳細については、「SageMaker デバッガーインタラクティブレポート」を参照してください。

トレーニングジョブからデータをキャプチャし、Amazon S3 にデータを保存する

デバッガーフックを使って、出力テンソルを保存できます。トレーニングスクリプトに合うコンテナとフレームワークを選択したら、デバッガーフックを使って、保存するテンソルと保存先のディレクトリ (Amazon S3 バケットなど) を設定します。デバッガーフックを使用すると、設定を構築し、それをアカウントに保持してその後の分析に使用できます。そこで設定は、最大限の秘密保持が図られたアプリケーションによって使用のために保護されます。詳細については、「テンソルを保存するように SageMaker デバッガーを設定する」を参照してください。

デバッガー組み込みルールのフリートを使ってデータを分析する

デバッガーの組み込みルールを使って、トレーニングジョブと並行してテンソルを検査できます。トレーニングパフォーマンスデータを分析するために、デバッガーには、異常なトレーニングプロセスの動作を監視する組み込みルールが用意されています。例えば、デバッガールールは、トレーニングプロセスでシステムボトルネックの問題やトレーニングの問題 (勾配消失、テンソルの爆発、オーバーフィット、オーバートレーニングなど) が発生した場合に問題を検出します。必要に応じて、独自の基準のルール定義を作成してトレーニング問題を規定することで、カスタマイズされたルールを作成することもできます。デバッガールールの詳細については、デバッガーの組み込みルールを設定する「」で Amazon SageMaker Python SDK を使用する詳細な手順を参照してください。デバッガー組み込みルールの完全なリストについては、「デバッガーの組み込みルールのリスト」を参照してください。カスタムルールを作成する場合は、「トレーニングジョブ分析用のデバッガーカスタムルールを作成する」を参照してください。

組み込みルールのステータスに基づいてアクションを実行する

デバッガーは Amazon CloudWatch Events および で使用できます AWS Lambda。トレーニングジョブの早期停止、メールまたはテキストによる通知の設定など、ルールのステータスに基づいてアクションを自動化できます。デバッガールールが問題を検出し、"IssuesFound"評価ステータスをトリガーすると、 CloudWatch Events はルールステータスの変更を検出し、Lambda 関数を呼び出してアクションを実行します。トレーニングの問題に対する自動アクションを設定するには、「Amazon CloudWatch と を使用して ルールのアクションを作成する AWS Lambda」を参照してください。

SMDebug クライアントライブラリを使ってデータを深く掘り下げる

SMDebug ツールを使って、デバッガーによって収集されたトレーニングデータにアクセスして分析できます。TrainingJobcreate_trial クラスは、デバッガーによって保存されたメトリクスとテンソルをロードします。これらのクラスは、リアルタイムまたはトレーニング終了後にデータを分析するための拡張クラスメソッドを提供します。SMDebug ライブラリには、フレームワークメトリクスのタイムラインをマージしてさまざまなプロファイリングを集約するツール、システム使用率を追跡するための折れ線グラフとヒートマップ、ステップ期間の外れ値を見つけるためのヒストグラムなど、視覚化ツールも用意されています。SMDebug ライブラリツールの詳細については、「Debugger Python クライアントライブラリを使用してデータを分析する」を参照してください。

トレーニングジョブメトリクスのモニタリングと分析を行う

Amazon CloudWatch は高解像度のカスタムメトリクス をサポートしており、その最高解像度は 1 秒です。 https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.htmlただし、解像度が細かいほど、メトリクスの CloudWatch有効期間が短くなります。1 秒の頻度解決では、 CloudWatch メトリクスは 3 時間使用できます。 CloudWatch メトリクスの解像度と有効期間の詳細については、Amazon CloudWatch API リファレンスGetMetric「統計」を参照してください。

トレーニングジョブをより細かく 100 ミリ秒 (0.1 秒) の精度でプロファイリングし、トレーニングメトリクスを Amazon S3 に無期限に保存してカスタム分析を行う場合は、Amazon SageMaker Debugger の使用を検討してください。 SageMaker Debugger は、一般的なトレーニング問題を自動的に検出するための組み込みルールを提供します。ハードウェアリソース使用率の問題 (CPU、GPU、I/O のボトルネックなど) と非収束モデルの問題 (オーバーフィット、勾配の消失、テンソルの爆発など) を検出します。

SageMaker デバッガーは、Studio Classic とそのプロファイリングレポートを通じて視覚化も提供します。CPU コアと GPU コアのリソース使用率を蓄積し、複数のインスタンスにわたってそれらの平均化する CloudWatch メトリクスとは異なり、デバッガーは各コアの使用率を追跡します。これにより、より大きなコンピューティングクラスターにスケールアップする際に、ハードウェアリソースの不均衡な使用を特定できます。デバッガーの視覚化については、SageMaker 「デバッガーインサイトダッシュボードチュートリアル」、「デバッガープロファイリングレポートチュートリアル」、およびSMDebug Client Library を使用したデータの分析」を参照してください。

システム使用率をモニタリングしボトルネックを検出する

Amazon SageMaker Debugger モニタリングを使用すると、Amazon EC2 インスタンスのハードウェアシステムリソース使用率を測定できます。モニタリングは、 SageMaker フレームワーク推定器 (TensorFlow、 PyTorch、MXNet ) と汎用 SageMaker推定器 (SageMaker 組み込みアルゴリズムと独自のカスタムコンテナ) を使用して構築された SageMaker トレーニングジョブで使用できます。モニタリング用のデバッガー組み込みルールは、システムボトルネック問題を検出し、通知します。

デバッガーシステムモニタリングを有効にする方法については、「Amazon SageMaker Debugger Python モジュールを使用して基本的なプロファイリングのパラメータを使用して推定器を設定する」、「システムリソース使用率の基本的なプロファイリング設定を行う」の順に参照してください。

モニタリング用の組み込みルールの完全なリストについては、「ハードウェアシステムのリソース使用率 (システムメトリクス)をプロファイリングするための Debugger 組み込みルール」を参照してください。

フレームワークオペレーションのプロファイリング

Amazon SageMaker Debugger プロファイリングを使用すると、深層学習フレームワークオペレーションをプロファイリングできます。モデルトレーニングは、 SageMaker TensorFlow トレーニングコンテナ、 SageMaker PyTorch フレームワークコンテナ、および独自のトレーニングコンテナを使用してプロファイリングできます。デバッガーのプロファイリング機能を使って、トレーニングジョブを実行するために実行される Python 演算子と関数をドリルダウンできます。デバッガーは、詳細なプロファイリング、Python プロファイリング、データローダープロファイリング、 Horovod 分散トレーニングプロファイリングをサポートしています。プロファイルされたタイムラインをマージして、システムのボトルネックと関連付けることができます。プロファイリング用のデバッガー組み込みルールは、トレーニング開始前のデータのダウンロードによる過剰なトレーニング初期化時間や、トレーニングループにおけるステップ期間の外れ値など、フレームワークオペレーション関連の問題を監視します。

フレームワークのプロファイリングのためにデバッガーを設定する方法については、「Amazon SageMaker Debugger Python モジュールを使用して基本的なプロファイリングのパラメータを使用して推定器を設定する」、「フレームワークプロファイリング用に設定する」の順に参照してください。

プロファイリングに使用できる組み込みルールの完全なリストについては、「フレームワークメトリクスをプロファイリングするための Debugger 組み込みルール」を参照してください。

モデル出力テンソルのデバッグ

デバッグは、深層学習コンテナと SageMaker トレーニングコンテナを使用する AWS 深層学習フレームワークで使用できます。完全にサポートされているフレームワークのバージョン (「サポート対象のアルゴリズムとフレームワーク」のバージョンを参照) の場合、デバッガーは自動的にフックを登録して出力テンソルを収集し、トレーニングスクリプトを直接実行できます。アスタリスク記号が 1 つ付いているバージョンの場合、テンソルを収集するためにフックを手動で登録する必要があります。デバッガーは、さまざまなフレームワークで利用できる一般化された名前を持つ事前設定されたテンソルコレクションを提供します。出力テンソル設定をカスタマイズする場合は、 CollectionConfig および DebuggerHookConfig API オペレーションと Amazon SageMaker Python SDK を使用して独自のテンソルコレクションを設定することもできます。デバッグ用のデバッガー組み込みルールは、出力テンソルを分析し、モデルの損失関数最小化を妨げるモデル最適化の問題を特定します。例えば、ルールは、オーバーフィット、オーバートレーニング、損失が減少しない、テンソルの爆発、勾配消失などの問題を特定します。

出力テンソルをデバッグするためにデバッガーを設定する方法については、「ステップ 2: SageMaker Python SDK を使用してトレーニングジョブを起動およびデバッグする」、「テンソルを保存するように SageMaker デバッガーを設定する」の順に参照してください。

デバッグに使用できる組み込みルールの完全なリストについては、「モデルトレーニングデータ (出力テンソル) をデバッグするためのデバッガー組み込みルール」を参照してください。