

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

# Amazon SageMaker Profiler
<a name="train-use-sagemaker-profiler"></a>


|  | 
| --- |
|  Amazon SageMaker Profiler は現在プレビューリリース中で、サポートされている AWS リージョンでは無料でご利用いただけます。Amazon SageMaker Profiler の一般公開バージョン (ある場合) には、プレビューで提供されるものとは異なる機能や価格が含まれている場合があります。  | 

Amazon SageMaker Profiler は Amazon SageMaker AI の機能で、SageMaker AI 上で深層学習モデルをトレーニングする際にプロビジョニングされる AWS コンピューティングリソースの詳細ビューを提供します。CPU と GPU の使用状況、GPU でのカーネル実行、CPU でのカーネル起動、同期オペレーション、CPU と GPU 間のメモリ内のオペレーション、カーネル起動とそれに対応する実行の間のレイテンシー、CPU と GPU 間のデータ転送のプロファイリングに重点を置いています。SageMaker Profiler には、GPU と CPU 間のイベントの時間関係を追跡して理解するための*プロファイル*、プロファイルされたイベントの統計サマリー、トレーニングジョブのタイムラインを視覚化するユーザーインターフェイス (UI) も用意されています。

**注記**  
SageMaker Profiler は PyTorch と TensorFlow をサポートしており、[SageMaker AI のAWS 深層学習コンテナ](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only)で使用可能です。詳細については[サポートされているフレームワークイメージ、 AWS リージョン、インスタンスタイプ](profiler-support.md)を参照してください。

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

大規模なコンピューティングクラスターで深層学習モデルをトレーニングすると、ボトルネック、カーネル起動レイテンシー、メモリ制限、リソース使用率の低下など、計算最適化の問題が発生することがよくあります。

このような計算パフォーマンスの問題を特定するには、コンピューティングリソースを詳細に分析して、どのカーネルがレイテンシーを発生させ、どのオペレーションがボトルネックの原因となっているかを理解する必要があります。データサイエンティストは、SageMaker Profiler UI を使用してトレーニングジョブの詳細なプロファイルを視覚化することができます。UI は、要約グラフとコンピューティングリソース上のすべてのイベントを追跡するためのタイムラインインターフェースを備えたダッシュボードを提供します。データサイエンティストは、SageMaker Profiler Python モジュールを使用してトレーニングジョブの特定の部分を追跡するためのカスタム注釈を追加することもできます。

**管理者向け**

 AWS アカウントまたは SageMaker AI [ドメインの管理者であれば、SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/sm-domain.html) コンソールまたは SageMaker AI ドメインのプロファイラーランディングページからプロファイラーアプリケーションユーザーを管理できます。各ドメインユーザーは、付与されたアクセス許可を使用して自分の Profiler アプリケーションにアクセスできます。SageMaker AI ドメイン管理者およびドメインユーザーとして、持っているアクセス許可レベルに応じて Profiler アプリケーションを作成および削除できます。

**Topics**
+ [

# サポートされているフレームワークイメージ、 AWS リージョン、インスタンスタイプ
](profiler-support.md)
+ [

# SageMaker Profiler の前提条件
](profiler-prereq.md)
+ [

# SageMaker Profiler を使用したトレーニングジョブの準備と実行
](profiler-prepare.md)
+ [

# SageMaker Profiler UI アプリケーションを開く
](profiler-access-smprofiler-ui.md)
+ [

# SageMaker Profiler UI で視覚化されたプロファイル出力データの調査
](profiler-explore-viz.md)
+ [

# SageMaker Profiler のトラブルシューティング
](profiler-faq.md)

# サポートされているフレームワークイメージ、 AWS リージョン、インスタンスタイプ
<a name="profiler-support"></a>

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

**注記**  
この機能を使用するには、SageMaker Python SDK の[バージョン 2.180.0](https://pypi.org/project/sagemaker/2.180.0/) 以上がインストールされていることを確認してください。

## SageMaker Profiler がプリインストールされた SageMaker AI フレームワークイメージ
<a name="profiler-support-frameworks"></a>

SageMaker Profiler は、以下の [SageMaker AI 用AWS Deep Learning Containers](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) にプリインストールされています。

### PyTorch イメージ
<a name="profiler-support-frameworks-pytorch"></a>


| PyTorch バージョン | AWS DLC イメージ URI | 
| --- | --- | 
| 2.2.0 |  *763104351884*.dkr.ecr.*<region>*.amazonaws.com/pytorch-training:2.2.0-gpu-py310-cu121-ubuntu20.04-sagemaker  | 
| 2.1.0 |  *763104351884*.dkr.ecr.*<region>*.amazonaws.com/pytorch-training:2.1.0-gpu-py310-cu121-ubuntu20.04-sagemaker  | 
| 2.0.1 |  *763104351884*.dkr.ecr.*<region>*.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu118-ubuntu20.04-sagemaker *763104351884*.dkr.ecr.*<region>*.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu121-ubuntu20.04-sagemaker  | 
| 1.13.1 |  *763104351884*.dkr.ecr.*<region>*.amazonaws.com/pytorch-training:1.13.1-gpu-py39-cu117-ubuntu20.04-sagemaker  | 

### TensorFlow イメージ
<a name="profiler-support-frameworks-tensorflow"></a>


| TensorFlow バージョン | AWS DLC イメージ URI | 
| --- | --- | 
| 2.13.0 |  *763104351884*.dkr.ecr.*<region>*.amazonaws.com/tensorflow-training:2.13.0-gpu-py310-cu118-ubuntu20.04-sagemaker  | 
| 2.12.0 |  *763104351884*.dkr.ecr.*<region>*.amazonaws.com/tensorflow-training:2.12.0-gpu-py310-cu118-ubuntu20.04-sagemaker  | 
| 2.11.0 |  *763104351884*.dkr.ecr.*<region>*.amazonaws.com/tensorflow-training:2.11.0-gpu-py39-cu112-ubuntu20.04-sagemaker  | 

**重要**  
上記の表のフレームワークコンテナの配布とメンテナンスは、 AWS Deep Learning Containers サービスによって管理される[フレームワークサポートポリシー](https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/support-policy.html)の下にあります。サポートされなくなった以前の[フレームワークバージョン](https://aws.amazon.com/releasenotes/dlc-support-policy/)を使用している場合は、現在サポートされているフレームワークバージョンにアップグレードすることを強くお勧めします。

**注記**  
他のフレームワークイメージまたは独自の Docker イメージに SageMaker Profiler を使用する場合は、次のセクションで提供されている SageMaker Profiler Python パッケージバイナリファイルを使用して SageMaker Profiler をインストールできます。

## SageMaker Profiler Python パッケージバイナリファイル
<a name="profiler-python-package"></a>

独自の Docker コンテナを設定する場合は、PyTorch および TensorFlow 用の他の構築済みコンテナで SageMaker Profiler を使用するか、SageMaker Profiler Python パッケージをローカルにインストールして、次のバイナリファイルのいずれかを使用します。環境の Python および CUDA バージョンに応じて、次のいずれかを選択します。

### PyTorch
<a name="profiler-python-package-for-pytorch"></a>
+ Python3.8、CUDA 11.3: [https://smppy.s3.amazonaws.com/pytorch/cu113/smprof-0.3.334-cp38-cp38-linux_x86_64.whl](https://smppy.s3.amazonaws.com/pytorch/cu113/smprof-0.3.334-cp38-cp38-linux_x86_64.whl)
+ Python3.9、CUDA 11.7: [https://smppy.s3.amazonaws.com/pytorch/cu117/smprof-0.3.334-cp39-cp39-linux_x86_64.whl](https://smppy.s3.amazonaws.com/pytorch/cu117/smprof-0.3.334-cp39-cp39-linux_x86_64.whl)
+ Python3.10、CUDA 11.8: [https://smppy.s3.amazonaws.com/pytorch/cu118/smprof-0.3.334-cp310-cp310-linux_x86_64.whl](https://smppy.s3.amazonaws.com/pytorch/cu118/smprof-0.3.334-cp310-cp310-linux_x86_64.whl)
+ Python3.10、CUDA 12.1: [https://smppy.s3.amazonaws.com/pytorch/cu121/smprof-0.3.334-cp310-cp310-linux_x86_64.whl](https://smppy.s3.amazonaws.com/pytorch/cu121/smprof-0.3.334-cp310-cp310-linux_x86_64.whl)

### TensorFlow
<a name="profiler-python-package-for-tensorflow"></a>
+ Python3.9、CUDA 11.2: [https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.334-cp39-cp39-linux_x86_64.whl](https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.334-cp39-cp39-linux_x86_64.whl)
+ Python3.10、CUDA 11.8: [https://smppy.s3.amazonaws.com/tensorflow/cu118/smprof-0.3.334-cp310-cp310-linux_x86_64.whl](https://smppy.s3.amazonaws.com/tensorflow/cu118/smprof-0.3.334-cp310-cp310-linux_x86_64.whl)

バイナリファイルを使用して SageMaker Profiler をインストールする方法の詳細については、「[(オプション) SageMaker Profiler Python パッケージをインストールする](profiler-prepare.md#profiler-install-python-package)」を参照してください。

## サポートされている AWS リージョン
<a name="profiler-support-regions"></a>

SageMaker Profiler は、以下で利用できます AWS リージョン。
+ 米国東部 (バージニア北部) (`us-east-1`)
+ 米国東部 (オハイオ) (`us-east-2`)
+ 米国西部 (オレゴン) (`us-west-2`)
+ 欧州 (フランクフルト) (`eu-central-1`)
+ 欧州 (アイルランド) (`eu-west-1`)

## サポートされるインスタンスタイプ
<a name="profiler-support-instance-types"></a>

SageMaker Profiler は、次のインスタンスタイプでのトレーニングジョブのプロファイリングをサポートしています。

**CPU および GPU プロファイリング**
+ `ml.g4dn.12xlarge`
+ `ml.g5.24xlarge`
+ `ml.g5.48xlarge`
+ `ml.p3dn.24xlarge`
+ `ml.p4de.24xlarge`
+ `ml.p4d.24xlarge`
+ `ml.p5.48xlarge`

**GPU プロファイリングのみ**
+ `ml.g5.2xlarge`
+ `ml.g5.4xlarge`
+ `ml.g5.8xlarge`
+ `ml.g5.16.xlarge`

# SageMaker Profiler の前提条件
<a name="profiler-prereq"></a>

以下のリストは、SageMaker Profiler の使用を開始するための前提条件を示しています。
+  AWS アカウントの Amazon VPC で設定された SageMaker AI ドメイン。

  ドメインの設定方法については、「[Onboard to Amazon SageMaker AI domain using quick setup](https://docs.aws.amazon.com/sagemaker/latest/dg/onboard-quick-start.html)」を参照してください。また、Profiler UI アプリケーションにアクセスするために、個々のユーザーのドメインユーザープロファイルを追加する必要があります。詳細については、「[Add user profiles](https://docs.aws.amazon.com/sagemaker/latest/dg/domain-user-profile-add.html)」を参照してください。
+ 以下のリストは、Profiler UI アプリケーションを使用するための最小アクセス許可セットです。
  + `sagemaker:CreateApp`
  + `sagemaker:DeleteApp`
  + `sagemaker:DescribeTrainingJob`
  + `sagemaker:Search`
  + `s3:GetObject`
  + `s3:ListBucket`

# SageMaker Profiler を使用したトレーニングジョブの準備と実行
<a name="profiler-prepare"></a>

SageMaker Profiler でトレーニングジョブを実行するためのセットアップは、トレーニングスクリプトの適応と SageMaker トレーニングジョブランチャーの設定の 2 つのステップで構成されます。

**Topics**
+ [

## ステップ 1: SageMaker Profiler Python モジュールを使用したトレーニングスクリプトの調整
](#profiler-prepare-training-script)
+ [

## ステップ 2: SageMaker AI フレームワーク推定器の作成と SageMaker Profiler の有効化
](#profiler-profilerconfig)
+ [

## (オプション) SageMaker Profiler Python パッケージをインストールする
](#profiler-install-python-package)

## ステップ 1: SageMaker Profiler Python モジュールを使用したトレーニングスクリプトの調整
<a name="profiler-prepare-training-script"></a>

トレーニングジョブの実行中に GPU で実行されるカーネルのキャプチャを開始するには、SageMaker Profiler Python モジュールを使用してトレーニングスクリプトを変更します。ライブラリをインポートし、`start_profiling()` と `stop_profiling()` メソッドを追加して、プロファイリングの開始と終了を定義します。オプションのカスタム注釈を使用してトレーニングスクリプトにマーカーを追加し、各ステップの特定のオペレーション中のハードウェアアクティビティを視覚化することもできます。

アノテーターは GPU からオペレーションを抽出することに注意してください。CPU でのプロファイリングオペレーションでは、注釈を追加する必要はありません。CPU プロファイリングは、[ステップ 2: SageMaker AI フレームワーク推定器の作成と SageMaker Profiler の有効化](#profiler-profilerconfig) で練習するプロファイリング設定を指定するときにも有効になります。

**注記**  
トレーニングジョブ全体をプロファイリングすることが、リソースの最も効率的な使い方ではありません。トレーニングジョブの最大 300 ステップをプロファイリングすることをお勧めします。

**重要**  
[2023 年 12 月 14 日](profiler-release-notes.md#profiler-release-notes-20231214) のリリースには、重大な変更が含まれます。SageMaker Profiler Python パッケージ名が `smppy` から `smprof` に変更されました。これは、[SageMaker AI Framework Containers](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) for TensorFlow v2.12 以降で有効です。  
TensorFlow v2.11.0 など以前のバージョンの [SageMaker AI Framework Containers](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) のいずれかを使用する場合、SageMaker Profiler Python パッケージは引き続き `smppy` として使用できます。使用するバージョンまたはパッケージ名が不明な場合は、SageMaker Profiler パッケージのインポートステートメントを次のコードスニペットに置き換えます。  

```
try:
    import smprof 
except ImportError:
    # backward-compatability for TF 2.11 and PT 1.13.1 images
    import smppy as smprof
```

**アプローチ 1.** コンテキストマネージャー `smprof.annotate` を使用して関数全体に注釈を付けます。

`smprof.annotate()` コンテキストマネージャーを使用すると、すべての関数をラップできます。このラッパーは、コード行ではなく関数別にプロファイリングする場合に推奨されます。次のスクリプト例では、各イテレーションでトレーニングループと関数全体をラップするコンテキストマネージャーの実装方法を示しています。

```
import smprof

SMProf = smprof.SMProfiler.instance()
config = smprof.Config()
config.profiler = {
    "EnableCuda": "1",
}
SMProf.configure(config)
SMProf.start_profiling()

for epoch in range(args.epochs):
    if world_size > 1:
        sampler.set_epoch(epoch)
    tstart = time.perf_counter()
    for i, data in enumerate(trainloader, 0):
        with smprof.annotate("step_"+str(i)):
            inputs, labels = data
            inputs = inputs.to("cuda", non_blocking=True)
            labels = labels.to("cuda", non_blocking=True)
    
            optimizer.zero_grad()
    
            with smprof.annotate("Forward"):
                outputs = net(inputs)
            with smprof.annotate("Loss"):
                loss = criterion(outputs, labels)
            with smprof.annotate("Backward"):
                loss.backward()
            with smprof.annotate("Optimizer"):
                optimizer.step()

SMProf.stop_profiling()
```

**アプローチ 2.** `smprof.annotation_begin()` と `smprof.annotation_end()` を使用して、関数内の特定のコード行に注釈を付けます。

特定のコード行をプロファイリングする注釈を定義することもできます。プロファイリングの正確な開始点と終了点は、関数ごとではなく、個々のコード行のレベルで設定できます。例えば、次のスクリプトでは、`step_annotator` は各イテレーションの開始時に定義され、イテレーションの終了時に終了します。一方、オペレーションごとに他の詳細な注釈が定義され、各イテレーションを通じて対象となるオペレーションをラップしています。

```
import smprof

SMProf = smprof.SMProfiler.instance()
config = smprof.Config()
config.profiler = {
    "EnableCuda": "1",
}
SMProf.configure(config)
SMProf.start_profiling()

for epoch in range(args.epochs):
    if world_size > 1:
        sampler.set_epoch(epoch)
    tstart = time.perf_counter()
    for i, data in enumerate(trainloader, 0):
        step_annotator = smprof.annotation_begin("step_" + str(i))

        inputs, labels = data
        inputs = inputs.to("cuda", non_blocking=True)
        labels = labels.to("cuda", non_blocking=True)
        optimizer.zero_grad()

        forward_annotator = smprof.annotation_begin("Forward")
        outputs = net(inputs)
        smprof.annotation_end(forward_annotator)

        loss_annotator = smprof.annotation_begin("Loss")
        loss = criterion(outputs, labels)
        smprof.annotation_end(loss_annotator)

        backward_annotator = smprof.annotation_begin("Backward")
        loss.backward()
        smprof.annotation_end(backward_annotator)

        optimizer_annotator = smprof.annotation_begin("Optimizer")
        optimizer.step()
        smprof.annotation_end(optimizer_annotator)

        smprof.annotation_end(step_annotator)

SMProf.stop_profiling()
```

プロファイラー開始モジュールに注釈を付けて設定したら、次のステップ 2 で SageMaker トレーニングジョブランチャーを使用して送信するスクリプトを保存します。サンプルランチャーでは、トレーニングスクリプトの名前が `train_with_profiler_demo.py` であることを想定しています。

## ステップ 2: SageMaker AI フレームワーク推定器の作成と SageMaker Profiler の有効化
<a name="profiler-profilerconfig"></a>

以下の手順は、SageMaker Python SDK を使用してトレーニング用の SageMaker AI フレームワーク推定器を準備する方法を示しています。

1. 次のように、`ProfilerConfig` モジュールと `Profiler` モジュールを使用して `profiler_config` オブジェクトを設定します。

   ```
   from sagemaker import ProfilerConfig, Profiler
   profiler_config = ProfilerConfig(
       profile_params = Profiler(cpu_profiling_duration=3600)
   )
   ```

   以下は `Profiler` モジュールとその引数の説明です。
   +  `Profiler`: トレーニングジョブで SageMaker Profiler をアクティブ化するためのモジュールです。
     +  `cpu_profiling_duration` (int): CPU でのプロファイリングの時間を秒単位で指定します。デフォルトは 3,600 秒です。

1. 前のステップで作成した `profiler_config` オブジェクトを使用して SageMaker AI フレームワーク推定器を作成します。次のコードは、PyTorch 推定器を作成する例を示しています。TensorFlow 推定器を作成する場合は、代わりに `sagemaker.tensorflow.TensorFlow` をインポートして、SageMaker Profiler がサポートする [TensorFlow バージョン](profiler-support.md#profiler-support-frameworks-tensorflow)のいずれかを指定します。サポートされているフレームワークとインスタンスタイプの詳細については、「[SageMaker Profiler がプリインストールされた SageMaker AI フレームワークイメージ](profiler-support.md#profiler-support-frameworks)」を参照してください。

   ```
   import sagemaker
   from sagemaker.pytorch import PyTorch
   
   estimator = PyTorch(
       framework_version="2.0.0",
       role=sagemaker.get_execution_role(),
       entry_point="train_with_profiler_demo.py", # your training job entry point
       source_dir=source_dir, # source directory for your training script
       output_path=output_path,
       base_job_name="sagemaker-profiler-demo",
       hyperparameters=hyperparameters, # if any
       instance_count=1, # Recommended to test with < 8
       instance_type=ml.p4d.24xlarge,
       profiler_config=profiler_config
   )
   ```

1. `fit` メソッドを実行してトレーニングジョブを開始します。`wait=False` を使用すると、トレーニングジョブのログを消音し、バックグラウンドで実行させることができます。

   ```
   estimator.fit(wait=False)
   ```

トレーニングジョブの実行中またはジョブの完了後に、[SageMaker Profiler UI アプリケーションを開く](profiler-access-smprofiler-ui.md) にある次のトピックに進み、保存したプロファイルの調査と視覚化を開始できます。

Amazon S3 バケットに保存されているプロファイルデータに直接アクセスする場合は、次のスクリプトを使用して S3 URI を取得します。

```
import os
# This is an ad-hoc function to get the S3 URI
# to where the profile output data is saved
def get_detailed_profiler_output_uri(estimator):
    config_name = None
    for processing in estimator.profiler_rule_configs:
        params = processing.get("RuleParameters", dict())
        rule = config_name = params.get("rule_to_invoke", "")
        if rule == "DetailedProfilerProcessing":
            config_name = processing.get("RuleConfigurationName")
            break
    return os.path.join(
        estimator.output_path, 
        estimator.latest_training_job.name, 
        "rule-output",
        config_name,
    )

print(
    f"Profiler output S3 bucket: ", 
    get_detailed_profiler_output_uri(estimator)
)
```

## (オプション) SageMaker Profiler Python パッケージをインストールする
<a name="profiler-install-python-package"></a>

[SageMaker Profiler がプリインストールされた SageMaker AI フレームワークイメージ](profiler-support.md#profiler-support-frameworks) にリストされていない PyTorch または TensorFlow フレームワークイメージ、またはトレーニング用の独自のカスタム Docker コンテナで SageMaker Profiler を使用するには、[SageMaker Profiler Python パッケージバイナリファイル](profiler-support.md#profiler-python-package) のいずれかを使用して SageMaker Profiler をインストールします。

**オプション 1: トレーニングジョブの起動中に SageMaker Profiler パッケージをインストールする**

[SageMaker Profiler がプリインストールされた SageMaker AI フレームワークイメージ](profiler-support.md#profiler-support-frameworks) にリストされていない PyTorch または TensorFlow イメージを使用してジョブをトレーニングするために SageMaker Profiler を使用する場合は、`requirements.txt` ファイルを作成し、[ステップ 2](#profiler-profilerconfig) で SageMaker AI フレームワーク推定器の `source_dir` パラメータに指定したパスの下に配置します。`requirements.txt` ファイル全般のセットアップの詳細については、「*SageMaker Python SDK ドキュメント*」の「[Using third-party libraries](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#using-third-party-libraries)」を参照してください。`requirements.txt` ファイルで、[SageMaker Profiler Python パッケージバイナリファイル](profiler-support.md#profiler-python-package) の S3 バケットパスのいずれかを追加します。

```
# requirements.txt
https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.332-cp39-cp39-linux_x86_64.whl
```

**オプション 2: カスタム Docker コンテナに SageMaker Profiler パッケージをインストールする**

トレーニングにカスタム Docker コンテナを使用する場合は、Dockerfile に [SageMaker Profiler Python パッケージバイナリファイル](profiler-support.md#profiler-python-package) のいずれかを追加します。

```
# Install the smprof package version compatible with your CUDA version
RUN pip install https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.332-cp39-cp39-linux_x86_64.whl
```

SageMaker AI でトレーニング用にカスタム Docker コンテナを実行する一般的なガイダンスについては、「[独自のトレーニングコンテナの適応](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html)」を参照してください。

# SageMaker Profiler UI アプリケーションを開く
<a name="profiler-access-smprofiler-ui"></a>

SageMaker Profiler UI アプリケーションには、以下のオプションを使用してアクセスできます。

**Topics**
+ [

## オプション 1: ドメイン詳細ページからの SageMaker Profiler UI の起動
](#profiler-access-smprofiler-ui-console-smdomain)
+ [

## オプション 2: SageMaker AI コンソールの SageMaker Profiler のランディングページから SageMaker Profiler UI アプリケーションを起動
](#profiler-access-smprofiler-ui-console-profiler-landing-page)
+ [

## オプション 3: SageMaker AI Python SDK でアプリケーションランチャー関数を使用
](#profiler-access-smprofiler-ui-app-launcher-function)

## オプション 1: ドメイン詳細ページからの SageMaker Profiler UI の起動
<a name="profiler-access-smprofiler-ui-console-smdomain"></a>

SageMaker AI コンソールにアクセスできる場合は、このオプションを使用できます。

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

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

1. Amazon SageMaker AI コンソール ([https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)) を開きます。

1. 左側のナビゲーションペインで、**[ドメイン]** を選択します。

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

**SageMaker Profiler UI アプリケーションの起動**

以下の手順は、ユーザープロファイルをスコープする SageMaker Profiler アプリケーションを起動する方法を示しています。

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

1. SageMaker Profiler UI アプリケーションを起動するユーザープロファイルを特定します。

1. 選択したユーザープロファイルの **[起動]** を選択し、**[Profiler]** を選択します。

## オプション 2: SageMaker AI コンソールの SageMaker Profiler のランディングページから SageMaker Profiler UI アプリケーションを起動
<a name="profiler-access-smprofiler-ui-console-profiler-landing-page"></a>

以下の手順では、SageMaker AI コンソールの SageMaker Profiler ランディングページから SageMaker Profiler UI アプリケーションを起動する方法について説明します。SageMaker AI コンソールにアクセスできる場合は、このオプションを使用できます。

1. Amazon SageMaker AI コンソール ([https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)) を開きます。

1. 左側のナビゲーションペインで、**[Profiler]** を選択します。

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

1. SageMaker Profiler UI アプリケーションを起動するユーザープロファイルを選択します。ドメインにユーザープロファイルがない場合は、**[ユーザープロファイルを作成]** を選択します。新しいユーザープロファイルの作成の詳細は、「[Add user profiles](https://docs.aws.amazon.com/sagemaker/latest/dg/domain-user-profile-add.html)」を参照してください。

1. **[Profiler を開く]** を選択します。

## オプション 3: SageMaker AI Python SDK でアプリケーションランチャー関数を使用
<a name="profiler-access-smprofiler-ui-app-launcher-function"></a>

SageMaker AI ドメインユーザーで、SageMaker Studio にのみアクセスできる場合は、[https://sagemaker.readthedocs.io/en/stable/api/utility/interactive_apps.html#module-sagemaker.interactive_apps.detail_profiler_app](https://sagemaker.readthedocs.io/en/stable/api/utility/interactive_apps.html#module-sagemaker.interactive_apps.detail_profiler_app) 関数を実行して、SageMaker Studio Classic から SageMaker Profiler UI アプリケーションにアクセスできます。

SageMaker Studio Classic は re:Invent 2023 以前の Studio UI エクスペリエンスであり、re:Invent 2023 で新しく設計された Studio UI にアプリケーションとして移行されることに注意してください。SageMaker Profiler UI アプリケーションは SageMaker AI ドメインレベルで利用できるため、ドメイン ID とユーザープロファイル名が必要です。現在、この `DetailedProfilerApp` 関数は SageMaker Studio Classic アプリケーション内でのみ動作します。この関数は SageMaker Studio Classic からドメインとユーザープロファイル情報を適切に取得します。

re:Invent 2023 より前に作成されたドメイン、ドメインユーザー、および Studio の場合、「[Migrating from Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-migrate.html)」の指示に従って更新しない限り、Studio Classic がデフォルトのエクスペリエンスになります。この場合、これ以上のアクションは必要ありません。`DetailProfilerApp` 関数を実行して SageMaker Profiler UI アプリケーションを直接起動できます。

re:Invent 2023 後に新しいドメインと Studio を作成した場合は、Studio UI 内で Studio Classic アプリケーションを起動し、`DetailProfilerApp` 関数を実行して SageMaker Profiler UI アプリケーションを起動します。

`DetailedProfilerApp` 関数は、SageMaker Studio JupyterLab アプリケーション、SageMaker Studio Code Editor アプリケーション、SageMaker Notebook インスタンスなど、他の SageMaker AI 機械学習 IDE では機能しないことに注意してください。これらの IDE で `DetailedProfilerApp` 関数を実行すると、Profiler UI アプリケーションを開くための直接リンクではなく、SageMaker AI コンソールの Profiler ランディングページの URL が返されます。

# SageMaker Profiler UI で視覚化されたプロファイル出力データの調査
<a name="profiler-explore-viz"></a>

このセクションでは、SageMaker Profiler UI について説明し、使用方法やインサイトを得るためのヒントを紹介します。

## プロファイルのロード
<a name="profiler-explore-viz-load"></a>

SageMaker Profiler UI を開くと、**[プロファイルのロード]** ページが開きます。**[ダッシュボード]** と **[タイムライン]** をロードして生成するには、以下の手順を実行します。<a name="profiler-explore-viz-load-procedure"></a>

**トレーニングジョブのプロファイルをロードするには**

1. **[トレーニングジョブのリスト]** セクションで、チェックボックスを使用してプロファイルをロードするトレーニングジョブを選択します。

1. **[ロード]** を選択します。ジョブ名は上部の **[ロードされたプロファイル]** セクションに表示されるはずです。

1. **[ジョブ名]** の左側にあるラジオボタンを選択して、**[ダッシュボード]** と **[タイムライン]** を生成します。ラジオボタンを選択すると、UI が自動的に **[ダッシュボード]** を開くことに注意してください。ジョブステータスとロードステータスがまだ進行中の状態で可視化を生成すると、SageMaker Profiler UI は、進行中のトレーニングジョブまたは部分的にロードされたプロファイルデータから収集された最新のプロファイルデータまでの **[ダッシュボード]** プロットと **[タイムライン]** を生成することにも注意してください。

**ヒント**  
一度にロードして視覚化できるプロファイルは 1 つです。別のプロファイルをロードするには、先にロードしたプロファイルをアンロードする必要があります。プロファイルをアンロードするには、**ロードされたプロファイル**セクションのプロファイルの右端にあるゴミ箱アイコンを使用します。

![\[\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/profiler/sagemaker-profiler-ui-load-data.png)


## ダッシュボード
<a name="profiler-explore-viz-overview"></a>

トレーニングジョブのロードと選択が完了すると、UI はデフォルトで以下のパネルを含む **[ダッシュボード]** ページを開きます。
+ **GPU アクティブ時間** — この円グラフは GPU のアクティブ時間と GPU のアイドル時間の割合を示しています。トレーニングジョブ全体を通して GPU がアイドルよりもアクティブであるかどうかを確認できます。GPU のアクティブ時間は使用率が 0% より大きいプロファイルデータポイントに基づくのに対し、GPU アイドル時間は使用率が 0% のプロファイルデータポイントです。
+ **経時的な GPU 使用率** — このタイムライングラフは、すべてのノードを 1 つのグラフに集約し、ノードごとの経時的な平均 GPU 使用率を示しています。特定の時間間隔で、GPU に不均衡なワークロード、使用率低下の問題、ボトルネック、アイドルの問題があるかどうかを確認できます。個々の GPU レベルおよび関連するカーネル実行における使用率を追跡するには、[タイムラインインターフェイス](#profiler-explore-viz-timeline) を使用してください。GPU アクティビティの収集は、トレーニングスクリプトにプロファイラースターター関数 `SMProf.start_profiling()` を追加したところから開始し、`SMProf.stop_profiling()` で停止することに注意してください。
+ **CPU アクティブ時間** — この円グラフは、CPU アクティブ時間と CPU アイドル時間の割合を示しています。トレーニングジョブ全体を通して、CPU がアイドルよりもアクティブであるかどうかを確認できます。CPU アクティブ時間は、使用率が 0% より大きいプロファイリングされたデータポイントに基づくのに対し、CPU アイドル時間は 0% の使用率でプロファイリングされたデータポイントです。
+ **経時的な CPU 使用率** — このタイムライングラフは、すべてのノードを 1 つのグラフに集約し、ノードごとの平均 CPU 使用率を経時的に示しています。特定の時間間隔で CPU がボトルネックになったり、使用率が低くなったりしていないかどうかを確認できます。個々の GPU 使用率とカーネル実行に合わせた CPU の使用率を追跡するには、[タイムラインインターフェイス](#profiler-explore-viz-timeline) を使用します。使用率メトリクスはジョブの初期化から開始することに注意してください。
+ **すべての GPU カーネルが費やした時間** — この円グラフには、トレーニングジョブ全体で操作されたすべての GPU カーネルが表示されます。デフォルトで、上位 15 の GPU カーネルが個別のセクターとして表示され、その他すべてのカーネルが 1 つのセクターとして表示されます。セクターにカーソルを合わせると、詳細情報が表示されます。値は GPU カーネルが動作した合計時間を秒単位で示し、割合はプロファイルの全時間に基づいています。
+ **上位 15 の GPU カーネルが費やした時間** — この円グラフには、トレーニングジョブ全体で操作されたすべての GPU カーネルが表示されます。上位 15 の GPU カーネルは個々のセクターとして表示されます。セクターにカーソルを合わせると、詳細情報が表示されます。値は GPU カーネルが動作した合計時間を秒単位で示し、割合はプロファイルの全時間に基づいています。
+ **すべての GPU カーネルの起動数** — この円グラフには、トレーニングジョブ全体で起動された各 GPU カーネルの起動数が表示されます。上位 15 の GPU カーネルを個別のセクターとして表示し、その他すべてのカーネルを 1 つのセクターとして表示します。セクターにカーソルを合わせると、詳細情報が表示されます。値は起動した GPU カーネルの総数を示し、割合はすべてのカーネルの総数に基づいています。
+ **上位 15 の GPU カーネルの起動回数** — この円グラフには、トレーニングジョブ全体で起動された各 GPU カーネルの数が表示されます。上位 15 の GPU カーネルが表示されます。セクターにカーソルを合わせると、詳細情報が表示されます。値は起動した GPU カーネルの総数を示し、割合はすべてのカーネルの総数に基づいています。
+ **ステップ時間分布** — このヒストグラムは GPU のステップ期間の分布を示しています。このプロットは、トレーニングスクリプトにステップアノテーターを追加した後にのみ生成されます。
+ **カーネル精度分布** — この円グラフは、FP32、FP16、INT32、INT8 などのさまざまなデータ型のカーネル実行に費やされた時間の割合を示しています。
+ **GPU アクティビティ分布** — この円グラフは、カーネルの実行、メモリ (`memcpy` と `memset`)、同期 (`sync`) などの GPU アクティビティに費やされた時間の割合を示しています。
+ **GPU メモリオペレーション分布** — この円グラフは GPU メモリ操作に費やされた時間の割合を示しています。これにより `memcopy` アクティビティが視覚化され、トレーニングジョブが特定のメモリオペレーションに過剰な時間を費やしているかどうかを特定するのに役立ちます。
+ **新しいヒストグラムの作成** — [ステップ 1: SageMaker Profiler Python モジュールを使用したトレーニングスクリプトの調整](profiler-prepare.md#profiler-prepare-training-script) の実行中に手動で注釈を付けたカスタムメトリクスの新しい図を作成します。新しいヒストグラムにカスタム注釈を追加する場合は、トレーニングスクリプトに追加した注釈の名前を選択または入力します。例えば、ステップ 1 のデモトレーニングスクリプトでは、`step`、`Forward`、`Backward`、`Optimize`、`Loss` がカスタム注釈です。新しいヒストグラムを作成する際、これらの注釈名はメトリクス選択のドロップダウンメニューに表示されるはずです。`Backward` を選択すると、UI はプロファイリングされた時間を通してバックワードパスに費やされた時間のヒストグラムを **[ダッシュボード]** に追加します。このタイプのヒストグラムは、異常に長い時間がかかり、ボトルネックの問題を引き起こしている外れ値があるかどうかを確認するのに役立ちます。

以下のスクリーンショットは、GPU と CPU のアクティブ時間の比率と、コンピューティングノードあたりの時間に対する GPU と CPU の平均使用率を示しています。

![\[\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/profiler/sagemaker-profiler-ui-dashboard-1.png)


次のスクリーンショットは、GPU カーネルの起動回数を比較し、実行に費やされた時間を測定するための円グラフの例を示しています。**すべての GPU カーネルが費やした時間**パネルと**すべての GPU カーネルの起動回数**パネルでは、k の入力フィールドに整数を指定して、プロットに表示する凡例の数を調整することもできます。例えば、10 を指定すると、プロットには実行回数が最も多いカーネルと起動数の多いカーネルの上位 10 がそれぞれ表示されます。

![\[\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/profiler/sagemaker-profiler-ui-dashboard-2.png)


次のスクリーンショットは、ステップ期間ヒストグラムの例と、カーネル精度分布、GPU アクティビティ分布、および GPU メモリオペレーション分布の円グラフを示しています。

![\[\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/profiler/sagemaker-profiler-ui-dashboard-3.png)


## タイムラインインターフェイス
<a name="profiler-explore-viz-timeline"></a>

CPU 上でスケジュールされ、GPU 上で実行されるオペレーションとカーネルのレベルでコンピューティングリソースの詳細ビューを取得するには、**タイムライン**インターフェイスを使用します。

マウス、`[w, a, s, d]` キー、またはキーボードの 4 つの矢印キーを使用して、タイムラインインターフェイスでズームインやズームアウトしたり、左右にパンしたりできます。

**ヒント**  
**[タイムライン]** インターフェイスを操作するためのキーボードショートカットのヒントについて詳しくは、左のペインで **[キーボードショートカット]** を選択してください。

タイムライントラックはツリー構造になっており、ホストレベルからデバイスレベルまでの情報を提供します。例えば、それぞれ `N` のインスタンスをそれぞれ 8 の GPU で実行する場合、各インスタンスのタイムライン構造は次のようになります。
+ **algo-inode** — これは SageMaker AI がプロビジョニングされたインスタンスにジョブを割り当てるためにタグ付けするものです。桁 inode はランダムに割り当てられます。例えば、4 つのインスタンスを使用する場合、このセクションは **algo-1** から **algo-4** に拡張されます。
  + **CPU** — このセクションでは、CPU の平均使用率とパフォーマンスカウンターを確認できます。
  + **GPU** — このセクションでは、GPU の平均使用率、個々の GPU 使用率、カーネルを確認できます。
    + **SUM 使用率** — インスタンスごとの GPU の平均使用率。
    + **HOST-0 PID-123** — 各プロセストラックに割り当てられる一意の名前。頭字語 PID はプロセス ID で、それに追加された番号はプロセスからのデータキャプチャ中に記録されるプロセス ID 番号です。このセクションには、プロセスの以下の情報が表示されます。
      + **GPU-inum\$1gpu の使用率** — inum\$1gpu 番目の GPU の経時的な使用率。
      + **GPU-inum\$1gpu デバイス** — カーネルは inum\$1gpu 番目の GPU デバイス上で実行されます。
        + **ストリーム icuda\$1stream** — カーネルが GPU デバイス上で実行されていることを示す CUDA ストリーム。CUDA ストリームの詳細については、NVIDIA が提供する「[CUDA C/C\$1\$1 Streams and Concurrency](https://developer.download.nvidia.com/CUDA/training/StreamsAndConcurrencyWebinar.pdf)」の PDF 形式のスライドを参照してください。
      + **GPU-inum\$1gpu ホスト** — カーネルは inum\$1gpu 番目の GPU ホストで起動します。

以下のスクリーンショットは、それぞれ 8 つの NVIDIA A100 Tensor Core GPU を搭載した `ml.p4d.24xlarge` インスタンスで実行されるトレーニングジョブのプロファイルの **[タイムライン]** を示しています。

以下はプロファイルのズームアウトビューで、`step_232` と `step_233` の間に次のデータバッチをフェッチするための断続的なデータローダーを含む 12 のステップが印刷されています。

![\[\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/profiler/sagemaker-profiler-ui-timeline-1.png)


CPU ごとに CPU 使用率や、CPU で実行される手順を示すパフォーマンスカウンター (`"clk_unhalted_ref.tsc"` や `"itlb_misses.miss_causes_a_walk"` など) を追跡できます。

GPU ごとに、ホストタイムラインとデバイスタイムラインを表示できます。カーネルの起動はホストタイムラインに、カーネルの実行はデバイスタイムラインに表示されます。GPU ホストタイムラインにトレーニングスクリプトを追加した場合は、注釈 (前方、後方、最適化など) も表示されます。

タイムラインビューでは、カーネルの起動と実行のペアを追跡することもできます。これにより、ホスト (CPU) でスケジュールされたカーネル起動が、対応する GPU デバイスでどのように実行されているかを理解できます。

**ヒント**  
`f` キーを押すと、選択したカーネルにズームインします。

次のスクリーンショットは、前のスクリーンショットから `step_233` と `step_234` にズームインしたビューです。次のスクリーンショットで選択されているタイムライン間隔は、GPU-0 デバイスで実行される `AllReduce` オペレーションであり、分散トレーニングに不可欠な通信と同期のステップです。スクリーンショットでは、GPU-0 ホストでのカーネル起動が、青緑色の矢印で示されている GPU-0 デバイスストリーム 1 で実行されているカーネルに接続されていることに注意してください。

![\[\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/profiler/sagemaker-profiler-ui-timeline-2.png)


また、前のスクリーンショットに示されているように、タイムライン間隔を選択すると UI の下部のペインに 2 つの情報タブが表示されます。**[現在の選択]** タブには、選択したカーネルの詳細と、ホストからの接続されたカーネルの起動が表示されます。各 GPU カーネルは常に CPU から呼び出されるため、接続方向は常にホスト (CPU) からデバイス (GPU) になります。**[接続]** タブには、選択したカーネルの起動と実行のペアが表示されます。どちらかを選択すると、**[タイムライン]** ビューの中央に移動できます。

次のスクリーンショットは、`AllReduce` オペレーションの起動と実行のペアをさらにズームインしています。

![\[\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/profiler/sagemaker-profiler-ui-timeline-3.png)


## 情報
<a name="profiler-expore-viz-information"></a>

**[情報]** では、インスタンスタイプ、ジョブ用にプロビジョニングされたコンピューティングリソースの Amazon リソースネーム (ARN)、ノード名、ハイパーパラメータなど、ロードされたトレーニングジョブに関する情報にアクセスできます。

## 設定
<a name="profiler-expore-viz-settings"></a>

SageMaker AI Profiler UI アプリケーションインスタンスは、デフォルトでアイドル時間が 2 時間経過するとシャットダウンするように設定されています。**[設定]** で、次の設定を使用して自動シャットダウンタイマーを調整します。
+ **アプリの自動シャットダウンを有効にする** — 指定したアイドル時間の経過後にアプリケーションを自動的にシャットダウンさせる場合は、**有効**を選択して設定します。自動シャットダウン機能をオフにするには、**[無効]** を選択します。
+ **自動シャットダウンのしきい値 (時間単位)** — **[アプリの自動シャットダウンを有効にする]** で **[有効]** を選択すると、アプリケーションが自動的にシャットダウンするまでのしきい値を時間単位で設定できます。デフォルトでは、2 に設定されています。

# SageMaker Profiler のトラブルシューティング
<a name="profiler-faq"></a>

次の質問と回答のペアを使用して、SageMaker Profiler 使用中の問題のトラブルシューティングを行います。

**Q. エラーメッセージ `ModuleNotFoundError: No module named 'smppy'` が表示されます**

2023 年 12 月以降、SageMaker Profiler Python パッケージの名前が `smppy` から `smprof` に変更され、パッケージ名の重複が解決されました。`smppy` はオープンソースパッケージで既に使用されています。

したがって、2023 年 12 月以前から `smppy` を使用していて、この `ModuleNotFoundError` 問題が発生した場合は、最新の `smprof` パッケージがインストールされているか、最新の [SageMaker Profiler がプリインストールされた SageMaker AI フレームワークイメージ](profiler-support.md#profiler-support-frameworks) のいずれかを使用しているときに、トレーニングスクリプトに古いパッケージ名が含まれていることが原因である可能性があります。この場合、トレーニングスクリプト全体で、`smppy` と言及されている箇所をすべて `smprof` に置き換えてください。

トレーニングスクリプトで SageMaker Profiler Python パッケージ名を更新する際は、使用するパッケージ名のバージョンに関して混乱が起きないよう、次のコードスニペットに示すように、条件付きインポートステートメントの使用を検討してください。

```
try:
    import smprof 
except ImportError:
    # backward-compatability for TF 2.11 and PT 1.13.1 images
    import smppy as smprof
```

また、最新の PyTorch または TensorFlow バージョンへのアップグレード中に `smppy` を使用している場合は、[(オプション) SageMaker Profiler Python パッケージをインストールする](profiler-prepare.md#profiler-install-python-package) の指示に従って最新の `smprof` パッケージをインストールしてください。

**Q. エラーメッセージ `ModuleNotFoundError: No module named 'smprof'` が表示されます**

まず、正式にサポートされている SageMaker AI Framework Containers のいずれかを使用していることを確認してください。これらのいずれかを使用しない場合は、「[(オプション) SageMaker Profiler Python パッケージをインストールする](profiler-prepare.md#profiler-install-python-package)」の指示に従って `smprof` パッケージをインストールできます。

**Q. `ProfilerConfig` をインポートできません**

SageMaker Python SDK を使用してジョブランチャースクリプトに `ProfilerConfig` をインポートできない場合、ローカル環境または Jupyter カーネルに SageMaker Python SDK のかなり古いバージョンがある可能性があります。SDK を最新バージョンにアップグレードしていることを確認します。

```
$ pip install --upgrade sagemaker
```

**Q. エラーメッセージ `aborted: core dumped when importing smprof into my training script` が表示されます**

以前のバージョンの `smprof` では、この問題は PyTorch 2.0\$1 と PyTorch Lightning で発生します。この問題を解決するには、「[(オプション) SageMaker Profiler Python パッケージをインストールする](profiler-prepare.md#profiler-install-python-package)」の指示に従って最新の `smprof` パッケージをインストールします。

**Q. SageMaker Studio で SageMaker Profiler UI が見つかりません。どうすれば見つかりますか?**

SageMaker AI コンソールにアクセスできる場合は、次のいずれかのオプションを選択します。
+ [オプション 1: ドメイン詳細ページからの SageMaker Profiler UI の起動](profiler-access-smprofiler-ui.md#profiler-access-smprofiler-ui-console-smdomain)
+ [オプション 2: SageMaker AI コンソールの SageMaker Profiler のランディングページから SageMaker Profiler UI アプリケーションを起動](profiler-access-smprofiler-ui.md#profiler-access-smprofiler-ui-console-profiler-landing-page)

ドメインユーザーで SageMaker AI コンソールにアクセスできない場合は、SageMaker Studio Classic からアプリケーションにアクセスできます。この場合、以下のオプションを選択します。
+ [オプション 3: SageMaker AI Python SDK でアプリケーションランチャー関数を使用](profiler-access-smprofiler-ui.md#profiler-access-smprofiler-ui-app-launcher-function)