View a markdown version of this page

Konfigurasikan output inferensi dalam wadah yang dihasilkan - Amazon SageMaker AI

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

Konfigurasikan output inferensi dalam wadah yang dihasilkan

Autopilot menghasilkan daftar yang diurutkan ContainerDefinition. Ini dapat digunakan untuk membangun model untuk diterapkan dalam pipeline pembelajaran mesin. Model ini dapat digunakan untuk hosting dan inferensi online.

Pelanggan dapat membuat daftar definisi wadah inferensi dengan ListCandidateForAutoMLJob API. Daftar definisi wadah inferensi yang mewakili kandidat terbaik juga tersedia dalam DescribeAutoMLJob respons.

Definisi wadah inferensi untuk tipe masalah regresi dan klasifikasi

Autopilot menghasilkan wadah inferensi khusus untuk mode pelatihan dan jenis masalah pekerjaan.

Definisi kontainer untuk mode optimasi hyperparameter (HPO)

  • Regresi: HPO menghasilkan dua wadah:

    1. Wadah rekayasa fitur yang mengubah fitur asli menjadi fitur yang dapat dilatih oleh algoritma regresi.

    2. Wadah algoritma yang mengubah fitur dan menghasilkan skor regresi untuk dataset.

  • Klasifikasi: HPO menghasilkan tiga wadah:

    1. Wadah rekayasa fitur yang mengubah fitur asli menjadi fitur yang dapat dilatih oleh algoritma klasifikasi.

    2. Sebuah wadah algoritma yang menghasilkan predicted_label dengan probabilitas tertinggi. Wadah ini juga dapat menghasilkan berbagai probabilitas yang terkait dengan hasil klasifikasi dalam respons inferensi.

    3. Sebuah wadah rekayasa fitur yang melakukan pasca-pemrosesan prediksi algoritma. Misalnya, dapat melakukan transformasi terbalik pada label yang diprediksi dan mengubahnya ke label asli.

Definisi kontainer untuk mode ansambel

Dalam mode ansambel, tipe masalah regresi dan klasifikasi hanya memiliki satu wadah inferensi. Wadah inferensi ini mengubah fitur dan menghasilkan prediksi berdasarkan jenis masalah.

Respons inferensi per jenis masalah

Respons inferensi untuk model klasifikasi

Untuk wadah inferensi klasifikasi, Anda dapat memilih konten respons inferensi dengan menggunakan empat kunci yang telah ditentukan sebelumnya:

  • predicted_label: Label dengan probabilitas tertinggi untuk memprediksi label yang benar, seperti yang ditentukan oleh Autopilot.

  • probability:

    • Model HPO: Pro babilitas True kelas untuk klasifikasi biner. Probabilitas klasifikasi predicted_label untuk multiclass.

    • Model ansambel: Probabilitas predicted_label untuk klasifikasi biner dan multiclass.

  • probabilities: Daftar probabilitas untuk semua kelas yang sesuai.

  • labels: Daftar semua label.

Misalnya, untuk masalah klasifikasi biner, jika Anda meneruskan kunci respons inferensi ['predicted_label', 'probability', 'probabilities', 'labels'] dan respons keluaran muncul sebagai[1, 0.1, "[0.9, 0.1]", "['1', '0']"], Anda harus menafsirkannya sebagai berikut:

  1. predicted_labelsama 1 karena label “1" memiliki probabilitas yang lebih tinggi (0.9dalam hal ini).

  2. Untuk model HPO, probability sama dengan probabilitas positive_class (0dalam hal ini) 0.1 yang dipilih oleh Autopilot.

    Untuk model Ensem probability ble0.9, sama dengan probabilitaspredicted_label.

  3. probabilitiesmencant probability umkan setiap label dilabels.

  4. labelsadalah label unik dalam dataset, di mana label kedua (“0" dalam hal ini) positive_class dipilih oleh Autopilot.

Secara default, wadah inferensi dikonfigurasi untuk menghasilkan hanya. predicted_label Untuk memilih konten inferensi tambahan, Anda dapat memperbarui inference_response_keys parameter untuk menyertakan hingga tiga variabel lingkungan ini:

  • SAGEMAKER_INFERENCE_SUPPORTED: Ini diatur untuk memberikan petunjuk kepada Anda tentang konten apa yang didukung setiap wadah.

  • SAGEMAKER_INFERENCE_INPUT: Ini harus diatur ke kunci yang diharapkan wadah dalam muatan input.

  • SAGEMAKER_INFERENCE_OUTPUT: Ini harus diisi dengan kumpulan kunci yang dikeluarkan wadah.

Respons inferensi untuk model klasifikasi dalam mode HPO

Bagian ini menunjukkan cara mengkonfigurasi respons inferensi dari model klasifikasi menggunakan mode optimasi hyperparameter (HPO).

Untuk memilih konten respons inferensi dalam mode HPO: Tambahkan SAGEMAKER_INFERENCE_OUTPUT variabel SAGEMAKER_INFERENCE_INPUT dan ke wadah kedua dan ketiga yang dihasilkan dalam mode HPO untuk masalah klasifikasi.

Kunci yang didukung oleh wadah kedua (algoritma) adalah predicted_label, probabilitas, dan probabilitas. Perhatikan labels bahwa sengaja tidak ditambahkan keSAGEMAKER_INFERENCE_SUPPORTED.

Kunci yang didukung oleh wadah model klasifikasi ketiga adalahpredicted_label,labels,probability, danprobabilities. Oleh karena itu, SAGEMAKER_INFERENCE_SUPPORTED lingkungan menyertakan nama-nama kunci ini.

Untuk memperbarui definisi wadah inferensi untuk menerima predicted_label danprobability, gunakan contoh kode berikut.

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

Contoh kode berikut memperbarui definisi wadah inferensi untuk menerimapredicted_label,probabilities, danlabels. Jangan meneruskan labels ke wadah kedua (wadah algoritma), karena dihasilkan oleh wadah ketiga secara independen.

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

Bagian yang dapat dilipat berikut memberikan contoh kode untuk AWS SDK untuk Python (Boto3) dan untuk SageMaker Python SDK. Setiap bagian menunjukkan cara memilih konten respons inferensi dalam mode HPO untuk contoh kode masing-masing.

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)

Respons inferensi untuk model klasifikasi dalam mode ansambel

Bagian ini menunjukkan cara mengonfigurasi respons inferensi dari model klasifikasi menggunakan mode ansambel.

Dalam mode ansambel, untuk memilih konten respons inferensi, perbarui variabel SAGEMAKER_INFERENCE_OUTPUT lingkungan.

Kunci yang didukung oleh wadah model klasifikasi adalahpredicted_label,labels,probability, danprobabilities. Kunci ini termasuk dalam SAGEMAKER_INFERENCE_SUPPORTED lingkungan.

Untuk memperbarui definisi wadah inferensi untuk menerima predicted_label danprobability, lihat contoh kode berikut.

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

Bagian yang dapat dilipat berikut memberikan contoh kode untuk memilih konten respons inferensi dalam mode ansambel. Contohnya menggunakan AWS SDK untuk 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, }, )

Bagian yang dapat dilipat berikut memberikan contoh kode yang identik dengan contoh SageMaker Python SDK untuk HPO. Ini termasuk untuk kenyamanan Anda.

Contoh kode HPO berikut menggunakan SageMaker Python 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)