TensorBoard を使用して Amazon のトレーニングジョブをデバッグおよび分析する SageMaker - Amazon SageMaker

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

TensorBoard を使用して Amazon のトレーニングジョブをデバッグおよび分析する SageMaker

Amazon SageMaker with TensorBoard は Amazon の一機能 SageMaker で、 の視覚化ツールを TensorBoardに持ち込み SageMaker、 SageMaker トレーニングとドメインと統合します。ドメイン を通じてアカウント AWS とアカウント に属するユーザーを管理し、ドメインユーザーに Amazon S3 への適切なアクセス許可で TensorBoard データへのアクセスを許可し、ドメインユーザーが TensorBoard 視覚化プラグインを使用してモデルデバッグタスクを実行するのを支援するオプションを提供します。 SageMaker TensorBoard は SageMaker Data Manager プラグインで拡張され、ドメインユーザーはアプリケーション内の TensorBoard 1 か所で多数のトレーニングジョブにアクセスできます。 SageMaker Amazon S3

注記

この機能は、 PyTorch または TensorFlow フレームワークを使用して深層学習モデルをトレーニングおよびデバッグするためのものです。

データサイエンティスト向け

大規模なモデルをトレーニングすると、モデルの収束性を改善して勾配降下プロセスを安定させるために、データサイエンティストがデバッグして解決しなければならない科学的な問題が発生する可能性があります。

損失が収束しない、重みや勾配が消失したり爆発的に増加したりするなど、モデルトレーニングの問題が発生した場合は、テンソルデータにアクセスしてモデルパラメータ、スカラー、カスタムメトリクスを詳細に分析する必要があります。 SageMaker で を使用すると TensorBoard、トレーニングジョブから抽出されたモデル出力テンソルを視覚化できます。さまざまなモデル、複数のトレーニング実行、モデルのハイパーパラメータを試すと、 で複数のトレーニングジョブを選択し TensorBoard 、それらを 1 か所で比較できます。

管理者向け

SageMaker コンソールまたはSageMaker ドメイン の TensorBoard ランディングページから、 AWS アカウントまたは SageMakerドメインの管理者であれば、 TensorBoard アプリケーションユーザーを管理できます。各ドメインユーザーは、付与されたアクセス許可があれば、独自の TensorBoard アプリケーションにアクセスできます。 SageMaker ドメイン管理者およびドメインユーザーは、アクセス許可レベルに応じて TensorBoard アプリケーションを作成および削除できます。

サポートされているフレームワークと AWS リージョン

この機能では、次の機械学習フレームワークと AWS リージョンをサポートしています。

フレームワーク
  • PyTorch

  • TensorFlow

  • Hugging Face Transformer

AWS リージョン
  • 米国東部 (バージニア北部) (us-east-1)

  • 米国東部 (オハイオ) (us-east-2)

  • 米国西部 (オレゴン) (us-west-2)

  • 欧州 (フランクフルト) (eu-central-1)

  • 欧州 (アイルランド) (eu-west-1)

注記

Amazon SageMaker with はml.r5.largeインスタンスで TensorBoard アプリケーション TensorBoard を実行し、機能の SageMaker 無料利用枠または無料トライアル期間後に料金が発生します。詳細については、「Amazon SageMaker 料金表」を参照してください。

前提条件

次のリストは、 SageMaker で の使用を開始するための前提条件を示しています TensorBoard。

TensorBoard 出力データ設定を使用してトレーニングジョブを準備する

深層学習の一般的なトレーニングジョブ SageMaker は、トレーニングスクリプトの準備とトレーニングジョブランチャーの設定という 2 SageMaker つの主要なステップで構成されます。このセクションでは、トレーニングから TensorBoard SageMaker 互換データを収集するために必要な変更を確認できます。

ステップ 1: トレーニングスクリプトを変更する

収集する出力テンソルとスカラーを決定し、 TensorBoardX、 TensorFlow サマリーライター、 PyTorch サマリーライター、または SageMaker デバッガーのいずれかのツールを使用してトレーニングスクリプトのコード行を変更してください。

また、 TensorBoard データ出力パスをトレーニングコンテナのコールバックのログディレクトリ (log_dir) として指定してください。

フレームワークごとのコールバックについて詳しくは、次のリソースを参照してください。

ステップ 2: TensorBoard データ設定を使用してトレーニングランチャーを構築する SageMaker

SageMaker フレームワーク推定器を設定するsagemaker.debugger.TensorBoardOutputConfigときは、 を使用します。この設定 API は、トレーニングコンテナ () のローカルパスを使用して TensorBoard データを保存するために指定した S3 バケットをマッピングします/opt/ml/output/tensorboard。モジュールのオブジェクトを推定器クラスの tensorboard_output_config パラメータに渡します。次のコードスニペットは、 TensorBoard 出力設定パラメータを使用して TensorFlow 推定器を準備する例を示しています。

注記

この例では、 SageMaker Python SDK を使用することを前提としています。低レベル SageMaker API を使用する場合は、CreateTrainingJobAPI のリクエスト構文に以下を含める必要があります。

"TensorBoardOutputConfig": { "LocalPath": "/opt/ml/output/tensorboard", "S3OutputPath": "s3_output_bucket" }
from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import TensorBoardOutputConfig # Set variables for training job information, # such as s3_out_bucket and other unique tags. ... LOG_DIR="/opt/ml/output/tensorboard" output_path = os.path.join( "s3_output_bucket", "sagemaker-output", "date_str", "your-training_job_name" ) tensorboard_output_config = TensorBoardOutputConfig( s3_output_path=os.path.join(output_path, 'tensorboard'), container_local_output_path=LOG_DIR ) estimator = TensorFlow( entry_point="train.py", source_dir="src", role=role, image_uri=image_uri, instance_count=1, instance_type="ml.c5.xlarge", base_job_name="your-training_job_name", tensorboard_output_config=tensorboard_output_config, hyperparameters=hyperparameters )

TensorBoard で にアクセスする方法 SageMaker

には、署名なし URL または署名付き URL を生成するsagemaker.interactive_apps.tensorboardモジュールをプログラムで使用する方法と、 SageMaker コンソールの TensorBoard ランディングページを使用する方法の TensorBoard 2 つの方法でアクセスできます。を開くと TensorBoard、 は TensorBoard プラグイン SageMaker を実行し、互換性のある TensorBoardファイル形式ですべてのトレーニングジョブ出力データを自動的に検出します。

sagemaker.interactive_apps.tensorboard モジュール TensorBoard を使用して を開く

sagemaker.interactive_apps.tensorboard モジュールは、 または Amazon EC2 の任意の環境で TensorBoard アプリケーションを開くための署名なし URL SageMaker または署名URLs get_app_urlを生成する という関数を提供します。これは、Studio Classic ユーザーと Studio Classic 以外のユーザーの両方に統一されたエクスペリエンスを提供するためです。Studio 環境では、 get_app_url()関数をそのまま実行 TensorBoard して を開くことも、 TensorBoard アプリケーションが開いたときに追跡を開始するジョブ名を指定することもできます。Studio Classic 以外の環境では、ドメインとユーザープロファイル情報をユーティリティ関数に提供することで を開く TensorBoardことができます。この機能を使用すると、トレーニングコードを実行してトレーニングジョブを起動する場所や方法に関係なく、Jupyter ノートブックまたはターミナルで get_app_url関数を実行する TensorBoard ことで に直接アクセスできます。

注記

この機能は、 SageMaker Python SDK v2.184.0 以降で使用できます。この機能を使用するには、必ず pip install sagemaker --upgrade を実行して SDK をアップグレードしてください。

オプション 1: Studio Classic の場合 SageMaker

SageMaker Studio Classic を使用している場合は、次のように get_app_url関数を実行して、 TensorBoardアプリケーションを直接開いたり、署名されていない URL を取得したりできます。Studio Classic 環境内に既にあり、ドメインユーザーとしてサインインしているため、 は署名なし URL get_app_url()を生成します。これは、再度認証する必要がないためです。

TensorBoard アプリケーションを開くには

次のコードは、get_app_url()関数が環境のデフォルトのウェブブラウザで返す署名なし URL から TensorBoard アプリケーションを自動的に開きます。

from sagemaker.interactive_apps import tensorboard region = "us-west-2" app = tensorboard.TensorBoardApp(region) app.get_app_url( training_job_name="your-training_job_name" # Optional. Specify the job name to track a specific training job )

署名なし URL を取得してアプリケーションを手動で開く TensorBoardには

次のコードは、ウェブブラウザにコピーして TensorBoard アプリケーションを開くことができる署名なし URL を出力します。

from sagemaker.interactive_apps import tensorboard region = "us-west-2" app = tensorboard.TensorBoardApp(region) print("Navigate to the following URL:") print( app.get_app_url( training_job_name="your-training_job_name", # Optional. Specify the name of the job to track. open_in_default_web_browser=False # Set to False to print the URL to terminal. ) )

Studio Classic 環境外で SageMaker前述の 2 つのコードサンプルを実行すると、ドメインとユーザープロファイルへの TensorBoardサインイン情報がないため、関数は SageMaker コンソールのランディングページに URL を返します。署名済み URL の作成については、次のセクションのオプション 2 を参照してください。

オプション 2: Studio Classic 以外の環境の場合

ノートブックインスタンスや Amazon EC2 などの Studio Classic SageMaker 以外の環境を使用していて、その環境 TensorBoard から直接 を開く場合は、ドメインとユーザープロファイル情報で署名された URL を生成する必要があります。署名付き URL は、ドメインとユーザープロファイルで URL が作成されている間に Amazon SageMaker Studio Classic にサインインする URL です。したがって、ドメインに関連付けられているすべてのドメインアプリケーションとファイルへのアクセスが許可されます。署名付き URL TensorBoard で を開くには、次のようにドメインとユーザープロファイル名で get_app_url関数を使用します。

このオプションでは、ドメインユーザーに アクセスsagemaker:CreatePresignedDomainUrl許可が必要です。アクセス許可がないと、ドメインユーザーは例外エラーを受け取ります。

重要

署名済み URL は共有しないでください。このget_app_url関数は署名付き URLsを作成します。これにより、ドメインとユーザープロファイルで自動的に認証され、ドメインに関連付けられたアプリケーションとファイルへのアクセスが付与されます。

print( app.get_app_url( training_job_name="your-training_job_name", # Optional. Specify the name of the job to track. create_presigned_domain_url=True, # Reguired to be set to True for creating a presigned URL. domain_id="your-domain-id", # Required if creating a presigned URL (create_presigned_domain_url=True). user_profile_name="your-user-profile-name", # Required if creating a presigned URL (create_presigned_domain_url=True). open_in_default_web_browser=False, # Optional. Set to False to print the URL to terminal. optional_create_presigned_url_kwargs={} # Optional. Add any additional args for Boto3 create_presigned_domain_url ) )
ヒント

このget_app_url関数は、バックエンドの AWS SDK for Python (Boto3) で SageMaker.Client.create_presigned_domain_url API を実行します。Boto3 create_presigned_domain_url API はデフォルトで 300 秒で期限切れになる署名付きドメイン URLs を作成するため、署名付き TensorBoard アプリケーション URLs も 300 秒で期限切れになります。有効期限を延長したい場合は、以下のように optional_create_presigned_url_kwargs 引数を ExpiresInSeconds 関数の get_app_url 引数に渡します。

optional_create_presigned_url_kwargs={"ExpiresInSeconds": 1500}
注記

の引数に渡された入力のいずれかが無効である場合、関数get_app_urlは TensorBoard アプリケーションを開く代わりにラン TensorBoard ディングページに URL を出力します。出力メッセージは次のようになります。

Navigate to the following URL: https://us-west-2.console.aws.amazon.com/sagemaker/home?region=us-west-2#/tensor-board-landing

get_app_url 関数 TensorBoard をestimatorクラスメソッドとして使用して を開く

SageMaker Python SDK の estimator クラスを使用してトレーニングジョブを実行中で、 estimator クラスのアクティブなオブジェクトがある場合は、 関数に estimator get_app_url クラスのクラスメソッドとしてアクセスすることもできます。次のように get_app_urlメソッドを実行して、 TensorBoard アプリケーションを開くか、署名されていない URL を取得します。get_app_url クラスメソッドは、推定器からトレーニングジョブ名を取得し、指定されたジョブで TensorBoard アプリケーションを開きます。

注記

この機能は、 SageMaker Python SDK v2.184.0 以降で使用できます。この機能を使用するには、必ず pip install sagemaker --upgrade を実行して SDK をアップグレードしてください。

オプション 1: SageMaker Studio Classic の場合

TensorBoard アプリケーションを開くには

次のコードは、 get_app_url()メソッドが環境のデフォルトのウェブブラウザで返す署名なし URL から TensorBoard アプリケーションを自動的に開きます。

estimator.get_app_url( app_type=SupportedInteractiveAppTypes.TENSORBOARD # Required. )

署名なし URL を取得してアプリケーションを手動で開く TensorBoardには

次のコードは、ウェブブラウザにコピーして TensorBoard アプリケーションを開くことができる署名なし URL を出力します。

print( estimator.get_app_url( app_type=SupportedInteractiveAppTypes.TENSORBOARD, # Required. open_in_default_web_browser=False, # Optional. Set to False to print the URL to terminal. ) )

Studio Classic 環境外で SageMaker前述の 2 つのコードサンプルを実行すると、ドメインとユーザープロファイルへの TensorBoardサインイン情報がないため、関数は SageMaker コンソールのランディングページに URL を返します。署名済み URL の作成については、次のセクションのオプション 2 を参照してください。

オプション 2: Studio Classic 以外の環境の場合

ノートブックインスタンスや Amazon EC2 などの Studio Classic SageMaker 以外の環境を使用していて、 TensorBoard アプリケーションを開くための署名付き URL を生成する場合は、次のようにドメインとユーザープロファイル情報で get_app_urlメソッドを使用します。

このオプションでは、ドメインユーザーに アクセスsagemaker:CreatePresignedDomainUrl許可が必要です。アクセス許可がないと、ドメインユーザーは例外エラーを受け取ります。

重要

署名済み URL は共有しないでください。このget_app_url関数は署名付き URLsを作成します。これにより、ドメインとユーザープロファイルで自動的に認証され、ドメインに関連付けられたアプリケーションとファイルへのアクセスが付与されます。

print( estimator.get_app_url( app_type=SupportedInteractiveAppTypes.TENSORBOARD, # Required create_presigned_domain_url=True, # Reguired to be set to True for creating a presigned URL. domain_id="your-domain-id", # Required if creating a presigned URL (create_presigned_domain_url=True). user_profile_name="your-user-profile-name", # Required if creating a presigned URL (create_presigned_domain_url=True). open_in_default_web_browser=False, # Optional. Set to False to print the URL to terminal. optional_create_presigned_url_kwargs={} # Optional. Add any additional args for Boto3 create_presigned_domain_url ) )

コンソール TensorBoard から を開く SageMaker

SageMaker コンソール UI を使用して TensorBoard アプリケーションを開くこともできます。 SageMaker コンソールから TensorBoard アプリケーションを開くには、2 つのオプションがあります。

オプション 1: ドメインの詳細ページ TensorBoard から を起動する

ドメインの詳細ページに移動する

次の手順は、ドメインの詳細ページに移動する方法を示しています。

  1. https://console.aws.amazon.com/sagemaker/ で Amazon SageMaker コンソールを開きます。

  2. 左のナビゲーションペインで、[管理設定‭] を選択します。

  3. 管理者設定 で、ドメイン を選択します。

  4. ドメインのリストから、 TensorBoard アプリケーションを起動するドメインを選択します。

ユーザープロファイルアプリケーションを起動する

次の手順は、ユーザープロファイルを対象とする Studio Classic アプリケーションを起動する方法を示しています。

  1. ドメインの詳細ページで、ユーザープロファイルタブを選択します。

  2. Studio Classic アプリケーションを起動するユーザープロファイルを特定します。

  3. 選択したユーザープロファイルの起動を選択し、 を選択しますTensorBoard

オプション 2: TensorBoard ランディングページ TensorBoard から を起動する

次の手順では、ラン TensorBoard ディングページから TensorBoard アプリケーションを起動する方法について説明します。

  1. https://console.aws.amazon.com/sagemaker/ で Amazon SageMaker コンソールを開きます。

  2. 左側のナビゲーションペインで、 を選択しますTensorBoard

  3. 開始方法 で、Studio Classic アプリケーションを起動するドメインを選択します。ユーザープロファイルが 1 つのドメインにのみ属している場合、ドメインを選択するオプションは表示されません。

  4. Studio Classic アプリケーションを起動するユーザープロファイルを選択します。ドメインにユーザープロファイルがない場合は、ユーザープロファイルの作成 を選択します。詳細については、「ユーザープロファイルの追加と削除」を参照してください。

  5. Open TensorBoardを選択します。

次のスクリーンショットは、 SageMaker コンソールの TensorBoard 左側のナビゲーションペインの の場所と、メインペインの TensorBoard ランディングページ SageMaker がある を示しています。

TensorBoard ランディングページ

でのトレーニング出力データへのアクセスと視覚化 TensorBoard

トレーニング中またはトレーニング後に S3 バケットから収集した出力テンソルをトレーニングジョブと組み合わせて読み込むことで、オンラインまたはオフラインの分析を行うことができます。

TensorBoard アプリケーションを開くと、 が SageMaker Data Manager タブで TensorBoard 開きます。次のスクリーンショットは、 TensorBoard アプリケーションの SageMaker Data Manager タブの全容を示しています。

TensorBoard アプリケーションの SageMaker Data Manager タブのスクリーンショット

SageMaker Data Manager タブでは、任意のトレーニングジョブを選択し、Amazon S3 から TensorBoard互換のトレーニング出力データをロードできます。

  1. [トレーニングジョブの検索] セクションでは、フィルターを使用して、検索、読み込み、視覚化したいトレーニングジョブのリストを絞り込みます。

  2. [トレーニングジョブのリスト] セクションでは、チェックボックスを使用して、データを取得してデバッグ用に視覚化したいトレーニングジョブを選択します。

  3. [選択したジョブを追加] を選択します。次のスクリーンショットのように、選択したジョブが [追跡されたトレーニングジョブ] セクションに表示されるはずです。

    TensorBoard アプリケーションの SageMaker Data Manager タブにある Tracked training jobs セクションのスクリーンショット
注記

SageMaker Data Manager タブには、 TensorBoardOutputConfigパラメータで設定されたトレーニングジョブのみが表示されます。このパラメータで SageMaker 推定器が設定されていることを確認します。詳細については、「ステップ 2: TensorBoard データ設定を使用してトレーニングランチャーを構築する SageMaker 」を参照してください。

注記

を SageMaker TensorBoard で初めて使用している場合、または以前の使用からデータがロードされていない場合、視覚化タブが表示されないことがあります。トレーニングジョブを追加して数秒待ってから、右上にある時計回りの円状の矢印を選択してビューワーを更新します。ジョブデータが正常に読み込まれると、視覚化タブが表示されるはずです。右上にある更新ボタンの横の [設定] ボタンを使用して、自動更新を設定することもできます。

で視覚化されたトレーニング出力データを調べる TensorBoard

グラフィックスタブでは、左側のペインに読み込まれたトレーニングジョブのリストが表示されます。トレーニングジョブのチェックボックスを使用して、視覚化の表示と非表示を切り替えることもできます。 TensorBoard 動的プラグインは、テンソルおよびスカラーコレクションのサマリーライターとパスコールバックを含めるようにトレーニングスクリプトを設定する方法に応じて動的にアクティブ化されるため、グラフィックタブも動的に表示されます。以下のスクリーンショットは、時系列、スカラー、グラフ、ディストリビューション、ヒストグラムプラグインのメトリクスを収集した 2 つのトレーニングジョブを視覚化した各タブの表示例を示しています。

時系列タブ表示

追跡のために選択したトレーニングジョブ TensorBoard のデータと、メインペインのシリアル化されたヒストグラムプロットを示す TIME SERIES タブのスクリーンショット .

スカラータブ表示

メインペインのステップ (またはエポック) に関して、追跡対象として選択したトレーニングジョブ TensorBoard のデータと、精度や損失などのスカラー値のプロットを示す SCALARS タブのスクリーンショット。

グラフタブ表示

選択したトレーニングジョブのモデルグラフが表示されている[グラフ] タブのスクリーンショット。

ディストリビューションタブ表示

追跡対象として選択したトレーニングジョブ TensorBoard のデータと、メインペインのステップ (またはエポック) に関するバイアスやカーネルなどのモデルパラメータの分布の変化を示す DISTRIBUTIONS タブのスクリーンショット。

ヒストグラムタブ表示

メインペインで、追跡対象として選択したトレーニングジョブ TensorBoard のデータと、バイアスやカーネルなどのモデルパラメータのシリアル化されたヒストグラムを示す HISTOGRAMS タブのスクリーンショット。

未使用の TensorBoard アプリケーションを削除する

でジョブのモニタリングと実験が完了したら TensorBoard、 TensorBoard アプリケーションをシャットダウンします。

  1. SageMaker コンソールを開きます。

  2. 左のナビゲーションペインで、[管理設定‭] を選択します。

  3. 管理者設定 で、ドメイン を選択します。

  4. ドメインを選択します。

  5. ユーザープロファイルを選択します。

  6. アプリ で、 TensorBoard 行のアプリの削除を選択します。

  7. [Yes, delete app] (はい、アプリを削除します) を選択します。

  8. テキストボックスに delete と入力し、[削除] を選択します。

  9. 画面の上部に、[デフォルトは削除中です] という青色のメッセージが表示されます。

考慮事項

SageMaker で を使用する場合は、次の点を考慮してください TensorBoard。

  • SageMaker ドメインではユーザー間の TensorBoard アプリケーション共有が許可されていないため、コラボレーション目的でアプリケーションを共有することはできません。バケットへのアクセス権があれば、ユーザーは S3 バケットに保存された出力テンソルを共有できます。

  • 視覚化プラグインは、 TensorBoard アプリケーションの初回起動時に表示されない場合があります。 SageMaker Data Manager プラグインでトレーニングジョブを選択すると、 TensorBoard アプリケーションは TensorBoard データをロードし、視覚化プラグインにデータを入力します。

  • TensorBoard アプリケーションは、1 時間の非アクティブ状態が続くと自動的にシャットダウンします。使用が終了したときにアプリケーションをシャットダウンする場合は、そのアプリケーションをホストしているインスタンスに料金が発生し TensorBoard ないように、手動でシャットダウンしてください。アプリケーションを削除する手順については、「未使用の TensorBoard アプリケーションを削除する」を参照してください。

  • の TensorBoard アプリケーション SageMaker は、 out-of-the-box SageMaker トレーニングジョブをサポートするように設計されています。この組み込み統合により、トレーニングコンテナ内のローカルディレクトリと Amazon S3 バケット間のシームレスなマッピングが可能になり、CreateTrainingJobAPI レイヤーで容易になります。この統合により、 TensorBoard 「出力データ設定を使用してトレーニングジョブを準備する」セクションで説明されているように、ディレクトリパスを簡単かつ簡単にマッピングできます。

    ただし、CreateHyperParameterTuningJobAPI はマッピングの TensorBoard 出力設定と統合されていない out-of-the-boxため、 TensorBoard アプリケーションは SageMaker ハイパーパラメータ調整ジョブをサポートしていないことに注意してください。ハイパーパラメータチューニングジョブに TensorBoard アプリケーションを使用するには、トレーニングスクリプトで Amazon S3 にメトリクスをアップロードするためのコードを記述する必要があります。メトリクスが Amazon S3 バケットにアップロードされたら、バケットを のアプリケーションに TensorBoardロードできます SageMaker。