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. ListCandidateForAutoMLJob
API Daftar definisi wadah inferensi yang mewakili kandidat terbaik juga tersedia dalam DescribeAutoMLJob
tanggapan.
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:
-
Wadah rekayasa fitur yang mengubah fitur asli menjadi fitur yang dapat dilatih oleh algoritme regresi.
-
Wadah algoritme yang mengubah fitur dan menghasilkan skor regresi untuk kumpulan data.
-
-
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_label
dengan 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, 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. Probabilitaspredicted_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:
-
predicted_label
sama1
karena label “1" memiliki probabilitas yang lebih tinggi (0.9
dalam hal ini). -
Untuk HPO model,
probability
sama dengan0.1
probabilitaspositive_class
(0
dalam hal ini) yang dipilih oleh Autopilot.Untuk model Ensemble,
probability
sama dengan0.9
probabilitas.predicted_label
-
probabilities
daftarprobability
setiap label dilabels
. -
labels
adalah 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)