翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
生成されたコンテナで推論出力を設定する
Amazon SageMaker ContainerDefinition
オートパイロットは順序付きリストを生成します。これを使用して、機械学習パイプラインにデプロイするモデルの構築に使用できます。このモデルはオンラインホスティングや推論に使用できます。
顧客は、ListCandidateForAutoMLJob
API を使用して推論コンテナ定義のリストにアクセスできます。また、最良候補を表す推論コンテナ定義のリストは、DescribeAutoMLJob
レスポンスで確認できます。
回帰および分類の問題タイプのための推論コンテナ定義
このセクションでは、ハイパーパラメータ最適化 (HPO) モードのコンテナ定義について詳しく説明します。
Autopilot は、ジョブの問題タイプに特化した推論コンテナを生成します。
-
回帰:HPO は 2 つのコンテナを生成します。
-
元の特徴を回帰アルゴリズムがトレーニングできる特徴に変換する特徴エンジニアリングコンテナ。
-
特徴を変換してデータセットの回帰スコアを生成するアルゴリズムコンテナ。
-
-
分類:HPO 3 つのコンテナを生成します。
-
元の特徴を、分類アルゴリズムでトレーニングできる特徴に変換する特徴エンジニアリングコンテナ。
-
predicted_label
最も高い確率でを生成するアルゴリズムコンテナ。このコンテナは、推論レスポンスで分類結果に関連するさまざまな確率を生成することもできます。 -
アルゴリズム予測の後処理を実行する特徴量エンジニアリングコンテナ。たとえば、予測されたラベルを逆変換して元のラベルに変更できます。
-
アンサンブルモードのコンテナ定義
アンサンブリングモードでは、回帰問題タイプと分類問題タイプの両方に推論コンテナが 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_INPUT
SAGEMAKER_INFERENCE_OUTPUT
番目のコンテナにおよび変数を追加します。
2 番目のコンテナ (アルゴリズム) でサポートされているキーは、predicted_label、probability (アルゴリズム) でサポートされているキーは、predicted_label、probability (アルゴリズム) でサポートされているキーです。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
labels
およびを受け取るように推論コンテナの定義を更新しています。probabilities
は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'})
以下の折りたたみ可能なセクションでは、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
、、labels
probability
、probabilities
です。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)