

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Transformation par lots à des fins d'inférence avec Amazon AI SageMaker
<a name="batch-transform"></a>

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](batch-transform-data-processing.md). 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.

**Topics**
+ [

## Utilisation de la transformation par lots pour obtenir des inférences à partir de jeux de données volumineux
](#batch-transform-large-datasets)
+ [

## Accélération d’une tâche de transformation par lots
](#batch-transform-reduce-time)
+ [

## Utilisation de la transformation par lots pour tester des variantes de production
](#batch-transform-test-variants)
+ [

## Exemples de blocs-notes de transformation par lots
](#batch-transform-notebooks)
+ [

# Association de résultats de prédiction à des enregistrements d'entrée
](batch-transform-data-processing.md)
+ [

# Stockage dans une transformation par lots
](batch-transform-storage.md)
+ [

# Résolution des problèmes
](batch-transform-errors.md)

## Utilisation de la transformation par lots pour obtenir des inférences à partir de jeux de données volumineux
<a name="batch-transform-large-datasets"></a>

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
```

Lorsqu'une tâche de transformation par lots démarre, l' SageMaker IA démarre des instances de calcul et répartit la charge de travail d'inférence ou de prétraitement 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 L'IA 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 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB               ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB               ).

Pour diviser les fichiers d'entrée en mini-lots lorsque vous créez une tâche de transformation par lots, définissez la valeur du [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             )paramètre sur. `Line` SageMaker AI utilise l'intégralité du fichier d'entrée dans une seule requête lorsque :
+ `SplitType` est défini sur `None`.
+ 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](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-BatchStrategy)` et `[MaxPayloadInMB](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxPayloadInMB)`. `MaxPayloadInMB` ne doit pas dépasser 100 Mo. Si vous spécifiez le paramètre `[MaxConcurrentTransforms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-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 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             ) sur `Line`, vous pouvez définir le paramètre [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-AssembleWith             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-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 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB) sur `0`. Les algorithmes intégrés d'Amazon SageMaker AI ne prennent pas en charge cette fonctionnalité.

Pour plus d'informations sur l'utilisation de l'API pour créer une tâche de transformation par lots, consultez l'API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html). Pour plus d’informations sur la relation entre les objets en entrée et en sortie d’une transformation par lots, consultez [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputDataConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputDataConfig.html). Pour obtenir un exemple d’utilisation de la transformation par lots, consultez [(Facultatif) Faire une prédiction avec la transformation par lots](ex1-model-deployment.md#ex1-batch-transform).

## Accélération d’une tâche de transformation par lots
<a name="batch-transform-reduce-time"></a>

Si vous utilisez l’API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html), 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 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB), [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxConcurrentTransforms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxConcurrentTransforms) ou [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-BatchStrategy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-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ètres optimales dans la section **Configuration supplémentaire de la page de configuration** de la **tâche de transformation par lots**. SageMaker L'IA trouve automatiquement les paramètres optimaux 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](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-batch-code.html#your-algorithms-batch-code-how-containe-serves-requests).

## Utilisation de la transformation par lots pour tester des variantes de production
<a name="batch-transform-test-variants"></a>

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](inference-pipeline-logs-metrics.md).

## Exemples de blocs-notes de transformation par lots
<a name="batch-transform-notebooks"></a>

Pour un exemple de bloc-notes utilisant la transformation par lots, consultez [Batch Transform with PCA and DBSCAN Movie Clusters](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker_batch_transform/introduction_to_batch_transform/batch_transform_pca_dbscan_movie_clusters.html). Ce bloc-notes utilise la transformation par lots avec un modèle d’analyse des composants principaux (PCA) pour réduire les données dans une matrice d’évaluation utilisateur-article. Il montre ensuite l’application d’un algorithme de regroupement spatial d’applications basé sur la densité avec bruit (DBSCAN) pour regrouper les films en clusters.

 Pour obtenir des instructions sur la création et l'accès aux instances de bloc-notes Jupyter que vous pouvez utiliser pour exécuter l'exemple dans SageMaker AI, consultez. [Instances de SageMaker blocs-notes Amazon](nbi.md) Après avoir créé et ouvert une instance de bloc-notes, cliquez sur l'onglet **SageMakerExemples** pour voir la liste de tous les exemples d' SageMaker IA. 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)**.

# Association de résultats de prédiction à des enregistrements d'entrée
<a name="batch-transform-data-processing"></a>

Lorsque vous effectuez des prédictions sur un ensemble de données volumineux, vous pouvez exclure les attributs qui ne sont pas nécessaires pour les prédictions. Une fois les prédictions effectuées, vous souhaitez dans la plupart des cas associer certains des attributs exclus avec ces prédictions ou avec d'autres données d'entrée dans votre rapport. En utilisant la transformation par lots pour effectuer ces étapes de traitement des données, vous pouvez souvent éliminer d'autres prétraitement ou post-traitement. Vous pouvez utiliser les fichiers d'entrée au format JSON et CVS uniquement. 

**Topics**
+ [

## Flux de travail pour l'association d'inférences à des enregistrements d'entrée
](#batch-transform-data-processing-workflow)
+ [

## Utilisation du traitement des données dans les tâches de transformation par lots
](#batch-transform-data-processing-steps)
+ [

## JSONPath Opérateurs pris en charge
](#data-processing-operators)
+ [

## Exemples de transformation par lots
](#batch-transform-data-processing-examples)

## Flux de travail pour l'association d'inférences à des enregistrements d'entrée
<a name="batch-transform-data-processing-workflow"></a>

Le schéma suivant illustre le flux de travail pour associer des inférences à des enregistrements d'entrée.

![\[Flux de travail pour associer des inférences à des enregistrements d’entrée.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/batch-transform-data-processing.png)


Pour associer des inférences à des données d'entrée, il y a trois étapes principales :

1. Filtrez les données d'entrée qui ne sont pas nécessaires à l'inférence avant de les transmettre à la tâche de transformation par lots. Utilisez le paramètre [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-InputFilter                             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-InputFilter                             ) pour déterminer les attributs à utiliser en tant qu'entrée pour le modèle.

1. Associez les données d'entrée aux résultats de l'inférence. Utilisez le paramètre [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-JoinSource                         ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-JoinSource                         ) pour combiner les données d'entrée avec l'inférence.

1. Filtrez les données associées afin de conserver les entrées nécessaires pour indiquer le contexte de l'interprétation des prédictions dans les rapports. Utilisez [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-OutputFilter                             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-OutputFilter                             ) pour stocker la partie spécifiée du jeu de données associé dans le fichier de sortie.

## Utilisation du traitement des données dans les tâches de transformation par lots
<a name="batch-transform-data-processing-steps"></a>

Lors de la création d'une tâche de transformation par lots avec [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html) pour traiter des données :

1. Spécifiez la partie de l'entrée à transmettre au modèle avec le paramètre `InputFilter` dans la structure de données `DataProcessing`. 

1. Associez les données d'entrée brutes aux données transformées avec le paramètre `JoinSource`.

1. Indiquez la partie de l'entrée associée et des données transformées issues de la tâche de transformation par lots à inclure dans le fichier de sortie avec le paramètre `OutputFilter`.

1.  Choisissez des fichiers au format JSON ou CSV pour l'entrée : 
   + Pour les fichiers d'entrée au format JSON ou JSON Lines, SageMaker AI ajoute l'`SageMakerOutput`attribut au fichier d'entrée ou crée un nouveau fichier de sortie JSON avec les `SageMakerInput` attributs et. `SageMakerOutput` Pour de plus amples informations, veuillez consulter [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataProcessing.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataProcessing.html). 
   + Pour les fichiers d'entrée au format CSV, les données d'entrée associées sont suivies des données transformées et la sortie est un fichier CSV.

Si vous utilisez un algorithme avec la structure `DataProcessing`, il doit prendre en charge le format que vous avez choisi pour les fichiers d'entrée *et* les fichiers de sortie. Par exemple, avec le champ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html) de l'API `CreateTransformJob`, vous devez configurer les paramètres [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Channel.html#SageMaker-Type-Channel-ContentType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Channel.html#SageMaker-Type-Channel-ContentType) et [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-Accept](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-Accept) sur l'une des valeurs suivantes : `text/csv`, `application/json` ou `application/jsonlines`. La syntaxe permettant de spécifier des colonnes dans un fichier CSV est différente de la syntaxe permettant de spécifier des attributs dans un fichier JSON. L'utilisation d'une syntaxe incorrecte provoque une erreur. Pour de plus amples informations, veuillez consulter [Exemples de transformation par lots](#batch-transform-data-processing-examples). Pour plus d'informations sur les formats de fichier d'entrée et de sortie pour les algorithmes intégrés, consultez [Algorithmes intégrés et modèles préentraînés dans Amazon SageMaker](algos.md).

Les délimiteurs d'enregistrement pour l'entrée et la sortie doivent également être cohérents avec l'entrée de fichier que vous avez choisie. Le paramètre [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType) indique le mode de fractionnement des enregistrements dans le jeu de données d'entrée. Le paramètre [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-AssembleWith                     ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-AssembleWith                     ) indique le mode de reconstitution des enregistrements pour la sortie. Si vous définissez les formats d'entrée et de sortie sur `text/csv`, vous devez également définir les paramètres `SplitType` et `AssembleWith` sur `line`. Si vous définissez les formats d'entrée et de sortie sur `application/jsonlines`, vous pouvez définir les paramètres `SplitType` et `AssembleWith` sur `line`.

Pour les fichiers CSV, vous ne pouvez pas utiliser de caractères de saut de ligne intégrés. Pour les fichiers JSON, le nom d'attribut `SageMakerOutput` est réservé à la sortie. Le fichier d'entrée JSON ne peut pas avoir d'attribut portant ce nom. Si c'est le cas, les données du fichier d'entrée risquent d'être écrasées. 

## JSONPath Opérateurs pris en charge
<a name="data-processing-operators"></a>

Pour filtrer et joindre les données d'entrée et les inférer, utilisez une JSONPath sous-expression. SageMaker L'IA ne prend en charge qu'un sous-ensemble des JSONPath opérateurs définis. Le tableau suivant répertorie les JSONPath opérateurs pris en charge. Pour les données CSV, chaque ligne est considérée comme un tableau JSON, de sorte que seule la base d'index JSONPaths peut être appliquée`$[0]`, par exemple`$[1:]`. Les données CSV doivent également respecter le [format RFC](https://tools.ietf.org/html/rfc4180).


| JSONPath Opérateur | Description | Exemple | 
| --- | --- | --- | 
| \$1 |  Élément racine d'une requête. Cet opérateur est requis au début de toutes les expressions de chemin d'accès.  | \$1 | 
| .<name> |  Élément enfant à notation point.  |  `$.id`  | 
| \$1 |  Caractère générique. Utilisez-le pour remplacer un nom d'attribut ou une valeur numérique.  |  `$.id.*`  | 
| ['<name>' (,'<name>')] |  Élément à notation crochet ou éléments enfants multiples.  |  `$['id','SageMakerOutput']`  | 
| [<number> (,<number>)] |  Index ou tableau d'index. Les valeurs d'index négatives sont également prises en charge. Un index `-1` correspond au dernier élément d'un tableau.  |  `$[1]` , `$[1,3,5]`  | 
| [<start>:<end>] |  Opérateur de découpage de tableau. La méthode array slice() extrait une section d'un tableau et renvoie un nouveau tableau. Si vous omettez*<start>*, SageMaker AI utilise le premier élément du tableau. Si vous omettez*<end>*, SageMaker AI utilise le dernier élément du tableau.  |  `$[2:5]`, `$[:5]`, `$[2:]`  | 

Lorsque vous utilisez la notation entre crochets pour spécifier plusieurs éléments enfants d'un champ donné, l'imbrication supplémentaire d'enfants entre parenthèses n'est pas prise en charge. Par exemple, `$.field1.['child1','child2']` est pris en charge alors qu'`$.field1.['child1','child2.grandchild']` ne l'est pas. 

Pour plus d'informations sur JSONPath les opérateurs, reportez-vous à [JsonPath](https://github.com/json-path/JsonPath)la section suivante GitHub.

## Exemples de transformation par lots
<a name="batch-transform-data-processing-examples"></a>

Les exemples suivants illustrent les méthodes courantes permettant d'associer des données d'entrée aux résultats de prédiction.

**Topics**
+ [

### Exemple : Inférences de sortie uniquement
](#batch-transform-data-processing-example-default)
+ [

### Exemple : inférences de sortie avec des données d'entrée
](#batch-transform-data-processing-example-all)
+ [

### Exemple : inférences de sortie avec des données d'entrée et exclusion de la colonne ID de l'entrée (CSV)
](#batch-transform-data-processing-example-select-csv)
+ [

### Exemple : inférences de sortie jointes à une colonne ID et exclusion de la colonne ID de l'entrée (CSV)
](#batch-transform-data-processing-example-select-json)

### Exemple : Inférences de sortie uniquement
<a name="batch-transform-data-processing-example-default"></a>

Par défaut, le paramètre [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-DataProcessing](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-DataProcessing) ne joint pas les résultats d'inférence à l'entrée. Il génère uniquement les résultats de l'inférence.

Si vous souhaitez spécifier explicitement de ne pas associer les résultats aux entrées, utilisez le [SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) et spécifiez les paramètres suivants dans un appel de transformateur.

```
sm_transformer = sagemaker.transformer.Transformer(…)
sm_transformer.transform(…, input_filter="$", join_source= "None", output_filter="$")
```

Pour générer des inférences à l'aide du AWS SDK pour Python, ajoutez le code suivant à votre CreateTransformJob demande. Le code suivant imite le comportement par défaut.

```
{
    "DataProcessing": {
        "InputFilter": "$",
        "JoinSource": "None",
        "OutputFilter": "$"
    }
}
```

### Exemple : inférences de sortie avec des données d'entrée
<a name="batch-transform-data-processing-example-all"></a>

Si vous utilisez le [SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) pour combiner les données d'entrée avec les inférences du fichier de sortie, spécifiez les `accept` paramètres `assemble_with` et lors de l'initialisation de l'objet transformateur. Lorsque vous utilisez l'appel de transformation, spécifiez `Input` pour le paramètre `join_source` et spécifiez également le paramètres `split_type` et `content_type`. Le paramètre `split_type` doit avoir la même valeur que `assemble_with`, et le paramètre `content_type` doit avoir la même valeur que `accept`. Pour plus d'informations sur les paramètres et leurs valeurs acceptées, consultez la page [Transformer](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html#sagemaker.transformer.Transformer) du *SDK Amazon SageMaker AI Python*.

```
sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv")
sm_transformer.transform(…, join_source="Input", split_type="Line", content_type="text/csv")
```

Si vous utilisez le AWS SDK pour Python (Boto 3), associez toutes les données d'entrée à l'inférence en ajoutant le code suivant à votre demande. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html) Les valeurs pour `Accept` et `ContentType` doivent correspondre, et les valeurs pour `AssembleWith` et `SplitType` doivent également correspondre.

```
{
    "DataProcessing": {
        "JoinSource": "Input"
    },
    "TransformOutput": {
        "Accept": "text/csv",
        "AssembleWith": "Line"
    },
    "TransformInput": {
        "ContentType": "text/csv",
        "SplitType": "Line"
    }
}
```

Pour le format JSON ou JSON Lines, les résultats figurent dans la clé `SageMakerOutput` du fichier JSON en entrée. Par exemple, si l'entrée est un fichier JSON qui contient la paire clé-valeur `{"key":1}`, le résultat de la transformation des données peut être `{"label":1}`.

SageMaker L'IA enregistre les deux dans le fichier d'entrée de la `SageMakerInput` clé.

```
{
    "key":1,
    "SageMakerOutput":{"label":1}
}
```

**Note**  
Le résultat associé pour JSON doit être un objet de type paire clé-valeur. Si l'entrée n'est pas un objet de paire clé-valeur, SageMaker AI crée un nouveau fichier JSON. Dans le nouveau fichier JSON, les données d'entrée sont stockées dans la clé `SageMakerInput` et les résultats sont stockés dans la valeur `SageMakerOutput`.

Pour un fichier CSV, si l'enregistrement est `[1,2,3]` et le résultat d'étiquette est `[1]` par exemple, le fichier de sortie contient alors `[1,2,3,1]`.

### Exemple : inférences de sortie avec des données d'entrée et exclusion de la colonne ID de l'entrée (CSV)
<a name="batch-transform-data-processing-example-select-csv"></a>

Si vous utilisez le [SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) pour associer vos données d'entrée à la sortie d'inférence tout en excluant une colonne ID de l'entrée du transformateur, spécifiez les mêmes paramètres que ceux de l'exemple précédent ainsi qu'une JSONPath sous-expression pour le `input_filter` dans votre appel de transformateur. Par exemple, si vos données d'entrée incluent cinq colonnes (la première étant la colonne ID), utilisez la demande de transformateur suivante pour sélectionner toutes les colonnes à l'exception de la colonne ID comme fonctions. Le transformateur sort toujours toutes les colonnes d'entrée jointes aux inférences. Pour plus d'informations sur les paramètres et leurs valeurs acceptées, consultez la page [Transformer](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html#sagemaker.transformer.Transformer) du *SDK Amazon SageMaker AI Python*.

```
sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv")
sm_transformer.transform(…, split_type="Line", content_type="text/csv", input_filter="$[1:]", join_source="Input")
```

Si vous utilisez le AWS SDK pour Python (Boto 3), ajoutez le code suivant à votre `[ CreateTransformJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)` demande.

```
{
    "DataProcessing": {
        "InputFilter": "$[1:]",
        "JoinSource": "Input"
    },
    "TransformOutput": {
        "Accept": "text/csv",
        "AssembleWith": "Line"
    },
    "TransformInput": {
        "ContentType": "text/csv",
        "SplitType": "Line"
    }
}
```

Pour spécifier des colonnes dans SageMaker AI, utilisez l'index des éléments du tableau. La première colonne est l'index 0, la deuxième est l'index 1 et la sixième est l'index 5.

Pour exclure la première colonne de l'entrée, définissez `[InputFilter](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-InputFilter )` sur `"$[1:]"`. Les deux points (`:`) indiquent à SageMaker AI d'inclure tous les éléments compris entre deux valeurs, y compris. Par exemple, `$[1:4]` spécifie les colonnes 2 à 5.

Si vous omettez le nombre après les deux points, par exemple, `[5:]`, le sous-ensemble inclut toutes les colonnes, de la sixième à la dernière. Si vous omettez le nombre avant les deux points, par exemple, `[:5]`, le sous-ensemble inclut toutes les colonnes, de la première (index 0) à la sixième.

### Exemple : inférences de sortie jointes à une colonne ID et exclusion de la colonne ID de l'entrée (CSV)
<a name="batch-transform-data-processing-example-select-json"></a>

Si vous utilisez le [SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable), vous pouvez spécifier la sortie pour joindre uniquement des colonnes d'entrée spécifiques (comme la colonne ID) aux inférences en spécifiant le `output_filter` dans l'appel du transformateur. `output_filter`Utilise une JSONPath sous-expression pour spécifier les colonnes à renvoyer en sortie après avoir joint les données d'entrée aux résultats de l'inférence. La demande suivante montre comment faire des prédictions tout en excluant une colonne ID, puis joindre la colonne ID avec les inférences. Notez que dans l'exemple suivant, la dernière colonne (`-1`) de la sortie contient les inférences. Si vous utilisez des fichiers JSON, SageMaker AI stocke les résultats de l'inférence dans l'attribut`SageMakerOutput`. Pour plus d'informations sur les paramètres et leurs valeurs acceptées, consultez la page [Transformer](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html#sagemaker.transformer.Transformer) du *SDK Amazon SageMaker AI Python*.

```
sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv")
sm_transformer.transform(…, split_type="Line", content_type="text/csv", input_filter="$[1:]", join_source="Input", output_filter="$[0,-1]")
```

Si vous utilisez le AWS SDK pour Python (Boto 3), joignez uniquement la colonne ID avec les inférences en ajoutant le code suivant à votre demande. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)

```
{
    "DataProcessing": {
        "InputFilter": "$[1:]",
        "JoinSource": "Input",
        "OutputFilter": "$[0,-1]"
    },
    "TransformOutput": {
        "Accept": "text/csv",
        "AssembleWith": "Line"
    },
    "TransformInput": {
        "ContentType": "text/csv",
        "SplitType": "Line"
    }
}
```

**Avertissement**  
Si vous utilisez un fichier d'entrée au format JSON, le fichier ne peut pas contenir le nom d'attribut `SageMakerOutput`. Le nom d'attribut est réservé aux interférences présentes dans le fichier de sortie. Si votre fichier d'entrée au format JSON contient un attribut portant ce nom, les valeurs du fichier d'entrée peuvent être remplacées par l'inférence.

# Stockage dans une transformation par lots
<a name="batch-transform-storage"></a>

Lorsque vous exécutez une tâche de transformation par lots, Amazon SageMaker AI associe un volume de stockage Amazon Elastic Block Store aux instances Amazon EC2 qui traitent votre tâche. Le volume stocke votre modèle et la taille du volume de stockage est fixée à 30 Go. Vous avez la possibilité de chiffrer votre modèle au repos dans le volume de stockage.

**Note**  
Si vous possédez un modèle de grande taille, vous risquez de rencontrer un `InternalServerError`.

Pour plus d’informations sur le stockage et les fonctions Amazon EBS, consultez les pages suivantes :
+ [Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) dans le Guide de l’utilisateur Amazon EC2
+ [Volumes Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes.html) dans le Guide de l’utilisateur Amazon EC2

**Note**  
Les instances G4dn sont équipées de leur propre stockage SSD local. Pour en savoir plus sur les instances G4dn, consultez la page [Instances G4 d'Amazon EC2](https://aws.amazon.com/ec2/instance-types/g4/).

# Résolution des problèmes
<a name="batch-transform-errors"></a>

Si vous rencontrez des erreurs dans Amazon SageMaker AI Batch Transform, consultez les conseils de dépannage suivants.

## Erreurs de délai d'expiration max.
<a name="batch-transform-errors-max-timeout"></a>

Si vous obtenez des erreurs de délai d'expiration max. lors de l'exécution de tâches de transformation par lots, essayez ce qui suit :
+ Commencez par l'enregistrement unique `[BatchStrategy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-BatchStrategy)`, une taille de lot égale ou inférieure à la valeur par défaut (6 Mo) que vous spécifiez dans le paramètre `[MaxPayloadInMB](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxPayloadInMB)`, et un petit exemple de jeu de données. Réglez le paramètre de délai d'expiration maximal `[InvocationsTimeoutInSeconds](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelClientConfig.html#sagemaker-Type-ModelClientConfig-InvocationsTimeoutInSeconds)` (qui est d'une heure maximum) jusqu'à ce que vous receviez une réponse d'appel réussie.
+ Une fois que vous avez reçu une réponse d'appel réussie, augmentez la valeur `MaxPayloadInMB` (qui a une valeur maximale de 100 Mo) et les paramètres `InvocationsTimeoutInSeconds` pour déterminer la taille de lot maximale pouvant prendre en charge le délai d'expiration du modèle souhaité. Vous pouvez utiliser l'enregistrement unique ou multiple `BatchStrategy` à cette étape.
**Note**  
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 (aucun) ou que des enregistrements individuels dans le jeu de données dépassent la limite.
+ (Facultatif) Réglez le paramètre `[MaxConcurrentTransforms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxConcurrentTransforms)`, qui spécifie le nombre maximal de demandes parallèles pouvant être envoyées à chaque instance dans une tâche de transformation par lots. Toutefois, la valeur de `MaxConcurrentTransforms * MaxPayloadInMB` ne doit pas dépasser 100 Mo.

## Sortie incomplète
<a name="batch-transform-errors-incomplete"></a>

SageMaker L'IA utilise l'[API Amazon S3 Multipart Upload](https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html) 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. Un téléchargement incomplet peut également se produire si vous avez plusieurs fichiers d'entrée mais que certains fichiers ne peuvent pas être traités par SageMaker AI Batch Transform. Les fichiers d'entrée qui n'ont pas pu être traités n'auront pas de fichiers de sortie correspondants dans Amazon S3.

Pour éviter les frais de stockage, nous vous recommandons d'ajouter la [stratégie de compartiment S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config) 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 plus d’informations, consultez [Gestion du cycle de vie des objets](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html).

## La tâche s'affiche sous la forme `failed`
<a name="batch-transform-errors-failed"></a>

Si une tâche de transformation par lots ne parvient pas à traiter un fichier d'entrée en raison d'un problème lié à l'ensemble de données, SageMaker AI marque 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.

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.