Utilisation de la transformation par lots - Amazon SageMaker

Utilisation de la transformation par lots

Utilisez la transformation par lots lorsque vous avez besoin d'effectuer les opérations suivantes :

  • Utilisez le prétraitement pour supprimer de votre ensemble de données le bruit ou le biais qui interfère avec l'entraînement ou l'inférence de votre ensemble de données.

  • Obtenez des inférences à partir d'ensembles de données volumineux.

  • Exécutez l'inférence lorsque vous n'avez pas besoin d'un point de terminaison persistant.

  • Associez les enregistrements d'entrée aux inférences pour faciliter l'interprétation des résultats.

Pour filtrer des données d'entrée avant de procéder à des inférences ou pour associer des enregistrements d'entrée à des inférences relatives à ces enregistrements, consultez Association de résultats de prédiction à des enregistrements d'entrée. Par exemple, vous pouvez filtrer les données d'entrée pour fournir un contexte permettant de créer et d'interpréter les rapports sur les données de sortie.

Pour plus d'informations sur la transformation par lots, consultez Obtenir des inférences pour un ensemble de données tout entier à l'aide de la transformation par lots.

Utilisation de la transformation par lots pour obtenir des inférences à partir d'ensembles de données volumineux

La transformation par lots gère automatiquement le traitement des jeux de données volumineux dans les limites des paramètres spécifiés. Par exemple, supposons que vous disposez d'un fichier de jeu de données, input1.csv,, stocké dans un compartiment S3. Le contenu du fichier d'entrée peut se présenter comme suit :

Record1-Attribute1, Record1-Attribute2, Record1-Attribute3, ..., Record1-AttributeM Record2-Attribute1, Record2-Attribute2, Record2-Attribute3, ..., Record2-AttributeM Record3-Attribute1, Record3-Attribute2, Record3-Attribute3, ..., Record3-AttributeM ... RecordN-Attribute1, RecordN-Attribute2, RecordN-Attribute3, ..., RecordN-AttributeM

Au démarrage d'une tâche de transformation par lots, SageMaker initialise les instances de calcul et distribue l'application d'inférence ou de prétraitement entre celles-ci. La transformation par lots partitionne les objets Amazon S3 dans l'entrée par clé et mappe les objets Amazon S3 aux instances. Lorsque vous disposez de plusieurs fichiers, la première instance peut traiter input1.csv et la seconde instance peut traiter un autre fichier nommé input2.csv.

Pour empêcher les charges utiles volumineuses de dépasser la limite MaxPayloadInMB , vous pouvez fractionner un fichier d'entrée en plusieurs mini-lots. Par exemple, vous pouvez créer un mini-lot à partir de input1.csv en incluant uniquement deux des fichiers.

Record3-Attribute1, Record3-Attribute2, Record3-Attribute3, ..., Record3-AttributeM Record4-Attribute1, Record4-Attribute2, Record4-Attribute3, ..., Record4-AttributeM
Note

SageMaker traite chaque fichier d'entrée séparément. Il ne combine pas les mini-lots de différents fichiers d'entrée pour respecter la limite MaxPayloadInMB .

Pour fractionner les fichiers d'entrée en mini-lots, lorsque vous créez une tâche de transformation par lots, définissez la valeur du paramètre SplitType sur Line. Si SplitType est défini sur None ou si un fichier d'entrée ne peut pas être fractionné en mini-lots, SageMaker utilise le fichier d'entrée complet dans une seule requête. Notez que Batch Transform ne prend pas en charge les entrées au format CSV contenant des caractères de saut de ligne intégrés.

Si la tâche de transformation par lots traite correctement tous les enregistrements du fichier d'entrée, elle crée un fichier de sortie portant le même nom auquel est ajouté l'extension de fichier .out. Lorsqu'il y a plusieurs fichiers d'entrée, comme input1.csv et input2.csv, les fichiers de sortie sont nommés input1.csv.out et input2.csv.out. La tâche de transformation par lots stocke les fichiers de sortie à l'emplacement spécifié dans Amazon S3, par exemple s3://awsexamplebucket/output/.

Dans un fichier de sortie, les prédictions sont répertoriées dans le même ordre que les enregistrements correspondants dans le fichier d'entrée. Le fichier de sortie input1.csv.out, basé sur le fichier d'entrée indiqué précédemment, se présente comme suit.

Inference1-Attribute1, Inference1-Attribute2, Inference1-Attribute3, ..., Inference1-AttributeM Inference2-Attribute1, Inference2-Attribute2, Inference2-Attribute3, ..., Inference2-AttributeM Inference3-Attribute1, Inference3-Attribute2, Inference3-Attribute3, ..., Inference3-AttributeM ... InferenceN-Attribute1, InferenceN-Attribute2, InferenceN-Attribute3, ..., InferenceN-AttributeM

Pour combiner les résultats de plusieurs fichiers de sortie en un seul fichier de sortie, définissez le paramètre AssembleWith sur Line.

Lorsque les données d'entrée sont très volumineuses et sont transmises à l'aide de l'encodage segmenté HTTP, pour diffuser les données vers l'algorithme, définissez MaxPayloadInMB sur 0. Les algorithmes intégrés d'Amazon SageMaker ne prennent pas en charge cette fonction pour le moment.

Pour de plus amples informations sur l'utilisation de l'API pour créer une tâche de transformation par lots, veuillez consulter l'API CreateTransformJob. Pour de plus amples informations sur la corrélation entre les objets en entrée et en sortie d'une transformation par lots, veuillez consulter OutputDataConfig. Pour obtenir un exemple d'utilisation de la transformation par lots, veuillez consulter (Facultatif) Faire une prédiction avec la transformation par lots.

Accélération d'une tâche de transformation par lots

Si vous utilisez l'API CreateTransformJob, vous pouvez réduire le temps nécessaire à l'exécution des tâches de transformation par lots en utilisant des valeurs optimales pour les paramètres, telles que MaxPayloadInMB, MaxConcurrentTransforms, ou BatchStrategy. Si vous utilisez la console SageMaker, vous pouvez spécifier ces valeurs de paramètre optimales dans la section Additional configuration (Configuration supplémentaire) de la page Batch transform job configuration (Configuration de tâche de transformation par lots). SageMaker trouve automatiquement les valeurs de paramètres optimales pour les algorithmes intégrés. Pour les algorithmes personnalisés, indiquez ces valeurs par l'intermédiaire d'un point de terminaison paramètres d'exécution.

Utilisation de la transformation par lots pour tester des variantes de production

Pour tester différents modèles ou différentes valeurs d'hyperparamètre, créez une tâche de transformation pour chaque nouvelle variante de modèle et utilisez un ensemble de données de validation. Pour chaque tâche de transformation, spécifiez un nom et un emplacement de modèle uniques dans Amazon S3 pour le fichier de sortie. Pour analyser les résultats, utilisez Journaux et métriques des pipelines d'inférence.

Erreurs de transformation par lots

SageMaker utilise l'API de chargement partitionné Amazon S3 pour télécharger les résultats d'une tâche de transformation par lots vers Amazon S3. En cas d'erreur, les résultats téléchargés sont supprimés d'Amazon S3. Dans certains cas, par exemple une indisponibilité du réseau, un chargement partitionné incomplet peut être conservé dans Amazon S3. Pour éviter les frais de stockage, nous vous recommandons d'ajouter la stratégie de compartiment S3 aux règles de cycle de vie du compartiment S3. Cette stratégie supprime les chargements partitionnés incomplets qui pourraient être stockés dans le compartiment S3. Pour de plus amples informations, veuillez consulter Gestion du cycle de vie des objets.

Si une tâche de transformation par lots ne parvient pas à traiter un fichier d'entrée en raison d'un problème avec le jeu de données, SageMaker vous avertit en marquant la tâche comme failed. Si un fichier d'entrée contient un enregistrement incorrect, la tâche de transformation ne crée pas de fichier de sortie pour ce fichier d'entrée, car cela l'empêche de conserver le même ordre dans les données transformées que dans le fichier d'entrée. Lorsque votre ensemble de données comporte plusieurs fichiers d'entrée, une tâche de transformation continue à traiter les fichiers d'entrée même si l'un de ces fichiers ne peut pas être traité. Les fichiers traités génèrent quand même des résultats exploitables.

Le dépassement de la limite MaxPayloadInMB provoque une erreur. Cette erreur peut se produire lorsqu'un jeu de données volumineux ne peut pas être fractionné, que le paramètre SplitType est défini sur none ou que des enregistrements individuels dans le jeu de données dépassent la limite.

Si vous utilisez vos propres algorithmes, vous pouvez utiliser un espace réservé au texte, par exemple ERROR, lorsque l'algorithme détecte un mauvais enregistrement dans un fichier d'entrée. Par exemple, si le dernier enregistrement d'un ensemble de données est mauvais, l'algorithme place le texte de l'espace réservé pour cet enregistrement dans le fichier de sortie.

Exemples de bloc-notes de transformation par lots

Pour obtenir un exemple de bloc-notes qui utilise la transformation par lots avec un modèle d'analyse des composants principaux (PCA) pour réduire les données dans une matrice de révision d'élément utilisateur, suivi de l'application d'un algorithme de clustering spatial basé sur la densité d'applications avec bruit (DBSCAN) aux films en cluster, consultez Batch Transform with PCA and DBSCAN Movie Clusters. Pour obtenir des instructions relatives à la création et l'accès à des instances de blocs-notes Jupyter afin d'exécuter l'exemple dans SageMaker, veuillez consulter Utilisation des instances de bloc-notes Amazon SageMaker. Après avoir créé et ouvert une instance de bloc-notes, choisissez l'onglet SageMaker Examples (Exemples SageMaker) pour afficher une liste de tous les exemples SageMaker. Vous trouverez des exemples de bloc-notes de modélisation des rubriques utilisant les algorithmes NTM dans la section Advanced functionality (Fonctionnalité avancée). Pour ouvrir un bloc-notes, choisissez l'onglet Use (Utiliser) correspondant, puis Create copy (Créer une copie).