翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
TensorBoard を使用して Amazon のトレーニングジョブをデバッグおよび分析する SageMaker
Amazon SageMaker with TensorBoard は Amazon の一機能 SageMaker で、 の視覚化ツールを TensorBoard
注記
この機能は、 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。
-
AWS アカウントの Amazon VPC でセットアップされる SageMaker ドメイン。
ドメインの設定手順については、「クイックセットアップを使用して Amazon SageMaker ドメインにオンボードする」を参照してください。また、個々のユーザーが TensorBoard の にアクセスするには、ドメインユーザープロファイルを追加する必要があります SageMaker。詳細については、 SageMaker 「ドメインユーザープロファイルの追加と削除」を参照してください。
-
次のリストは、 TensorBoard で を使用するためのアクセス許可の最小セットです SageMaker。
-
sagemaker:CreateApp
-
sagemaker:DeleteApp
-
sagemaker:DescribeTrainingJob
-
sagemaker:Search
-
s3:GetObject
-
s3:ListBucket
-
TensorBoard 出力データ設定を使用してトレーニングジョブを準備する
深層学習の一般的なトレーニングジョブ SageMaker は、トレーニングスクリプトの準備とトレーニングジョブランチャーの設定という 2 SageMaker つの主要なステップで構成されます。このセクションでは、トレーニングから TensorBoard SageMaker 互換データを収集するために必要な変更を確認できます。
ステップ 1: トレーニングスクリプトを変更する
収集する出力テンソルとスカラーを決定し、 TensorBoardX、 TensorFlow サマリーライター、 PyTorch サマリーライター、または SageMaker デバッガーのいずれかのツールを使用してトレーニングスクリプトのコード行を変更してください。
また、 TensorBoard データ出力パスをトレーニングコンテナのコールバックのログディレクトリ (log_dir
) として指定してください。
フレームワークごとのコールバックについて詳しくは、次のリソースを参照してください。
-
には PyTorch、torch.utils.tensorboard を使用しますSummaryWriter
。チュートリアルの「 TensorBoard での の使用 PyTorch 」セクションと「ログスカラー」セクションも参照してください。 https://pytorch.org/tutorials/recipes/recipes/tensorboard_with_pytorch.html#log-scalars PyTorch または、TensorBoardX Summary Writer を使用することもできます。 LOG_DIR="/opt/ml/output/tensorboard" tensorboard_callback=torch.utils.tensorboard.writer.SummaryWriter(log_dir=LOG_DIR)
-
には TensorFlow、、tf.keras.callbacks TensorBoardのネイティブコールバックを使用します。 TensorBoard
LOG_DIR="/opt/ml/output/tensorboard" tensorboard_callback=tf.keras.callbacks.TensorBoard( log_dir=LOG_DIR, histogram_freq=1)
-
を使用する Transformers では PyTorch、transformers.integrations を使用できますTensorBoardCallback
。 を使用する Transformers の場合 TensorFlow、 を使用し
tf.keras.tensorboard.callback
、それを Transformers の keras コールバックに渡します。ヒント
別のコンテナのローカル出力パスを使用することもできます。ただし、 ではステップ 2: TensorBoard データ設定を使用してトレーニングランチャーを構築する SageMaker 、ローカルパスを正常に検索し、S3 出力バケットに TensorBoard データを保存する SageMaker には、 のパスを正しくマッピングする必要があります。
-
SageMaker デバッガー Python ライブラリを使用してトレーニングスクリプトを変更するガイダンスについては、「」を参照してくださいステップ 1: フックを登録するためにトレーニングスクリプトを適応させる。
ステップ 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
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 から を起動する
ドメインの詳細ページに移動する
次の手順は、ドメインの詳細ページに移動する方法を示しています。
-
https://console.aws.amazon.com/sagemaker/
で Amazon SageMaker コンソールを開きます。 -
左のナビゲーションペインで、[管理設定] を選択します。
-
管理者設定 で、ドメイン を選択します。
-
ドメインのリストから、 TensorBoard アプリケーションを起動するドメインを選択します。
ユーザープロファイルアプリケーションを起動する
次の手順は、ユーザープロファイルを対象とする Studio Classic アプリケーションを起動する方法を示しています。
-
ドメインの詳細ページで、ユーザープロファイルタブを選択します。
-
Studio Classic アプリケーションを起動するユーザープロファイルを特定します。
-
選択したユーザープロファイルの起動を選択し、 を選択しますTensorBoard。
オプション 2: TensorBoard ランディングページ TensorBoard から を起動する
次の手順では、ラン TensorBoard ディングページから TensorBoard アプリケーションを起動する方法について説明します。
-
https://console.aws.amazon.com/sagemaker/
で Amazon SageMaker コンソールを開きます。 -
左側のナビゲーションペインで、 を選択しますTensorBoard。
-
開始方法 で、Studio Classic アプリケーションを起動するドメインを選択します。ユーザープロファイルが 1 つのドメインにのみ属している場合、ドメインを選択するオプションは表示されません。
-
Studio Classic アプリケーションを起動するユーザープロファイルを選択します。ドメインにユーザープロファイルがない場合は、ユーザープロファイルの作成 を選択します。詳細については、「ユーザープロファイルの追加と削除」を参照してください。
-
Open TensorBoardを選択します。
次のスクリーンショットは、 SageMaker コンソールの TensorBoard 左側のナビゲーションペインの の場所と、メインペインの TensorBoard ランディングページ SageMaker がある を示しています。
でのトレーニング出力データへのアクセスと視覚化 TensorBoard
トレーニング中またはトレーニング後に S3 バケットから収集した出力テンソルをトレーニングジョブと組み合わせて読み込むことで、オンラインまたはオフラインの分析を行うことができます。
TensorBoard アプリケーションを開くと、 が SageMaker Data Manager タブで TensorBoard 開きます。次のスクリーンショットは、 TensorBoard アプリケーションの SageMaker Data Manager タブの全容を示しています。
SageMaker Data Manager タブでは、任意のトレーニングジョブを選択し、Amazon S3 から TensorBoard互換のトレーニング出力データをロードできます。
-
[トレーニングジョブの検索] セクションでは、フィルターを使用して、検索、読み込み、視覚化したいトレーニングジョブのリストを絞り込みます。
-
[トレーニングジョブのリスト] セクションでは、チェックボックスを使用して、データを取得してデバッグ用に視覚化したいトレーニングジョブを選択します。
-
[選択したジョブを追加] を選択します。次のスクリーンショットのように、選択したジョブが [追跡されたトレーニングジョブ] セクションに表示されるはずです。
注記
SageMaker Data Manager タブには、 TensorBoardOutputConfig
パラメータで設定されたトレーニングジョブのみが表示されます。このパラメータで SageMaker 推定器が設定されていることを確認します。詳細については、「ステップ 2: TensorBoard データ設定を使用してトレーニングランチャーを構築する SageMaker 」を参照してください。
注記
を SageMaker TensorBoard で初めて使用している場合、または以前の使用からデータがロードされていない場合、視覚化タブが表示されないことがあります。トレーニングジョブを追加して数秒待ってから、右上にある時計回りの円状の矢印を選択してビューワーを更新します。ジョブデータが正常に読み込まれると、視覚化タブが表示されるはずです。右上にある更新ボタンの横の [設定] ボタンを使用して、自動更新を設定することもできます。
で視覚化されたトレーニング出力データを調べる TensorBoard
グラフィックスタブでは、左側のペインに読み込まれたトレーニングジョブのリストが表示されます。トレーニングジョブのチェックボックスを使用して、視覚化の表示と非表示を切り替えることもできます。 TensorBoard 動的プラグインは、テンソルおよびスカラーコレクションのサマリーライターとパスコールバックを含めるようにトレーニングスクリプトを設定する方法に応じて動的にアクティブ化されるため、グラフィックタブも動的に表示されます。以下のスクリーンショットは、時系列、スカラー、グラフ、ディストリビューション、ヒストグラムプラグインのメトリクスを収集した 2 つのトレーニングジョブを視覚化した各タブの表示例を示しています。
時系列タブ表示
スカラータブ表示
グラフタブ表示
ディストリビューションタブ表示
ヒストグラムタブ表示
未使用の TensorBoard アプリケーションを削除する
でジョブのモニタリングと実験が完了したら TensorBoard、 TensorBoard アプリケーションをシャットダウンします。
-
SageMaker コンソールを開きます。
-
左のナビゲーションペインで、[管理設定] を選択します。
-
管理者設定 で、ドメイン を選択します。
-
ドメインを選択します。
-
ユーザープロファイルを選択します。
-
アプリ で、 TensorBoard 行のアプリの削除を選択します。
-
[Yes, delete app] (はい、アプリを削除します) を選択します。
-
テキストボックスに
delete
と入力し、[削除] を選択します。 -
画面の上部に、[デフォルトは削除中です] という青色のメッセージが表示されます。
考慮事項
SageMaker で を使用する場合は、次の点を考慮してください TensorBoard。
-
SageMaker ドメインではユーザー間の TensorBoard アプリケーション共有が許可されていないため、コラボレーション目的でアプリケーションを共有することはできません。バケットへのアクセス権があれば、ユーザーは S3 バケットに保存された出力テンソルを共有できます。
-
視覚化プラグインは、 TensorBoard アプリケーションの初回起動時に表示されない場合があります。 SageMaker Data Manager プラグインでトレーニングジョブを選択すると、 TensorBoard アプリケーションは TensorBoard データをロードし、視覚化プラグインにデータを入力します。
-
TensorBoard アプリケーションは、1 時間の非アクティブ状態が続くと自動的にシャットダウンします。使用が終了したときにアプリケーションをシャットダウンする場合は、そのアプリケーションをホストしているインスタンスに料金が発生し TensorBoard ないように、手動でシャットダウンしてください。アプリケーションを削除する手順については、「未使用の TensorBoard アプリケーションを削除する」を参照してください。
-
の TensorBoard アプリケーション SageMaker は、 out-of-the-box SageMaker トレーニングジョブをサポートするように設計されています。この組み込み統合により、トレーニングコンテナ内のローカルディレクトリと Amazon S3 バケット間のシームレスなマッピングが可能になり、
CreateTrainingJob
API レイヤーで容易になります。この統合により、 TensorBoard 「出力データ設定を使用してトレーニングジョブを準備する」セクションで説明されているように、ディレクトリパスを簡単かつ簡単にマッピングできます。ただし、
CreateHyperParameterTuningJob
API はマッピングの TensorBoard 出力設定と統合されていない out-of-the-boxため、 TensorBoard アプリケーションは SageMaker ハイパーパラメータ調整ジョブをサポートしていないことに注意してください。ハイパーパラメータチューニングジョブに TensorBoard アプリケーションを使用するには、トレーニングスクリプトで Amazon S3 にメトリクスをアップロードするためのコードを記述する必要があります。メトリクスが Amazon S3 バケットにアップロードされたら、バケットを のアプリケーションに TensorBoardロードできます SageMaker。