Konfigurasikan output inferensi dalam wadah yang dihasilkan - Amazon SageMaker

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 pipa pembelajaran mesin. Model ini dapat digunakan untuk hosting online dan inferensi.

Pelanggan dapat membuat daftar definisi wadah inferensi dengan. ListCandidateForAutoMLJobAPI Daftar definisi wadah inferensi yang mewakili kandidat terbaik juga tersedia dalam DescribeAutoMLJobtanggapan.

Definisi wadah inferensi untuk jenis masalah regresi dan klasifikasi

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

Definisi wadah untuk mode optimasi hyperparameter (HPO)

  • Regresi: HPO menghasilkan dua kontainer:

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

    2. Wadah algoritme yang mengubah fitur dan menghasilkan skor regresi untuk kumpulan data.

  • 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, ia dapat melakukan transformasi terbalik pada label yang diprediksi dan mengubahnya ke label asli.

Definisi wadah 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:

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

  • probability:

    • HPOmodel: Probabilitas True kelas untuk klasifikasi biner. Probabilitas predicted_label untuk klasifikasi multiclass.

    • Model ansambel: Probabilitas klasifikasi biner dan multikelas. predicted_label

  • probabilities: Daftar probabilitas untuk semua kelas yang sesuai.

  • labels: Daftar semua label.

Misalnya, untuk masalah klasifikasi biner, jika Anda melewatkan 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 HPO model, probability sama dengan 0.1 probabilitas positive_class (0dalam hal ini) yang dipilih oleh Autopilot.

    Untuk model Ensemble, probability sama dengan 0.9 probabilitas. predicted_label

  3. probabilitiesdaftar probability setiap label dilabels.

  4. labelsadalah label unik dalam kumpulan data, di mana label kedua (“0" dalam kasus 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 kontainer dalam muatan input.

  • SAGEMAKER_INFERENCE_OUTPUT: Ini harus diisi dengan set kunci yang dikeluarkan kontainer.

Respons inferensi untuk model klasifikasi dalam mode HPO

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

Untuk memilih konten respons inferensi dalam HPO mode: Tambahkan SAGEMAKER_INFERENCE_OUTPUT variabel SAGEMAKER_INFERENCE_INPUT dan ke wadah kedua dan ketiga yang dihasilkan dalam HPO mode 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 for Python (Boto3) dan SageMaker SDK untuk Python. Setiap bagian menunjukkan cara memilih konten respons inferensi dalam HPO mode 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 lingkungan. SAGEMAKER_INFERENCE_OUTPUT

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

Untuk memperbarui definisi kontainer 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. Contoh menggunakan 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, }, )

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

Contoh HPO kode berikut digunakan SageMaker SDK untuk Python.

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)