生成されたコンテナで推論出力を設定する - アマゾン SageMaker

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

生成されたコンテナで推論出力を設定する

Amazon SageMaker ContainerDefinitionオートパイロットは順序付きリストを生成します。これを使用して、機械学習パイプラインにデプロイするモデルの構築に使用できます。このモデルはオンラインホスティングや推論に使用できます。

顧客は、ListCandidateForAutoMLJob API を使用して推論コンテナ定義のリストにアクセスできます。また、最良候補を表す推論コンテナ定義のリストは、DescribeAutoMLJobレスポンスで確認できます。

回帰および分類の問題タイプのための推論コンテナ定義

このセクションでは、ハイパーパラメータ最適化 (HPO) モードのコンテナ定義について詳しく説明します。

Autopilot は、ジョブの問題タイプに特化した推論コンテナを生成します。

  • 回帰:HPO は 2 つのコンテナを生成します。

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

    2. 特徴を変換してデータセットの回帰スコアを生成するアルゴリズムコンテナ。

  • 分類:HPO 3 つのコンテナを生成します。

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

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

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

アンサンブルモードのコンテナ定義

アンサンブリングモードでは、回帰問題タイプと分類問題タイプの両方に推論コンテナが 1 つだけあります。この推論コンテナは、特徴を変換し、問題の種類に基づいて予測を生成します。

分類モデルの推論レスポンス

このセクションでは、アンサンブルモードにおける Autopilot 分類モデルの推論レスポンスの選択について説明します。

分類推論コンテナの場合、4 つの定義済みキーを使用して推論レスポンスのコンテンツを選択できます。

  • predicted_label: 自動操縦によって決定された、正しいラベルを予測できる可能性が最も高いラベル。

  • probability: 二項分類のための True クラスの確率。predicted_label多クラス分類のためのの確率。

  • probabilities: 対応するすべてのクラスの確率のリスト。

  • labels: すべてのラベルのリスト。

デフォルトでは、predicted_label推論コンテナはのみを生成するように設定されています。追加の推論コンテンツを選択するには、以下の 3inference_response_keys つまでの環境変数を含むようにパラメーターを更新できます。

  • SAGEMAKER_INFERENCE_SUPPORTED: これは、各コンテナがサポートするコンテンツについてのヒントを提供するために設定されます。

  • SAGEMAKER_INFERENCE_INPUT: これは、コンテナが入力ペイロードに期待するキーに設定してください。

  • SAGEMAKER_INFERENCE_OUTPUT: これには、コンテナから出力される一連のキーを入力します。

HPO モードでの分類モデルの推論レスポンスをとる

このセクションでは、ハイパーパラメーター最適化 (HPO) モードを使用して分類モデルからの推論応答を構成する方法を示します。

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

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

3 番目の分類モデルコンテナでサポートされているキーはpredicted_label、、labelsprobabilityprobabilitiesおよびです。そのため、SAGEMAKER_INFERENCE_SUPPORTED環境にはこれらのキーの名前が含まれます。

とを受け取る推論コンテナの定義を更新するにはpredicted_labelprobability、次のコードサンプルを使用します。

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_labellabelsおよびを受け取るように推論コンテナの定義を更新しています。probabilitieslabels 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'})

以下の折りたたみ可能なセクションでは、Python 用の SDKAWS SDK for Python (Boto3) と SageMaker SDK のコード例を紹介します。各セクションでは、それぞれのコードサンプルに対して HPO モードで推論レスポンスのコンテンツを選択する方法を示します。

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, }, )
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)

アンサンブルモードでの分類モデルの推論レスポンスをとる

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

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

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

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

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

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

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 サンプルと同じコード例を示しています。便宜上、付属します。

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

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)