翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
バッチ予測は、オフライン推論とも呼ばれ、バッチ観測に基づいてモデル予測を生成します。バッチ推論は、データセットが大きい場合や、モデル予測のリクエストにすぐに応答する必要がない場合に適しています。
これとは対照的に、オンライン推論 (リアルタイム推論) はリアルタイムで予測を生成します。
SageMaker API を使用して AutoML ジョブの最適な候補を取得し、その候補を使用して推論用の入力データのバッチを送信できます。
-
AutoML ジョブの詳細を取得します。
次の AWS CLI コマンド例では、DescribeAutoMLJobV2 API を使用して、最適なモデル候補に関する情報など、AutoML ジョブの詳細を取得します。
aws sagemaker describe-auto-ml-job-v2 --auto-ml-job-name
job-name
--regionregion
-
InferenceContainers から最適なモデル候補のコンテナ定義を抽出します。
コンテナ定義は、予測を行うためにトレーニングされた SageMaker AI モデルをホストするために使用されるコンテナ化された環境です。
BEST_CANDIDATE=$(aws sagemaker describe-auto-ml-job-v2 \ --auto-ml-job-name
job-name
--regionregion
\ --query 'BestCandidate.InferenceContainers[0]' \ --output jsonこのコマンドは、最適なモデル候補のコンテナ定義を抽出して、
BEST_CANDIDATE
変数に保存します。 -
最適な候補コンテナ定義を使用して SageMaker AI モデルを作成します。
前のステップのコンテナ定義を使用して、CreateModel API を使用して SageMaker AI モデルを作成します。
aws sagemaker create-model \ --model-name '
model-name
' \ --primary-container "$BEST_CANDIDATE" --execution-role-arn 'execution-role-arn>
' \ --region 'region>
--execution-role-arn
パラメータは、モデルを推論に使用するときに SageMaker AI が引き受ける IAM ロールを指定します。このロールに必要なアクセス許可の詳細については、「CreateModel API: Execution Role Permissions」を参照してください。 -
バッチ変換ジョブを作成します。
次の例では、CreateTransformJob API を使用して変換ジョブを作成します。
aws sagemaker create-transform-job \ --transform-job-name '
transform-job-name
' \ --model-name 'model-name
'\ --transform-input file://transform-input.json \ --transform-output file://transform-output.json \ --transform-resources file://transform-resources.json \ --region 'region
'入力、出力、リソースの詳細は、個別の JSON ファイルで定義されます。
-
transform-input.json
:{ "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": "s3://my-input-data-bucket/path/to/input/data" } }, "ContentType": "text/csv", "SplitType": "None" }
-
transform-output.json
:{ "S3OutputPath": "s3://my-output-bucket/path/to/output", "AssembleWith": "Line" }
-
transform-resources.json
:注記
汎用ワークロードには m5.12xlarge
インスタンスを使用し、ビッグデータ予測タスクには m5.24xlarge
インスタンスを使用することをお勧めします。{ "InstanceType": "instance-type", "InstanceCount": 1 }
-
-
DescribeTransformJob API を使用して変換ジョブの進行状況を監視します。
例として、次の AWS CLI コマンドを参照してください。
aws sagemaker describe-transform-job \ --transform-job-name '
transform-job-name
' \ --regionregion
-
バッチ変換出力を取得します。
ジョブが終了すると、予測された結果が
S3OutputPath
に表示されます。出力ファイル名は以下のの形式です。
input_data_file_name.out
例えば、入力ファイルがtext_x.csv
の場合、出力名はtext_x.csv.out
になります。aws s3 ls
s3://my-output-bucket/path/to/output/
次のコード例は、 AWS SDK for Python (boto3) と をバッチ予測に使用する AWS CLI 方法を示しています。
以下の例では AWS SDK for Python (boto3) を使用してバッチで予測を行います。
import sagemaker import boto3 session = sagemaker.session.Session() sm_client = boto3.client('sagemaker', region_name='
us-west-2
') role = 'arn:aws:iam::1234567890:role/sagemaker-execution-role
' output_path = 's3://test-auto-ml-job/output
' input_data = 's3://test-auto-ml-job/test_X.csv
' best_candidate = sm_client.describe_auto_ml_job_v2(AutoMLJobName=job_name)['BestCandidate'] best_candidate_containers = best_candidate['InferenceContainers'] best_candidate_name = best_candidate['CandidateName'] # create model reponse = sm_client.create_model( ModelName = best_candidate_name, ExecutionRoleArn = role, Containers = best_candidate_containers ) # Lauch Transform Job response = sm_client.create_transform_job( TransformJobName=f'{best_candidate_name}-transform-job', ModelName=model_name, TransformInput={ 'DataSource': { 'S3DataSource': { 'S3DataType': 'S3Prefix', 'S3Uri': input_data } }, 'ContentType': "text/csv
", 'SplitType': 'None' }, TransformOutput={ 'S3OutputPath': output_path, 'AssembleWith': 'Line', }, TransformResources={ 'InstanceType': 'ml.m5.2xlarge
', 'InstanceCount':1
, }, )
バッチ推論ジョブは、以下の形式でレスポンスを返します。
{'TransformJobArn': '
arn:aws:sagemaker:us-west-2:1234567890:transform-job/test-transform-job
', 'ResponseMetadata': {'RequestId': '659f97fc-28c4-440b-b957-a49733f7c2f2', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '659f97fc-28c4-440b-b957-a49733f7c2f2', 'content-type': 'application/x-amz-json-1.1', 'content-length': '96', 'date': 'Thu, 11 Aug 2022 22:23:49 GMT'}, 'RetryAttempts': 0}}