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:
-
Wadah rekayasa fitur yang mengubah fitur asli menjadi fitur yang dapat dilatih oleh algoritma regresi.
-
Wadah algoritma yang mengubah fitur dan menghasilkan skor regresi untuk dataset.
-
-
Klasifikasi: HPO menghasilkan tiga wadah:
-
Wadah rekayasa fitur yang mengubah fitur asli menjadi fitur yang dapat dilatih oleh algoritma klasifikasi.
-
Sebuah wadah algoritma yang menghasilkan
predicted_labeldengan probabilitas tertinggi. Wadah ini juga dapat menghasilkan berbagai probabilitas yang terkait dengan hasil klasifikasi dalam respons inferensi. -
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
Truekelas untuk klasifikasi biner. Probabilitas klasifikasipredicted_labeluntuk multiclass. -
Model ansambel: Probabilitas
predicted_labeluntuk 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:
-
predicted_labelsama1karena label “1" memiliki probabilitas yang lebih tinggi (0.9dalam hal ini). -
Untuk model HPO,
probabilitysama dengan probabilitaspositive_class(0dalam hal ini)0.1yang dipilih oleh Autopilot.Untuk model Ensem
probabilityble0.9, sama dengan probabilitaspredicted_label. -
probabilitiesmencantprobabilityumkan setiap label dilabels. -
labelsadalah label unik dalam dataset, di mana label kedua (“0" dalam hal ini)positive_classdipilih 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)