

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

# 生成されたコンテナに推論出力を設定する
<a name="autopilot-automate-model-development-container-output"></a>

Autopilot は、順序付けされた [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html) リストを生成します。これを使用して、機械学習パイプラインにデプロイするモデルを構築できます。このモデルはオンラインホスティングや推論に使用できます。

顧客は、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListCandidateForAutoMLJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListCandidateForAutoMLJob.html) API を使用して推論コンテナ定義をリストできます。また、最良候補を表す推論コンテナ定義のリストは、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html) レスポンスでも入手できます。

## 回帰および分類の問題タイプのための推論コンテナ定義
<a name="autopilot-problem-type-container-output"></a>

Autopilot は、ジョブの[トレーニングモード](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html#autopilot-training-mode)と[問題タイプ](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-datasets-problem-types.html#autopilot-problem-types)に固有の推論コンテナを生成します。

### ハイパーパラメータ最適化 (HPO) モードのコンテナ定義
<a name="autopilot-problem-type-container-output-hpo"></a>
+ **回帰**: HPO は 2 つのコンテナを生成します。

  1. 元の特徴量を、回帰アルゴリズムでトレーニングできる特徴量に変換する特徴量エンジニアリングコンテナ。

  1. 特徴量を変換してデータセットの回帰スコアを生成するアルゴリズムコンテナ。
+ **分類**: HPO は 3 つのコンテナを生成します。

  1. 元の特徴量を、分類アルゴリズムでトレーニングできる特徴量に変換する特徴量エンジニアリングコンテナ。

  1. 最も高い確率で `predicted_label` を生成するアルゴリズムコンテナ。このコンテナは、推論レスポンスで分類結果に関連するさまざまな確率を生成することもできます。

  1. アルゴリズム予測の後処理を実行する特徴量エンジニアリングコンテナ。たとえば、予測されたラベルに対して逆変換を実行し、元のラベルに変更できます。

### アンサンブルモードのコンテナ定義
<a name="autopilot-problem-type-container-output-ensemble"></a>

アンサンブルモードでは、回帰問題タイプと分類問題タイプはどちらも 1 つの推論コンテナしかありません。この推論コンテナは、問題のタイプに基づいて特徴量を変換し、予測を生成します。

## 問題タイプごとの推論レスポンス
<a name="autopilot-problem-type-inference-response"></a>

### 分類モデルの推論レスポンス
<a name="autopilot-problem-type-inference-response-classification"></a>

分類推論コンテナの場合、4 つの事前定義キーを使用して推論応答のコンテンツを選択できます。
+ `predicted_label`: Autopilot によって決定された、正しいラベルを予測する確率が最も高いラベル。
+ `probability`: 
  + **HPO モデル:** 二項分類の `True` クラスの確率。多クラス分類の `predicted_label` の確率。
  + **アンサンブルモデル:** 二項分類および多クラス分類の `predicted_label` の確率。
+ `probabilities`: 対応するすべてのクラスの確率のリスト。
+ `labels`: すべてのラベルのリスト

たとえば、二項分類の問題で、推論レスポンスキー `['predicted_label', 'probability', 'probabilities', 'labels']` を渡して出力応答が `[1, 0.1, "[0.9, 0.1]", "['1', '0']"]` のように表示される場合は、次のように解釈する必要があります。

1. ラベル「1」の確率が高いため (この場合は `0.9`)、`predicted_label` は `1` に等しくなります。

1. HPO モデルの場合、`probability` は `0.1` に等しく、これは Autopilot によって選択された `positive_class` (この場合は `0`) の確率です。

   アンサンブルモデルの場合は、`probability` は `predicted_label` の確立である `0.9` に等しくなります。

1. `probabilities` は `labels` の各ラベルの `probability` をリストします。

1. `labels` はデータセット内の一意のラベルで、2 番目のラベル (この場合は「0」) は Autopilot によって選択された `positive_class` です。

デフォルトでは、推論コンテナは `predicted_label` のみを生成するように設定されています。追加の推論コンテンツを選択するには、`inference_response_keys` パラメータを更新して次の 3 つの環境変数を含めることができます。
+ `SAGEMAKER_INFERENCE_SUPPORTED`: これは、各コンテナがサポートするコンテンツについてのヒントを提供するために設定されます。
+ `SAGEMAKER_INFERENCE_INPUT`: これは、入力ペイロードでコンテナに必要となるキーに設定します。
+ `SAGEMAKER_INFERENCE_OUTPUT`: これは、コンテナから出力される一連のキーを入力します。

### HPO モードでの分類モデルの推論レスポンス
<a name="autopilot-problem-type-inference-response-classification-hpo"></a>

このセクションでは、ハイパーパラメータ最適化 (HPO) モードを使用して分類モデルからの推論レスポンスを設定する方法を説明します。

HPO モードで推論レスポンスの内容を選択するには、分類問題用に HPO モードで生成される 2 番目と 3 番目のコンテナに `SAGEMAKER_INFERENCE_INPUT` および `SAGEMAKER_INFERENCE_OUTPUT` 変数を追加します。

2 番目のコンテナ (アルゴリズム) でサポートされているキーは、predicted\_label、probability、probabilities です。`labels` が `SAGEMAKER_INFERENCE_SUPPORTED` に意図的に追加されていないことに注意してください。

3 番目の分類モデルコンテナがサポートするキーは `predicted_label`、`labels`、`probability`、`probabilities` です。そのため、`SAGEMAKER_INFERENCE_SUPPORTED` 環境にはこれらのキーの名前が含まれます。

推論コンテナの定義を更新して、`predicted_label` と `probability` を受け取るには、次のコード例を使用してください。

```
containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label, probability'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
```

次のコード例では、`predicted_label`、`probabilities`、`labels` を受け取るように推論コンテナの定義を更新します。`labels` は 3 番目のコンテナによって別個に生成されるため、2 番目のコンテナ (アルゴリズムコンテナ) には渡さないでください。

```
containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label,probabilities'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label,probabilities'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probabilities,labels'})
```

次の折りたたみ可能なセクションでは、SageMaker SDK for Python の AWS SDK for Python (Boto3) および のコード例を示します。各セクションでは、それぞれのコード例で、HPO モードで推論レスポンスの内容を選択する方法が示されています。

#### AWS SDK for Python (Boto3)
<a name="autopilot-problem-type-inference-response-classification-hpo-boto3"></a>

```
import boto3

sm_client = boto3.client('sagemaker', region_name='{{<Region>}}')

role = '{{<IAM role>}}'
input_data = '{{<S3 input uri>}}'
output_path = '{{<S3 output uri>}}'

best_candidate = sm_client.describe_auto_ml_job(AutoMLJobName='{{<AutoML Job Name>}}')['BestCandidate']
best_candidate_containers = best_candidate['InferenceContainers']
best_candidate_name = best_candidate['{{CandidateName}}']

best_candidate_containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
best_candidate_containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label, probability'})
best_candidate_containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})

# create model
reponse = sm_client.create_model(
    ModelName = '{{<Model Name>}}',
    ExecutionRoleArn = role,
    Containers = best_candidate_containers
)

# Lauch Transform Job
response = sm_client.create_transform_job(
    TransformJobName='{{<Transform Job Name>}}',
    ModelName='{{<Model Name>}}',
    TransformInput={
        'DataSource': {
            'S3DataSource': {
                'S3DataType': '{{S3Prefix}}',
                'S3Uri': {{input_data}}
            }
        },
        'ContentType': "text/CSV",
        'SplitType': 'Line'
    },
    TransformOutput={
        'S3OutputPath': {{output_path}},
        'AssembleWith': 'Line',
    },
    TransformResources={
        'InstanceType': '{{ml.m4.xlarge}}',
        'InstanceCount': 1,
    },
)
```

#### SageMaker SDK for Python
<a name="autopilot-problem-type-inference-response-classification-hpo-sdk"></a>

```
from sagemaker import AutoML

aml = AutoML.attach(auto_ml_job_name='{{<AutoML Job Name>}}')
aml_best_model = aml.create_model(name='{{<Model Name>}}',
                                  candidate=None,
                                  inference_response_keys**=['probabilities', 'labels'])

aml_transformer = aml_best_model.transformer(accept='text/csv',
                                            assemble_with='Line',
                                            instance_type='{{ml.m5.xlarge}}',
                                            instance_count=1,)

aml_transformer.transform('{{<S3 input uri>}}',
                          content_type='text/csv',
                          split_type='Line',
                          job_name='{{<Transform Job Name>}}',
                          wait=True)
```

### アンサンブルモードでの分類モデルの推論レスポンス
<a name="autopilot-problem-type-inference-response-classification-ensemble"></a>

このセクションでは、アンサンブルモードを使用して分類モデルからの推論レスポンスを設定する方法を説明します。

**アンサンブルモード**で推論レスポンスの内容を選択するには、`SAGEMAKER_INFERENCE_OUTPUT` 環境変数を更新します。

分類モデルコンテナがサポートするキーは `predicted_label`、`labels`、`probability`、`probabilities` です。これらのキーは `SAGEMAKER_INFERENCE_SUPPORTED` 環境に含まれています。

推論コンテナの定義を更新して、`predicted_label` と `probability` を受け取るには、次のコード例を参照してください。

```
containers[0]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
```

次の折りたたみ可能なセクションは、アンサンブルモードで推論レスポンスの内容を選択するコード例を示しています。この例では を使用します AWS SDK for Python (Boto3)。

#### AWS SDK for Python (Boto3)
<a name="autopilot-problem-type-inference-response-classification-ensembling-boto3"></a>

```
import boto3
sm_client = boto3.client('sagemaker', region_name='{{<Region>}}')

role = '{{<IAM role>}}'
input_data = '{{<S3 input uri>}}'
output_path = '{{<S3 output uri>}}' 

best_candidate = sm_client.describe_auto_ml_job(AutoMLJobName='{{<AutoML Job Name>}}')['BestCandidate']
best_candidate_containers = best_candidate['InferenceContainers']
best_candidate_name = best_candidate['{{CandidateName}}']

*best_candidate_containers[0]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
*
# create model
reponse = sm_client.create_model(
    ModelName = '{{<Model Name>}}',
    ExecutionRoleArn = role,
    Containers = best_candidate_containers
)

# Lauch Transform Job
response = sm_client.create_transform_job(
    TransformJobName='{{<Transform Job Name>}}',
    ModelName='{{<Model Name>}}',
    TransformInput={
        'DataSource': {
            'S3DataSource': {
                'S3DataType': '{{S3Prefix}}',
                'S3Uri': input_data
            }
        },
        'ContentType': "text/CSV",
        'SplitType': 'Line'
    },
    TransformOutput={
        'S3OutputPath': output_path,
        'AssembleWith': 'Line',
    },
    TransformResources={
        'InstanceType': '{{ml.m4.xlarge}}',
        'InstanceCount': 1,
    },
)
```

次の折りたたみ可能なセクションでは、HPO 用の SageMaker SDK for Python の例と同じコード例を示します。便宜上、ここに含めます。

#### SageMaker SDK for Python
<a name="autopilot-problem-type-inference-response-classification-ensembling-sdk"></a>

次の HPO コード例では SageMaker SDK for Python を使用しています。

```
from sagemaker import AutoML

aml = AutoML.attach(auto_ml_job_name='<AutoML Job Name>')
aml_best_model = aml.create_model(name='<Model Name>',
                                  candidate=None,
                                  *inference_response_keys**=['probabilities', 'labels'])*

aml_transformer = aml_best_model.transformer(accept='text/csv',
                                            assemble_with='Line',
                                            instance_type='ml.m5.xlarge',
                                            instance_count=1,)

aml_transformer.transform('<S3 input uri>',
                          content_type='text/csv',
                          split_type='Line',
                          job_name='<Transform Job Name>',
                          wait=True)
```