

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

# Amazon SageMaker AI の推論パイプライン
<a name="inference-pipelines"></a>

*推論パイプライン*は、データに対して推論リクエストを処理する、直線状に並んだ 2～15 個のコンテナで構成される Amazon SageMaker AI モデルです。推論パイプラインを使って、事前トレーニング済みの SageMaker AI 組み込みアルゴリズムと、Docker コンテナにパッケージ化された独自のカスタムアルゴリズムの任意の組み合わせを定義、デプロイします。推論パイプラインを使用して、事前処理、予測、および後処理のデータサイエンスタスクを組み合わせることができます。推論パイプラインは完全に管理されます。

SageMaker AI Spark ML Serving と scikit-learn コンテナを追加すると、モデルトレーニング用に開発されたデータ変換を再利用できます。組み立てられた推論パイプライン全体は、リアルタイム予測の実行や、外部の前処理をせずにバッチ変換を直接処理するために使うことができる SageMaker AI モデルと見なすことができます。

推論パイプラインモデル内で、SageMaker AI は呼び出しを HTTP リクエストのシーケンスとして処理します。最初のリクエストはパイプラインの最初のコンテナによって処理され、次に中間レスポンスが 2 番目のコンテナへのリクエストとして送信され、以降、パイプラインの各コンテナに対して同様の処理が繰り返され、最終レスポンスが SageMaker AI によってクライアントに返されます。

パイプラインモデルをデプロイすると、SageMaker AI はエンドポイントまたは変換ジョブの各 Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにすべてのコンテナをインストールし、実行します。機能の処理と推測は低レイテンシーで実行されます。これは、コンテナが同じ EC2 インスタンスに配置されているためです。[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) オペレーションを使用するか、コンソールから、パイプラインモデルのコンテナを定義します。`PrimaryContainer` を 1 つ設定する代わりに、`Containers` パラメータを使用して、パイプラインを構成する複数のコンテナを設定します。また、コンテナを実行する順序も指定します。

パイプラインモデルは変更不可能ですが、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) オペレーションを使用して新しいモデルをデプロイすることにより、推論パイプラインを更新できます。このモジュール性により、実験中の柔軟性が高まります。

SageMaker モデルレジストリを使って推論パイプラインを作成する方法については、「[Model Registry を使用したモデル登録デプロイ](model-registry.md)」を参照してください。

この機能の使用に追加料金はかかりません。エンドポイントで実行されているインスタンスに対してのみ料金が発生します。

**Topics**
+ [推論パイプラインのサンプルノートブック](#inference-pipeline-sample-notebooks)
+ [SparkML と Scikit-learn による機能処理](inference-pipeline-mleap-scikit-learn-containers.md)
+ [パイプラインモデルを作成する](inference-pipeline-create-console.md)
+ [推論パイプラインでリアルタイム予測を実行する](inference-pipeline-real-time.md)
+ [推論パイプラインを使用したバッチ変換](inference-pipeline-batch.md)
+ [推論パイプラインのログとメトリクス](inference-pipeline-logs-metrics.md)
+ [推論パイプラインのトラブルシューティング](inference-pipeline-troubleshoot.md)

## 推論パイプラインのサンプルノートブック
<a name="inference-pipeline-sample-notebooks"></a>

推論パイプラインを作成してデプロイする方法を示す例については、「[Inference Pipeline with Scikit-learn and Linear Learner](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-python-sdk/scikit_learn_inference_pipeline)」サンプルノートブックを参照してください。SageMaker AI でサンプルを実行する際に使用できる Jupyter ノートブックインスタンスを作成してアクセスする手順については、「[Amazon SageMaker ノートブックインスタンス](nbi.md)」を参照してください。

ノートブックインスタンスを作成して開いた後、すべての SageMaker AI サンプルのリストを表示するには、**[SageMaker AI サンプル]** タブを選択します。推論パイプラインノートブックは 3 つあります。説明した最初の 2 つの推論パイプラインノートブックは `advanced_functionality` フォルダにあり、3 番目のノートブックは `sagemaker-python-sdk` フォルダにあります。ノートブックを開くには、その [**使用**] タブを選び、次に [**コピーを作成**] を選択します。

# SparkML と Scikit-learn による機能処理
<a name="inference-pipeline-mleap-scikit-learn-containers"></a>

Amazon SageMaker AI 組み込みアルゴリズムまたは独自のカスタムアルゴリズムを使ってモデルをトレーニングする前に、Spark および scikit-learn のプリプロセッサを使ってデータを変換し、特徴エンジニアリングをします。

## Spark ML による機能処理
<a name="feature-processing-spark"></a>

Spark ML ジョブは、[AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)、サーバーレス ETL (抽出、変換、ロード) サービスを使って SageMaker AI ノートブックから実行できます。既存の EMR クラスターに接続し、[Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) で Spark ML ジョブを実行することもできます。これを行うには、SageMaker AI ノートブックから への呼び出しを行うためのアクセス許可を付与する AWS Identity and Access Management (IAM) ロールが必要です AWS Glue。

**注記**  
 AWS Glue サポートされている Python および Spark のバージョンを確認するには、[AWS 「 Glue リリースノート](/glue/latest/dg/release-notes.html)」を参照してください。

エンジニアリング機能の後で、推論パイプラインに追加できる MLeap コンテナに、Spark ML ジョブを MLeap でパッケージ化およびシリアル化します。外部で管理された Spark クラスターを使用する必要はありません。この方法では、サンプルの行からテラバイト単位のデータにシームレスにスケールできます。同じトランスフォーマーがトレーニングおよび推論の両方で機能するため、事前処理や機能エンジニアリングロジックを複製したり、モデルを保持するための 1 回限りのソリューションを開発したりする必要はありません。推論パイプラインでは、外部のインフラストラクチャを維持する必要はなく、データ入力から直接予測を行うことができます。

Spark ML ジョブを実行すると AWS Glue、Spark ML パイプラインは [MLeap](https://github.com/combust/mleap) 形式にシリアル化されます。その後、SageMaker AI 推論パイプラインで [SparkML Model Serving コンテナ](https://github.com/aws/sagemaker-sparkml-serving-container)を使ったジョブを使用できます。*MLeap* は、Machine Learning パイプライン用のシリアル化フォーマットおよび実行エンジンです。Spark、Scikit-learn、TensorFlow をサポートして、パイプラインをトレーニングし、それらを MLeap Bundle と呼ばれるシリアル化されたパイプラインにエクスポートします。バンドルは、バッチモードスコアリングのために Spark に逆シリアル化したり、リアルタイム API サービスに使用するために MLeap ランタイムに逆シリアル化したりできます。

Spark ML を使用して特徴量処理を行う方法を示す例については、「[Train an ML Model using Apache Spark in Amazon EMR and deploy in SageMaker AI](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-python-sdk/sparkml_serving_emr_mleap_abalone)」サンプルノートブックを参照してください。

## sci-kit learn を使って特徴を処理する
<a name="feature-processing-with-scikit"></a>

scikit-learn のジョブは Amazon SageMaker AI で直接実行し、コンテナにパッケージ化できます。[フィッシャーのアイリスの花のデータセット](http://archive.ics.uci.edu/ml/datasets/Iris)で学習し、さらに形態学的測定に基づいてアイリスの種を予測するシック学習風の特徴化モデルを作成するための Python コードの例については、「[Sagemaker による IRIS トレーニングと予測](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-python-sdk/scikit_learn_iris)」を参照してください。

# パイプラインモデルを作成する
<a name="inference-pipeline-create-console"></a>

エンドポイントにデプロイ可能なパイプラインまたはバッチ変換ジョブに使われるパイプラインを作成するには、Amazon SageMaker AI コンソールまたは `CreateModel` オペレーションを使います。

**推測パイプラインを作成するには (コンソール)**

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

1. **[Models]** (モデル) を選択し、**[Inference]** (推論) グループから **[Create models]** (モデルの作成) を選択します。

1. **[モデルの作成]** ページで、モデル名を指定し、IAM ロールを選択します。さらに、プライベート VPC を使う場合は、VPC の値を指定します。  
![\[推論パイプラインのモデルの作成ページ。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/create-pipeline-model.png)

1. 推論パイプラインのコンテナに関する情報を追加するには、[**コンテナの追加**] を選択し、次に [**次へ**] を選択します。

1. 各コンテナのフィールドに入力します (実行順に最大 15 個まで)。[**コンテナ入力オプション**]、[**推論コードイメージの場所**]、オプションとして [**モデルアーティファクトの場所**]、[**コンテナホスト名**]、[**環境変数**] フィールドに入力します。  
![\[コンテナを使用したパイプラインモデルの作成。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/create-pipeline-model-containers.png)

   [**MyInferencePipelineModel**] ページでは、モデルの入力を示すコンテナ設定の概要が表示されます。対応するコンテナの定義で環境変数を指定すると、SageMaker AI は **[環境変数]** フィールドを表示します。  
![\[パイプラインモデルのコンテナ設定の概要。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/pipeline-MyInferencePipelinesModel-recap.png)

# 推論パイプラインでリアルタイム予測を実行する
<a name="inference-pipeline-real-time"></a>

トレーニングされたモデルは、外部の事前処理なしに直接リアルタイム予測を行うための推論パイプラインで使用することができます。パイプラインを設定する際に、Amazon SageMaker AI ですでに利用可能な組み込みの特徴変換機能を使うように選択できます。または、数行の scikit-learn または Spark コードのみを使用して、独自の変換ロジックを実装できます。

機械学習パイプライン用のシリアル化形式および実行エンジンである [MLeap](https://combust.github.io/mleap-docs/) は、パイプラインのトレーニングと、MLeap Bundle と呼ばれるシリアル化されたパイプラインへのエクスポートのため、Spark、scikit-learn、および TensorFlow をサポートしています。バンドルは、バッチモードスコアリングのために Spark に逆シリアル化したり、リアルタイム API サービスに使用するために MLeap ランタイムに逆シリアル化したりできます。

パイプラインのコンテナは、(8080 ではなく) `SAGEMAKER_BIND_TO_PORT` 環境変数で指定されたポートでリッスンします。推論パイプラインで実行する際、SageMaker AI はコンテナにこの環境変数を自動的に提供します。この環境変数が存在しない場合、コンテナではデフォルトでポート 8080 が使用されます。コンテナがこの要件に準拠していることを示すには、次のコマンドを使用して Dockerfile にラベルを追加します。

```
LABEL com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true
```

コンテナが 2 番目のポートをリッスンする必要がある場合は、`SAGEMAKER_SAFE_PORT_RANGE` 環境変数で指定された範囲内のポートを選択してください。**"XXXX-YYYY"** の形式の包含範囲として値を指定します。ここで、`XXXX` と `YYYY` は複数桁の整数です。マルチコンテナエンドパイプラインでこのコンテナを実行する場合、SageMaker AI はこの値を自動的に提供します。

**注記**  
[SageMaker AI 組み込みアルゴリズム](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html)を含むパイプラインでカスタム Docker イメージを使う場合は、[Amazon Elastic Container Registry (Amazon ECR) ポリシー](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)が必要です。Amazon ECR リポジトリは、イメージをプルする許可を SageMaker AI に付与する必要があります。詳細については、「[推論パイプラインの Amazon ECR アクセス許可のトラブルシューティングを行う](inference-pipeline-troubleshoot.md#inference-pipeline-troubleshoot-permissions)」を参照してください。

## 推論パイプラインエンドポイントの作成とデプロイ
<a name="inference-pipeline-real-time-sdk"></a>

次のコードは、SageMaker AI SDK を使用して、SparkML モデルと XGBoost モデルを順に使ってリアルタイム推論パイプラインモデルを作成およびデプロイします。

```
from sagemaker.model import Model
from sagemaker.pipeline_model import PipelineModel
from sagemaker.sparkml.model import SparkMLModel

sparkml_data = 's3://{}/{}/{}'.format(s3_model_bucket, s3_model_key_prefix, 'model.tar.gz')
sparkml_model = SparkMLModel(model_data=sparkml_data)
xgb_model = Model(model_data=xgb_model.model_data, image=training_image)

model_name = 'serial-inference-' + timestamp_prefix
endpoint_name = 'serial-inference-ep-' + timestamp_prefix
sm_model = PipelineModel(name=model_name, role=role, models=[sparkml_model, xgb_model])
sm_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name)
```

## 推論パイプラインエンドポイントからのリアルタイムの推論リクエスト
<a name="inference-pipeline-endpoint-request"></a>

次のコード例は、推論エンドポイントを呼び出して JSON 形式のリクエストペイロードを渡すことによって、リアルタイムの予測を行う方法を示しています。

```
import sagemaker
from sagemaker.predictor import json_serializer, json_deserializer, Predictor

payload = {
        "input": [
            {
                "name": "Pclass",
                "type": "float",
                "val": "1.0"
            },
            {
                "name": "Embarked",
                "type": "string",
                "val": "Q"
            },
            {
                "name": "Age",
                "type": "double",
                "val": "48.0"
            },
            {
                "name": "Fare",
                "type": "double",
                "val": "100.67"
            },
            {
                "name": "SibSp",
                "type": "double",
                "val": "1.0"
            },
            {
                "name": "Sex",
                "type": "string",
                "val": "male"
            }
        ],
        "output": {
            "name": "features",
            "type": "double",
            "struct": "vector"
        }
    }

predictor = Predictor(endpoint=endpoint_name, sagemaker_session=sagemaker.Session(), serializer=json_serializer,
                                content_type='text/csv', accept='application/json')

print(predictor.predict(payload))
```

`predictor.predict(payload)` から得るレスポンスは、モデルの推論結果です。

## リアルタイム推論パイプラインの例
<a name="inference-pipeline-example"></a>

エンドポイントをデプロイし、推論リクエストを実行し、レスポンスを逆シリアル化する方法を示す [SKLearn 予測子を使用して、この例のノートブック](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/scikit_learn_randomforest/Sklearn_on_SageMaker_end2end.ipynb)を実行できます。このノートブックやその他の例は、[Amazon SageMaker サンプル GitHub リポジトリ](https://github.com/awslabs/amazon-sagemaker-examples)にあります。

# 推論パイプラインを使用したバッチ変換
<a name="inference-pipeline-batch"></a>

データセット全体の推論を取得するには、トレーニングされたモデルに対してバッチ変換を実行します。データセット全体に対して推論を実行するには、リアルタイム処理用として作成し、エンドポイントにデプロイした同じ推論パイプラインモデルを、バッチ変換ジョブで使用できます。パイプライン内のバッチ変換ジョブを実行するには、入力データを Amazon S3 からダウンロードし、そのデータを 1 つ以上の HTTP リクエストで推論パイプラインモデルに送信します。バッチ変換のデータを準備する方法を示す例については、「[Amazon SageMaker Multi-Model Endpoints using Linear Learner sample notebook](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/advanced_functionality/multi_model_linear_learner_home_value)」の「Section 2 - Preprocess the raw housing data using Scikit Learn」を参照してください。Amazon SageMaker AI バッチ変換については、「[Amazon SageMaker AI による推論のためのバッチ変換](batch-transform.md)」を参照してください。

**注記**  
[Amazon SageMaker AI 組み込みアルゴリズム](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html)を含むパイプラインでカスタム Docker イメージを使う場合は、[Amazon Elastic Container Registry (ECR) ポリシー](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)が必要です。Amazon ECR リポジトリは、イメージをプルする許可を SageMaker AI に付与する必要があります。詳細については、「[推論パイプラインの Amazon ECR アクセス許可のトラブルシューティングを行う](inference-pipeline-troubleshoot.md#inference-pipeline-troubleshoot-permissions)」を参照してください。

次の例は、[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) を使って変換ジョブを実行する方法を示しています。この例では、`model_name` は SparkML と XGBoost モデルを組み合わせた推論パイプラインを指します (これは前の例で作成されたものです)。`input_data_path` で指定された Amazon S3 の場所には、ダウンロードして Spark ML モデルに送信する、CSV 形式の入力データが含まれます。変換ジョブが終了した後、`output_data_path` で指定された Amazon S3 の場所には、XGBoost モデルによって返された出力データが CSV 形式で含まれます。

```
import sagemaker
input_data_path = 's3://{}/{}/{}'.format(default_bucket, 'key', 'file_name')
output_data_path = 's3://{}/{}'.format(default_bucket, 'key')
transform_job = sagemaker.transformer.Transformer(
    model_name = model_name,
    instance_count = 1,
    instance_type = 'ml.m4.xlarge',
    strategy = 'SingleRecord',
    assemble_with = 'Line',
    output_path = output_data_path,
    base_transform_job_name='inference-pipelines-batch',
    sagemaker_session=sagemaker.Session(),
    accept = CONTENT_TYPE_CSV)
transform_job.transform(data = input_data_path, 
                        content_type = CONTENT_TYPE_CSV, 
                        split_type = 'Line')
```

# 推論パイプラインのログとメトリクス
<a name="inference-pipeline-logs-metrics"></a>

モニタリングは、Amazon SageMaker AI リソースの信頼性、可用性、パフォーマンスを維持する上で重要です。推論パイプラインのパフォーマンスをモニタリングし、トラブルシューティングするには、Amazon CloudWatch のログとエラーメッセージを使います。SageMaker AI が提供するモニタリングツールの詳細については、「[Amazon SageMaker AI での AWS リソースのモニタリング](monitoring-overview.md)」を参照してください。

## メトリクスを使用してマルチコンテナモデルをモニタリングする
<a name="inference-pipeline-metrics"></a>

推論パイプラインでマルチコンテナモデルをモニタリングするには、Amazon CloudWatch を使います。CloudWatch は、raw データを収集して、それを読み取り可能なほぼリアルタイムのメトリクスに変換します。SageMaker AI のトレーニングジョブとエンドポイントは CloudWatch のメトリクスとログを `AWS/SageMaker` 名前空間に書き込みます。

次の表に、以下のメトリクスとディメンションの一覧を示します。
+ エンドポイントの呼び出し
+ トレーニングジョブ、バッチ変換ジョブ、エンドポイントインスタンス

*ディメンション*は、メトリクスを一意に識別する名前と値のペアです。1 メトリクスあたり最大 10 ディメンションを割り当てることができます。CloudWatch を使ったモニタリングの詳細については、「[Amazon CloudWatch における Amazon SageMaker AI メトリクス](monitoring-cloudwatch.md)」を参照してください。

**エンドポイント呼び出しメトリクス**

`AWS/SageMaker` 名前空間には、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html) への呼び出しからの次のリクエストメトリクスが含まれます。

メトリクスは 1 分間隔でレポートされます。


| メトリクス | 説明 | 
| --- | --- | 
| Invocation4XXErrors |  `4xx` HTTP レスポンスコードを返したモデルの `InvokeEndpoint` リクエスト数。各 `4xx` レスポンスに、SageMaker AI は `1` を送信します。 単位: なし 有効な統計: `Average`、`Sum`  | 
| Invocation5XXErrors |  `5xx` HTTP レスポンスコードを返したモデルの `InvokeEndpoint` リクエスト数。各 `5xx` レスポンスに、SageMaker AI は `1` を送信します。 単位: なし 有効な統計: `Average`、`Sum`  | 
| Invocations |  モデルエンドポイントに送信された `number of InvokeEndpoint` リクエスト。 モデルエンドポイントに送信されたリクエストの合計数を得るには、`Sum` 統計を使用します。 単位: なし 有効な統計: `Sum`、`Sample Count`  | 
| InvocationsPerInstance |  各 `ProductionVariant` で `InstanceCount` によって正規化され、モデルに送信されたエンドポイント呼び出しの数。SageMaker AI は 1/`numberOfInstances` を値として各リクエストに送信します。ここで、`numberOfInstances` はリクエスト発生時のエンドポイントにある ProductionVariant のアクティブなインスタンスの数です。 単位: なし 有効な統計: `Sum`  | 
| ModelLatency | モデルの応答にかかった時間。これには、リクエストを送信し、モデルのコンテナからレスポンスを取得するのにかかった時間と、コンテナ内で推論を完了するのにかかった時間が含まれます。ModelLatency は、推論パイプライン内のすべてのコンテナにかかった合計時間です。単位: マイクロ秒有効な統計: `Average`、`Sum`、`Min`、`Max`、Sample Count | 
| OverheadLatency |  オーバーヘッドのため、SageMaker AI によるクライアントリクエストへの応答にかかった時間に加算される時間。`OverheadLatency` は、SageMaker AI がリクエストを受信してからクライアントにレスポンスを返すまでの時間から `ModelLatency` を引いたものです。オーバーヘッドのレイテンシーは、リクエストとレスポンスのペイロードサイズ、リクエストの頻度、リクエストの認証、認可などの要因によって異なります。 単位: マイクロ秒 有効な統計: `Average`、`Sum`、`Min`、`Max`、`Sample Count`  | 
| ContainerLatency | SageMaker AI から見たときに、推論パイプラインコンテナが応答にかかった時間。ContainerLatency には、リクエストを送信し、モデルのコンテナからレスポンスを取得するのにかかった時間と、コンテナ内で推論を完了するのにかかる時間が含まれます。単位: マイクロ秒有効な統計: `Average`、`Sum`、`Min`、`Max`、`Sample Count` | 

**エンドポイント呼び出しメトリクスのディメンション**


| ディメンション | 説明 | 
| --- | --- | 
| EndpointName, VariantName, ContainerName |  指定のエンドポイントおよび指定のバリアントの `ProductionVariant` のエンドポイント呼び出しメトリクスをフィルタリングします。  | 

推論パイプラインエンドポイントの場合、CloudWatch は **[SageMaker AI]** 名前空間の下に **[エンドポイントのコンテナのメトリクス]** および **[エンドポイントのバリアントのメトリクス]** として、アカウント内のコンテナ単位のレイテンシーメトリクスを表示します。`ContainerLatency` メトリクスは、推定パイプラインに対してのみ表示されます。

![\[推論パイプラインの CloudWatch ダッシュボード。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/pipeline-endpoint-metrics.png)


レイテンシーメトリクスは、エンドポイントおよびコンテナごとに、コンテナ、エンドポイント、バリアント、メトリクスの名前を表示します。

![\[エンドポイントのレイテンシーメトリクス。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/pipeline-endpoint-metrics-details.png)


**トレーニングジョブ、バッチ変換ジョブ、およびエンドポイントインスタンスメトリクス**

`/aws/sagemaker/TrainingJobs`、`/aws/sagemaker/TransformJobs`、`/aws/sagemaker/Endpoints` 名前空間には、トレーニングジョブおよびエンドポイントインスタンスに関する以下のメトリクスが含まれています。

メトリクスは 1 分間隔でレポートされます。


| メトリクス | 説明 | 
| --- | --- | 
| CPUUtilization |  インスタンスで実行中のコンテナによって使用されている CPU ユニットの割合。値の範囲は 0%～100% で、CPU の数で乗算されます。例えば、CPU が 4 つの場合、`CPUUtilization` は 0%～400% になります。 トレーニングジョブの場合、`CPUUtilization` はインスタンスで実行中のアルゴリズムコンテナの CPU 使用率です。 バッチ変換ジョブの場合、`CPUUtilization` はインスタンスで実行中の変換コンテナの CPU 使用率です。 マルチコンテナモデルの場合、`CPUUtilization` は、インスタンスで実行中のすべてのコンテナによる CPU 使用率の合計です。 エンドポイントのバリアントの場合、`CPUUtilization` は、インスタンスで実行中のすべてのコンテナの CPU 使用率の合計です。 単位: パーセント  | 
| MemoryUtilization | インスタンスで実行中のコンテナによって使用されているメモリの割合。この値は 0%～100% です。トレーニングジョブの場合、`MemoryUtilization` は、インスタンスで実行中のアルゴリズムコンテナによって使用されているメモリです。バッチ変換ジョブの変換の場合、`MemoryUtilization` は、インスタンスで実行中の変換コンテナによって使用されているメモリです。マルチコンテナモデルの場合、MemoryUtilization は、インスタンスで実行中のすべてのコンテナによって使用されているメモリの合計です。エンドポイントのバリアントの場合、`MemoryUtilization` は、インスタンスで実行中のすべてのコンテナによって使用されているメモリの合計です。単位: パーセント | 
| GPUUtilization |  インスタンスで実行中のコンテナによって使用されている GPU ユニットの割合です。`GPUUtilization` の範囲は 0%～100% で、GPU の数によって乗算されます。例えば、GPU が 4 つの場合、`GPUUtilization` は 0%～400% になります。 トレーニングジョブの場合、`GPUUtilization` は、インスタンスで実行中のアルゴリズムによって使用されている GPU です。 バッチ変換ジョブの場合、`GPUUtilization` は、インスタンスで実行中の変換コンテナによって使用されている GPU です。 マルチコンテナモデルの場合、`GPUUtilization` は、インスタンスで実行中のすべてのコンテナによって使用されている GPU の合計です。 エンドポイントのバリアントの場合、`GPUUtilization` は、インスタンスで実行中のすべてのコンテナによって使用されている GPU の合計です。 単位: パーセント  | 
| GPUMemoryUtilization |  インスタンスで実行中のコンテナによって使用されている GPU メモリの割合。GPUMemoryUtilization 範囲は 0%～100% で、GPU の数によって乗算されます。例えば、GPU が 4 つの場合、`GPUMemoryUtilization` は 0%～400% になります。 トレーニングジョブの場合、`GPUMemoryUtilization` は、インスタンスで実行中のアルゴリズムコンテナで使用されている GPU メモリです。 バッチ変換ジョブの場合、`GPUMemoryUtilization` は、インスタンスで実行中の変換コンテナによって使用されている GPU メモリです。 マルチコンテナモデルの場合、`GPUMemoryUtilization` は、インスタンスで実行中のすべてのコンテナによって使用されている GPU の合計です。 エンドポイントのバリアントの場合、`GPUMemoryUtilization` は、インスタンスで実行中のすべてのコンテナによって使用されている GPU メモリの合計です。 単位: パーセント  | 
| DiskUtilization |  インスタンスで実行中のコンテナによって使用されているディスク容量の割合。DiskUtilization の範囲は、0%～100% です。このメトリクスは、バッチ変換ジョブではサポートされていません。 トレーニングジョブの場合、`DiskUtilization` は、インスタンスで実行中のアルゴリズムコンテナで使用されているディスク容量です。 エンドポイントバリアントの場合、`DiskUtilization` は、インスタンスで実行中の提供されたすべてのコンテナによって使用されているディスク容量の合計です。 単位: パーセント  | 

**トレーニングジョブ、バッチ変換ジョブ、およびエンドポイントインスタンスメトリクスのディメンション**


| ディメンション | 説明 | 
| --- | --- | 
| Host |  トレーニングジョブの場合、`Host` の形式は `[training-job-name]/algo-[instance-number-in-cluster]` になります。このディメンションを使用して、指定されたトレーニングジョブとインスタンスのインスタンスメトリクスをフィルタリングします。このディメンション形式は、`/aws/sagemaker/TrainingJobs` 名前空間にのみ存在します。 バッチ変換ジョブの場合、`Host` の形式は `[transform-job-name]/[instance-id]` になります。このディメンションを使用して、指定されたバッチ変換ジョブとインスタンスのインスタンスメトリクスをフィルタリングします。このディメンション形式は、`/aws/sagemaker/TransformJobs` 名前空間にのみ存在します。 エンドポイントの場合、`Host` の形式は `[endpoint-name]/[ production-variant-name ]/[instance-id]`なります。このディメンションを使用して、指定されたエンドポイント、バリアント、インスタンスのインスタンスメトリクスをフィルタリングします。このディメンション形式は、`/aws/sagemaker/Endpoints` 名前空間にのみ存在します。  | 

トレーニングジョブ、エンドポイント、ノートブックインスタンスのライフサイクル設定のデバッグを支援するため、SageMaker AI はアルゴリズムコンテナ、モデルコンテナ、ノートブックインスタンスのライフサイクル設定が `stdout` や `stderr` に送信するすべての内容を Amazon CloudWatch Logs にも送信します。この情報を使用して、進行状況をデバッグおよび分析できます。

## ログを使用して推論パイプラインをモニタリングする
<a name="inference-pipeline-logs"></a>

以下の表は、SageMaker AI が Amazon CloudWatch に送信するロググループとログストリームを示しています。

*ログストリーム*は、同じソースを共有する一連のログイベントです。CloudWatch に記録される個別のログソースは、個別にログストリーミングを構成します。*ロググループ*は、保持、モニタリング、アクセス制御について同じ設定を共有するログストリームのグループです。

**ログ**

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/inference-pipeline-logs-metrics.html)

**注記**  
SageMaker AI は、ライフサイクル設定を使ってノートブックインスタンスを作成すると、`/aws/sagemaker/NotebookInstances` ロググループを作成します。詳細については、「[LCC スクリプトを使用した SageMaker ノートブックインスタンスのカスタマイズ](notebook-lifecycle-config.md)」を参照してください。

SageMaker AI のログ記録の詳細については、「[Amazon SageMaker AI 用 CloudWatch Logs](logging-cloudwatch.md)」を参照してください。

# 推論パイプラインのトラブルシューティング
<a name="inference-pipeline-troubleshoot"></a>

推論パイプラインの問題のトラブルシューティングを行うには、CloudWatch のログとエラーメッセージを使います。Amazon SageMaker AI の組み込みアルゴリズムを含むパイプラインでカスタム Docker イメージを使っている場合は、許可の問題も発生する可能性があります。必要な許可を付与するには、Amazon Elastic Container Registry (Amazon ECR) ポリシーを作成します。

**Topics**
+ [推論パイプラインの Amazon ECR アクセス許可のトラブルシューティングを行う](#inference-pipeline-troubleshoot-permissions)
+ [CloudWatch のログを使って SageMaker AI 推論パイプラインのトラブルシューティングを行う](#inference-pipeline-troubleshoot-logs)
+ [エラーメッセージを使用して推論パイプラインをトラブルシューティングする](#inference-pipeline-troubleshoot-errors)

## 推論パイプラインの Amazon ECR アクセス許可のトラブルシューティングを行う
<a name="inference-pipeline-troubleshoot-permissions"></a>

[SageMaker AI 組み込みアルゴリズム](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html)を含むパイプラインでカスタム Docker イメージを使う場合は、[Amazon ECR ポリシー](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)が必要です。このポリシーは、SageMaker AI にイメージをプルする許可を、Amazon ECR リポジトリが付与できるようにします。このポリシーには以下のアクセス許可が含まれています。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "allowSageMakerToPull",
            "Effect": "Allow",
            "Principal": {
                "Service": "sagemaker.amazonaws.com"
            },
            "Action": [
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "ecr:BatchCheckLayerAvailability"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## CloudWatch のログを使って SageMaker AI 推論パイプラインのトラブルシューティングを行う
<a name="inference-pipeline-troubleshoot-logs"></a>

SageMaker AI は、Amazon CloudWatch に推論パイプラインをデプロイするエンドポイントの、各コンテナのコンテナログを次のパスに発行します。

```
/aws/sagemaker/Endpoints/{EndpointName}/{Variant}/{InstanceId}/{ContainerHostname}
```

例えば、このエンドポイントのログは、次のロググループとストリームに発行されます。

```
EndpointName: MyInferencePipelinesEndpoint
Variant: MyInferencePipelinesVariant
InstanceId: i-0179208609ff7e488
ContainerHostname: MyContainerName1 and MyContainerName2
```

```
logGroup: /aws/sagemaker/Endpoints/MyInferencePipelinesEndpoint
logStream: MyInferencePipelinesVariant/i-0179208609ff7e488/MyContainerName1
logStream: MyInferencePipelinesVariant/i-0179208609ff7e488/MyContainerName2
```

*ログストリーム*は、同じソースを共有する一連のログイベントです。CloudWatch に記録される個別のログソースは、個別にログストリーミングを構成します。*ロググループ*は、保持、モニタリング、アクセス制御について同じ設定を共有するログストリームのグループです。

**ロググループとストリームを表示するには**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. ナビゲーションページで [**Logs**] (ログ) を選択します。

1. [**ロググループ**] で、**MyInferencePipelinesEndpoint** をフィルタリングします。  
![\[推論パイプラインエンドポイントでフィルタリングされた CloudWatch ロググループ。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/pipeline-log-group-filter.png)

1. ログストリームを表示するには、CloudWatch の **[Log Groups]** (ロググループ) ページで [**MyInferencePipelinesEndpoint**] を選択し、**[Search Log Group]** (ロググループの検索) を選択します。  
![\[推測パイプライン用の CloudWatch ログストリーム。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/pipeline-log-streams-2.png)

SageMaker AI が発行するログのリストについては、「[推論パイプラインのログとメトリクス](inference-pipeline-logs-metrics.md)」を参照してください。

## エラーメッセージを使用して推論パイプラインをトラブルシューティングする
<a name="inference-pipeline-troubleshoot-errors"></a>

推論パイプラインのエラーメッセージは、失敗したコンテナを示します。

SageMaker AI によるエンドポイントの呼び出し中にエラーが発生した場合、サービスは、失敗したコンテナを示す `ModelError` (エラーコード 424) を返します。リクエストペイロード (前のコンテナからのレスポンス) が 5 MB の制限を超えると、SageMaker AI は次のような詳細なエラーメッセージを返します。

MyContainerName1 からステータスコード 200 のレスポンスを受信しました。ただし、MyContainerName1 から MyContainerName2 へのリクエストペイロードは 6,000,000 バイトで、これは最大制限の 5 MB を超えています。

``

エンドポイントの作成中にコンテナが ping ヘルスチェックに失敗した場合は、SageMaker AI は `ClientError` を返し、最後のヘルスチェックで ping チェックに失敗したすべてのコンテナを示します。