Configurer la sortie d'inférence dans les conteneurs générés par AutoPilote
Amazon SageMaker Autopilot génère une liste ordonnée ContainerDefinition
qui peut être utilisée pour créer un modèle à déployer dans un pipeline de machine learning. Ce modèle peut être utilisé pour l'hébergement en ligne et l'inférence. Les clients peuvent accéder à la liste des définitions des conteneurs d'inférence à l'aide de l'API ListCandidateForAutoMLJob
. La liste des définitions des conteneurs d'inférence représentant le meilleur candidat est également disponible dans la réponse DescribeAutoMLJob
.
Rubriques
Définitions des conteneurs d'inférence pour les types de problèmes de régression et de classification
Les conteneurs d'inférence générés dépendent du type de problème de la tâche.
-
Régression : génère deux conteneurs :
-
Le premier est le conteneur d'ingénierie des fonctionnalités qui transforme les fonctions originales en des fonctions sur lesquelles les algorithmes de régression peuvent s'entraîner.
-
Le deuxième est le conteneur d'algorithme qui transforme les fonctions et génère le score de régression pour le jeu de données.
-
-
Classification : génère trois conteneurs :
-
Le premier est le conteneur d'ingénierie des fonctionnalités qui transforme les fonctions originales en des fonctions sur lesquelles les algorithmes de classification peuvent s'entraîner.
-
Le deuxième est le conteneur d'algorithme qui génère l'
predicted_label
gagnante et peut aussi produire les diverses probabilités associées aux résultats de classification dans la réponse d'inférence. -
Le troisième est un conteneur d'ingénierie des fonctionnalités qui effectue le post-traitement de la prédiction de l'algorithme, par exemple une transformation inverse de l'étiquette prédite vers l'étiquette d'origine.
-
Sélectionner la réponse d'inférence pour les modèles de classification
Les conteneurs d'inférence de classification vous permettent de sélectionner le contenu des réponses d'inférence. Il y a quatre clés prédéfinies :
-
predicted_label
: l'étiquette gagnante déterminée par Autopilot. -
probability
: la probabilité de la classeTrue
pour la classification binaire. La probabilité de la classe gagnante pour la classification multiclasse. -
probabilities
: la liste des probabilités pour toutes les étiquettes correspondantes. -
labels
: la liste de toutes les étiquettes
Par défaut, les conteneurs d'inférence sont configurés pour générer les predicted_label
uniquement.
Trois variables d'environnement sont utilisées pour sélectionner le contenu d'inférence facultatif :
-
SAGEMAKER_INFERENCE_SUPPORTED
: est définie pour vous fournir des conseils sur le contenu pris en charge par chaque conteneur. -
SAGEMAKER_INFERENCE_INPUT
: doit être définie aux clés que le conteneur attend dans sa charge utile d'entrée. -
SAGEMAKER_INFERENCE_OUTPUT
: doit être renseignée avec le jeu de clés que le conteneur délivre en sortie.
Afin de choisir le contenu de la réponse d'inférence, nous devons ajouter les SAGEMAKER_INFERENCE_INPUT
et SAGEMAKER_INFERENCE_OUTPUT
de manière appropriée dans les deuxième et troisième conteneurs de la liste des conteneurs associés au problème de classification.
Les clés prises en charge par le troisième conteneur du modèle de classification sont predicted_label
, labels
, probability
et probabilities
. L'environnement SAGEMAKER_INFERENCE_SUPPORTED
inclut donc les noms de toutes ces clés.
Les clés prises en charge par le deuxième conteneur (algorithme) sont predicted_label, probabilité et probabilités. Vous noterez que les étiquettes ne sont volontairement pas ajoutées au SAGEMAKER_INFERENCE_SUPPORTED.
Voici comment mettre à jour la définition des conteneurs d'inférence pour recevoir predicted_label
et probability
.
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'})
Voici comment mettre à jour la définition des conteneurs d'inférence pour recevoir predicted_label
, probabilities
et labels
. Vous n'avez pas besoin de passer les labels
au deuxième conteneur, le conteneur d'algorithme, car, en raison de la redondance, elles peuvent être générées par le troisième conteneur indépendamment. Cela réduit la latence.
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'})
Vous pouvez utiliser le kit SDK Python Amazon SageMaker
from sagemaker import AutoML aml = AutoML.attach(auto_ml_job_name='AUTOML_JOB_NAME') aml_best_model = aml.create_model(name='SELECT_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(test_data_s3_path, content_type='text/csv', split_type='Line', job_name=<Add jobName>, wait=True)