Peramalan Batch - Amazon SageMaker

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Peramalan Batch

Peramalan Batch, juga dikenal sebagai inferensi offline, menghasilkan prediksi model pada batch pengamatan. Inferensi Batch adalah pilihan yang baik untuk kumpulan data besar atau jika Anda tidak memerlukan respons langsung terhadap permintaan prediksi model.

Sebaliknya, inferensi online (inferensi waktu nyata) menghasilkan prediksi secara real time.

Anda dapat menggunakan SageMaker APIs untuk mengambil kandidat terbaik dari pekerjaan AutoML dan kemudian mengirimkan sekumpulan data masukan untuk inferensi menggunakan kandidat tersebut.

  1. Ambil detail pekerjaan AutoML.

    Contoh AWS CLI perintah berikut menggunakan DescribeAutoMLJobV2APIuntuk mendapatkan rincian pekerjaan AutoML, termasuk informasi tentang kandidat model terbaik.

    aws sagemaker describe-auto-ml-job-v2 --auto-ml-job-name job-name --region region
  2. Ekstrak definisi wadah dari InferenceContainerskandidat model terbaik.

    Definisi kontainer adalah lingkungan kontainer yang digunakan untuk meng-host SageMaker model terlatih untuk membuat prediksi.

    BEST_CANDIDATE=$(aws sagemaker describe-auto-ml-job-v2 \ --auto-ml-job-name job-name --region region \ --query 'BestCandidate.InferenceContainers[0]' \ --output json

    Perintah ini mengekstrak definisi wadah untuk kandidat model terbaik dan menyimpannya dalam BEST_CANDIDATE variabel.

  3. Buat SageMaker model menggunakan definisi kontainer kandidat terbaik.

    Gunakan definisi kontainer dari langkah sebelumnya untuk membuat SageMaker model dengan menggunakan CreateModelAPI.

    aws sagemaker create-model \ --model-name 'model-name' \ --primary-container "$BEST_CANDIDATE" --execution-role-arn 'execution-role-arn>' \ --region 'region>

    --execution-role-arnParameter menentukan IAM peran yang SageMaker mengasumsikan saat menggunakan model untuk inferensi. Untuk detail tentang izin yang diperlukan untuk peran ini, lihat CreateModel API: Izin Peran Eksekusi.

  4. Buat pekerjaan transformasi batch.

    Contoh berikut membuat pekerjaan transformasi menggunakan CreateTransformJobAPI.

    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'

    Input, output, dan rincian sumber daya didefinisikan dalam JSON file terpisah:

    • 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:

      catatan

      Sebaiknya gunakan instans m5.12xlarge untuk beban kerja tujuan umum dan instance untuk tugas peramalan data besar. m5.24xlarge

      { "InstanceType": "instance-type", "InstanceCount": 1 }
  5. Pantau kemajuan pekerjaan transformasi Anda menggunakan DescribeTransformJobAPI.

    Lihat AWS CLI perintah berikut sebagai contoh.

    aws sagemaker describe-transform-job \ --transform-job-name 'transform-job-name' \ --region region
  6. Ambil output transformasi batch.

    Setelah pekerjaan selesai, hasil prediksi tersedia diS3OutputPath.

    Nama file output memiliki format berikut:input_data_file_name.out. Sebagai contoh, jika file input Andatext_x.csv, nama output akan menjaditext_x.csv.out.

    aws s3 ls s3://my-output-bucket/path/to/output/

Contoh kode berikut menggambarkan penggunaan AWS SDK untuk Python (boto3) dan AWS CLI untuk perkiraan batch.

AWS SDK for Python (boto3)

Contoh berikut menggunakan AWS SDKPython (boto3) untuk membuat prediksi dalam batch.

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

Pekerjaan inferensi batch mengembalikan respons dalam format berikut.

{'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}}
AWS Command Line Interface (AWS CLI)
  1. Dapatkan definisi wadah kandidat terbaik.

    aws sagemaker describe-auto-ml-job-v2 --auto-ml-job-name 'test-automl-job' --region us-west-2
  2. Buat model.

    aws sagemaker create-model --model-name 'test-sagemaker-model' --containers '[{ "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3", "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/data-processor-models/test-job1-dpp0-1-e569ff7ad77f4e55a7e549a/output/model.tar.gz", "Environment": { "AUTOML_SPARSE_ENCODE_RECORDIO_PROTOBUF": "1", "AUTOML_TRANSFORM_MODE": "feature-transform", "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "application/x-recordio-protobuf", "SAGEMAKER_PROGRAM": "sagemaker_serve", "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code" } }, { "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:1.3-1-cpu-py3", "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/tuning/flicdf10v2-dpp0-xgb/test-job1E9-244-7490a1c0/output/model.tar.gz", "Environment": { "MAX_CONTENT_LENGTH": "20971520", "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv", "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,probabilities" } }, { "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3", "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/data-processor-models/test-job1-dpp0-1-e569ff7ad77f4e55a7e549a/output/model.tar.gz", "Environment": { "AUTOML_TRANSFORM_MODE": "inverse-label-transform", "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv", "SAGEMAKER_INFERENCE_INPUT": "predicted_label", "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,labels,probabilities", "SAGEMAKER_PROGRAM": "sagemaker_serve", "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code" } }]' \ --execution-role-arn 'arn:aws:iam::1234567890:role/sagemaker-execution-role' \ --region 'us-west-2'
  3. Buat pekerjaan transformasi.

    aws sagemaker create-transform-job --transform-job-name 'test-tranform-job'\ --model-name 'test-sagemaker-model'\ --transform-input '{ "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": "s3://amzn-s3-demo-bucket/data.csv" } }, "ContentType": "text/csv", "SplitType": "None" }'\ --transform-output '{ "S3OutputPath": "s3://amzn-s3-demo-bucket/output/", "AssembleWith": "Line" }'\ --transform-resources '{ "InstanceType": "ml.m5.2xlarge", "InstanceCount": 1 }'\ --region 'us-west-2'
  4. Periksa kemajuan pekerjaan transformasi.

    aws sagemaker describe-transform-job --transform-job-name 'test-tranform-job' --region us-west-2

    Berikut ini adalah respons dari pekerjaan transformasi.

    { "TransformJobName": "test-tranform-job", "TransformJobArn": "arn:aws:sagemaker:us-west-2:1234567890:transform-job/test-tranform-job", "TransformJobStatus": "InProgress", "ModelName": "test-model", "TransformInput": { "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": "s3://amzn-s3-demo-bucket/data.csv" } }, "ContentType": "text/csv", "CompressionType": "None", "SplitType": "None" }, "TransformOutput": { "S3OutputPath": "s3://amzn-s3-demo-bucket/output/", "AssembleWith": "Line", "KmsKeyId": "" }, "TransformResources": { "InstanceType": "ml.m5.2xlarge", "InstanceCount": 1 }, "CreationTime": 1662495635.679, "TransformStartTime": 1662495847.496, "DataProcessing": { "InputFilter": "$", "OutputFilter": "$", "JoinSource": "None" } }

    Setelah TransformJobStatus perubahanCompleted, Anda dapat memeriksa hasil inferensi di. S3OutputPath