Transformation par lots pour l’inférence avec Amazon SageMaker AI
Utilisez la transformation par lots lorsque vous avez besoin d'effectuer les opérations suivantes :
-
Prétraiter les jeux de données afin d’éliminer le bruit ou les biais qui nuisent à l’entraînement ou à l’inférence à partir de votre jeu de données
-
Obtenir des inférences à partir de jeux de données volumineux
-
Exécuter l’inférence lorsque vous n’avez pas besoin d’un point de terminaison persistant
-
Associer 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.
Rubriques
Utilisation de la transformation par lots pour obtenir des inférences à partir de jeux 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 jeux de données, input1.csv, stocké dans un compartiment S3. Le contenu du fichier d'entrée peut ressembler à l'exemple suivant :
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 AI lance les instances de calcul et répartit l’inférence ou la charge de travail entre elles. 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. Quand vous disposez d’un fichier d’entrée, mais que vous initialisez plusieurs instances de calcul, une seule d’entre elles traite le fichier d’entrée. Les autres instances restent inactives.
Vous pouvez également fractionner les fichiers d'entrée en 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 AI 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. SageMaker AI utilise l’intégralité du fichier d’entrée dans une seule demande dans les cas suivants :
-
SplitTypeest défini surNone. -
Il n’est pas possible de fractionner un fichier d’entrée en mini-lots.
. 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. Vous pouvez contrôler la taille des mini-lots en utilisant les paramètres BatchStrategy et MaxPayloadInMB. MaxPayloadInMB ne doit pas dépasser 100 Mo. Si vous spécifiez le paramètre MaxConcurrentTransforms facultatif, puis la valeur de (MaxConcurrentTransforms * MaxPayloadInMB) ne doit pas non plus dépasser 100 Mo.
Quand la tâche de transformation par lots traite correctement tous les enregistrements d’un fichier d’entrée, elle crée un fichier de sortie. Celui-ci porte le même nom et la même 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://amzn-s3-demo-bucket/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
Si vous définissez SplitType sur Line, vous pouvez définir le paramètre AssembleWith sur Line pour concaténer les enregistrements de sortie à l'aide d'un délimiteur de ligne. Cela ne modifie pas le nombre de fichiers de sortie. Le nombre de fichiers de sortie est égal au nombre de fichiers d'entrée, et l'utilisation de AssembleWith ne fusionne pas les fichiers. Si vous ne spécifiez pas le paramètre AssembleWith, les enregistrements de sortie sont concaténés par défaut dans un format binaire.
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 Amazon SageMaker AI ne prennent pas en charge cette caractéristique.
Pour plus d'informations sur l'utilisation de l'API pour créer une tâche de transformation par lots, consultez l'API CreateTransformJob. Pour plus d’informations sur la relation entre les objets en entrée et en sortie d’une transformation par lots, consultez OutputDataConfig. Pour obtenir un exemple d’utilisation de la transformation par lots, consultez (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. Cela inclut des paramètres tels que MaxPayloadInMB, MaxConcurrentTransforms ou BatchStrategy. Le rapport qualité-prix idéal pour MaxConcurrentTransforms est égal au nombre de travailleurs de calcul dans la tâche de transformation par lots.
Si vous utilisez la console SageMaker AI, spécifiez ces valeurs de paramètre optimales dans la section Configuration supplémentaire de la page Configuration de tâche de transformation par lots. SageMaker AI trouve automatiquement les valeurs de paramètres optimales pour les algorithmes intégrés. Pour les algorithmes personnalisés, indiquez les valeurs suivantes par l'intermédiaire du point de terminaison execution-parameters.
Utilisation de la transformation par lots pour tester des variantes de production
Pour tester différents modèles ou différentes valeurs d’hyperparamètres, créez une tâche de transformation pour chaque nouvelle variante de modèle et utilisez un jeu 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.
Exemples de blocs-notes de transformation par lots
Pour un exemple de bloc-notes utilisant la transformation par lots, consultez Batch Transform with PCA and DBSCAN Movie Clusters
Pour obtenir des instructions expliquant comment créer des instances de blocs-notes Jupyter et y accéder afin d’exécuter l’exemple dans SageMaker AI, consultez Instances de bloc-notes Amazon SageMaker. Après avoir créé et ouvert une instance de bloc-notes, cliquez sur l’onglet Exemples SageMaker afin d’afficher une liste de tous les exemples SageMaker AI. Vous trouverez des exemples de bloc-notes de modélisation des rubriques qui utilisent 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).