

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Transformação em lote para inferência com a Amazon AI SageMaker
<a name="batch-transform"></a>

Use a transformação em lote quando precisar fazer o seguinte: 
+ Pré-processar os conjuntos de dados para remover ruído ou desvio que interfira no treinamento ou na inferência do conjunto de dados.
+ Obter inferências de conjuntos de dados grandes.
+ Executar inferência quando não for necessário um endpoint persistente.
+ Associar registros de entrada com inferências para auxiliar na interpretação de resultados.

Para filtrar dados de entrada antes de executar inferências ou para associar registros de entrada à inferências sobre esses registros, consulte [Associar resultados de predição a registros de entrada](batch-transform-data-processing.md). Por exemplo, é possível filtrar dados de entrada a fim de fornecer contexto para criar e interpretar relatórios sobre os dados de saída.

**Topics**
+ [Uso da transformação em lote para obter inferências de conjuntos de dados grandes](#batch-transform-large-datasets)
+ [Aceleração de um trabalho de transformação em lote](#batch-transform-reduce-time)
+ [Uso da transformação em lote para testar as variantes de produção](#batch-transform-test-variants)
+ [Cadernos de amostra de transformação em lote](#batch-transform-notebooks)
+ [Associar resultados de predição a registros de entrada](batch-transform-data-processing.md)
+ [Armazenamento em Batch Transform](batch-transform-storage.md)
+ [Solução de problemas](batch-transform-errors.md)

## Uso da transformação em lote para obter inferências de conjuntos de dados grandes
<a name="batch-transform-large-datasets"></a>

A transformação em lotes gerencia automaticamente o processamento de grandes conjuntos de dados nos limites de parâmetros especificados. Por exemplo, ter um arquivo de conjunto de dados, `input1.csv`, armazenado em um bucket do S3. O conteúdo do arquivo de entrada pode ser semelhante ao seguinte exemplo:

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

Quando um trabalho de transformação em lote é iniciado, a SageMaker IA inicia as instâncias de computação e distribui a carga de trabalho de inferência ou pré-processamento entre elas. A transformação em lote particiona objetos do Amazon S3 na entrada por chave e mapeia objetos do Amazon S3 para as instâncias. Quando você tiver vários arquivos, uma instância pode processar `input1.csv`, e a outra instância pode processar o arquivo chamado `input2.csv`. Se você tiver um arquivo de entrada, mas inicializar várias instâncias de computação, somente uma instância processará o arquivo de entrada. As outras instâncias estão inativas.

Você também pode dividir os arquivos de entrada em minilotes. Por exemplo, é possível criar um minilote de `input1.csv` incluindo somente dois dos registros.

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

**nota**  
SageMaker A IA processa cada arquivo de entrada separadamente. Ele não combina minilotes de diferentes arquivos de entrada para cumprir o 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               ).

Para dividir os arquivos de entrada em minilotes ao criar um trabalho de transformação em lote, defina o valor do [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             )parâmetro como. `Line` SageMaker A IA usa todo o arquivo de entrada em uma única solicitação quando:
+ `SplitType` está definido como `None`.
+ Um arquivo de entrada não pode ser dividido em minilotes.

Observe que a Transformação em Lote não é compatível com entrada em formato CSV que contenha caracteres de nova linha incorporados. Você pode controlar o tamanho dos minilotes usando os parâmetros `[BatchStrategy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-BatchStrategy)` e `[MaxPayloadInMB](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxPayloadInMB)`. `MaxPayloadInMB` não deve ser maior que 100 MB. Se você especificar o parâmetro opcional `[MaxConcurrentTransforms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxConcurrentTransforms)`, o valor de `(MaxConcurrentTransforms * MaxPayloadInMB)` também não deverá exceder 100 MB.

Se o trabalho de transformação em lote processar com êxito todos os registros em um arquivo de entrada, ele cria um arquivo de saída. O arquivo de saída tem o mesmo nome e a extensão do arquivo `.out`. Em vários arquivos de entrada, como `input1.csv` e `input2.csv`, os arquivos de saída são denominados `input1.csv.out` e `input2.csv.out`. O trabalho de transformação em lotes armazena os arquivos de saída no local especificado no Amazon S3, como `s3://amzn-s3-demo-bucket/output/`. 

As predições em um arquivo de saída são listadas na mesma ordem dos registros correspondentes no arquivo de entrada. O arquivo de saída `input1.csv.out`, com base no arquivo de entrada mostrado anteriormente, seria parecido com o seguinte:

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

Se você definir [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             ) como `Line`, poderá definir o parâmetro [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             ) para `Line` concatenar os registros de saída com um delimitador de linha. Isso não altera o número de arquivos de saída. O número de arquivos de saída é igual ao número de arquivos de entrada, e o uso de `AssembleWith` não mescla arquivos. Se você não especificar o parâmetro `AssembleWith`, os registros de saída serão concatenados em formato binário por padrão.

Quando os dados de entrada são muito grandes e são transmitidos usando codificação HTTP em blocos, para transmitir os dados para o algoritmo, defina [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) como `0`. Os algoritmos integrados do Amazon SageMaker AI não oferecem suporte a esse recurso.

Para obter mais informações sobre como usar a API para criar um trabalho de transformação em lotes, consulte a API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html). Para obter mais informações sobre a relação entre os objetos de entrada e de saída da transformação em lote, consulte [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputDataConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputDataConfig.html). Para obter um exemplo de como usar a transformação em lotes, consulte [(Opcional) Faça predições com o Transformador de Lotes](ex1-model-deployment.md#ex1-batch-transform).

## Aceleração de um trabalho de transformação em lote
<a name="batch-transform-reduce-time"></a>

Se você estiver usando a API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html), poderá reduzir o tempo necessário para a conclusão de trabalhos de transformação de lote usando valores ideais para parâmetros. Isso inclui parâmetros como [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). O valor ideal para `MaxConcurrentTransforms` é igual ao número de operadores de computação na tarefa de transformação em lote. 

Se você estiver usando o console do SageMaker AI, especifique esses valores ideais de parâmetros na seção **Configuração adicional** da página de **configuração do trabalho de transformação em lote**. SageMaker A IA encontra automaticamente as configurações de parâmetros ideais para algoritmos integrados. Para obter algoritmos personalizados, forneça esses valores por meio de um endpoint [execution-parameters](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-batch-code.html#your-algorithms-batch-code-how-containe-serves-requests).

## Uso da transformação em lote para testar as variantes de produção
<a name="batch-transform-test-variants"></a>

Para testar modelos diferentes ou várias configurações de hiperparâmetro, crie um trabalho de transformação separado para cada nova variante do modelo e use um conjunto de dados de validação. Para cada trabalho de transformação, especifique um nome de modelo exclusivo e um local no Amazon S3 para o arquivo de saída. Para analisar os resultados, use [Logs e métricas de pipeline de inferência](inference-pipeline-logs-metrics.md).

## Cadernos de amostra de transformação em lote
<a name="batch-transform-notebooks"></a>

Para ver um caderno de exemplo de transformação em lote, consulte [Transformação em lote com clusters de filme PCA e DBSCAN](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker_batch_transform/introduction_to_batch_transform/batch_transform_pca_dbscan_movie_clusters.html). Esse caderno usa transformação em lote com um modelo de análise de componentes de entidades principais (PCA) para reduzir os dados em uma matriz de revisão de itens do usuário. Em seguida, mostra a aplicação de um clustering espacial baseado na densidade de aplicações com algoritmo de ruído (DBSCAN) para agrupar filmes.

 Para obter instruções sobre como criar e acessar instâncias do notebook Jupyter que você pode usar para executar o exemplo em SageMaker IA, consulte. [Instâncias de SageMaker notebook da Amazon](nbi.md) Depois de criar e abrir uma instância do notebook, escolha a guia **SageMakerExemplos** para ver uma lista de todos os exemplos de SageMaker IA. Os cadernos de exemplo de modelagem do tópico que usam os algoritmos NTM estão localizados na seção **Funcionalidade avançada**. Para abrir um caderno, escolha a guia **Uso** e depois escolha **Criar cópia**.

# Associar resultados de predição a registros de entrada
<a name="batch-transform-data-processing"></a>

Ao fazer predições em um conjunto de dados grande, você pode excluir atributos que não são necessários para a predição. Depois que as predições foram feitas, você pode associar alguns dos atributos excluídos a essas predições ou outros dados de entrada no relatório. Ao usar a transformação em lote para executar essas etapas de processamento de dados, geralmente você pode eliminar o pré-processamento ou o pós-processamento adicional. Você pode usar arquivos de entrada somente nos formatos JSON e CVS. 

**Topics**
+ [Fluxo de trabalho para associar inferências a registros de entrada](#batch-transform-data-processing-workflow)
+ [Uso do processamento de dados em trabalhos de transformação em lotes](#batch-transform-data-processing-steps)
+ [JSONPath Operadores suportados](#data-processing-operators)
+ [Exemplos de transformação em lote](#batch-transform-data-processing-examples)

## Fluxo de trabalho para associar inferências a registros de entrada
<a name="batch-transform-data-processing-workflow"></a>

O diagrama a seguir mostra o fluxo de trabalho para associar inferências a registros de entrada.

![\[Fluxo de trabalho para associar inferências com registros de entrada.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/batch-transform-data-processing.png)


Para associar inferências a dados de entrada, há três etapas principais:

1. Filtre os dados de entrada que não são necessários para inferência antes de passá-los para o trabalho de transformação em lote. Use o parâmetro [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                             ) para determinar quais atributos usar como entrada para o modelo.

1. Associe os dados de entrada aos resultados de inferência. Use o parâmetro [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                         ) para combinar os dados de entrada com a inferência.

1. Filtre os dados associados para reter as entradas que são necessárias para fornecer contexto para interpretar as predições nos relatórios. Use [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                             ) para armazenar a parte especificada do conjunto de dados associado no arquivo de saída.

## Uso do processamento de dados em trabalhos de transformação em lotes
<a name="batch-transform-data-processing-steps"></a>

Ao criar um trabalho de transformação em lote com [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html) para processar dados:

1. Especifique a parte da entrada a ser transmitida para o modelo com o parâmetro `InputFilter` na estrutura de dados `DataProcessing`. 

1. Associe os dados de entrada brutos aos dados transformados com o parâmetro `JoinSource`.

1. Especifique a parte dos dados transformados e de entrada associados do trabalho de transformação em lotes a ser incluída no arquivo de saída com o parâmetro `OutputFilter`.

1.  Escolha arquivos em formato CSV ou JSON para entrada: 
   + Para arquivos de entrada formatados em JSON ou JSON Lines, o SageMaker AI adiciona o `SageMakerOutput` atributo ao arquivo de entrada ou cria um novo arquivo de saída JSON com os atributos e. `SageMakerInput` `SageMakerOutput` Para obter mais informações, consulte [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataProcessing.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataProcessing.html). 
   + Para arquivos de entrada em formato CSV, os dados de entrada associados são seguidos pelos dados transformados, e a saída é um arquivo CSV.

Se você usar um algoritmo com a estrutura `DataProcessing`, ele deverá ser compatível com o formato escolhido para os *dois* arquivos de entrada e saída. Por exemplo, com o campo [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html) da API `CreateTransformJob`, defina os parâmetros [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) e [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) como um dos seguintes valores: `text/csv`, `application/json` ou `application/jsonlines`. A sintaxe para especificação de colunas em um arquivo CSV e especificação de atributos em um arquivo JSON são diferentes. Usar a sintaxe errada causará um erro. Para obter mais informações, consulte [Exemplos de transformação em lote](#batch-transform-data-processing-examples). Para obter mais informações sobre formatos de arquivo de entrada e saída para algoritmos integrados, consulte [Algoritmos integrados e modelos pré-treinados na Amazon SageMaker](algos.md).

Os delimitadores de registro para a entrada e a saída também devem ser consistentes com o arquivo de entrada escolhido. O parâmetro [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) indica como dividir os registros no conjunto de dados de entrada. O parâmetro [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                     ) indica como remontar os registros para a saída. Se definir formatos de entrada e saída como `text/csv`, você também deverá definir os parâmetros `AssembleWith` e `SplitType` como `line`. Se definir os formatos de entrada e saída como `application/jsonlines`, você poderá definir `SplitType` e `AssembleWith` como `line`.

Para arquivos CSV, você não pode usar caracteres de nova linha incorporados. Para arquivos JSON, o nome do atributo `SageMakerOutput` é reservado para saída. O arquivo de entrada JSON não pode ter um atributo com esse nome. Se tiver, os dados no arquivo de entrada podem ser substituídos. 

## JSONPath Operadores suportados
<a name="data-processing-operators"></a>

Para filtrar e unir os dados de entrada e a inferência, use uma JSONPath subexpressão. SageMaker A IA suporta somente um subconjunto dos JSONPath operadores definidos. A tabela a seguir lista os JSONPath operadores compatíveis. Para dados CSV, cada linha é considerada uma matriz JSON, portanto, somente a base de índice JSONPaths pode ser aplicada, por exemplo,. `$[0]` `$[1:]` Os dados CSV também devem seguir o [formato RFC](https://tools.ietf.org/html/rfc4180).


| JSONPath Operador | Description | Exemplo | 
| --- | --- | --- | 
| \$1 |  O elemento raiz para uma consulta. Esse operador é necessário no início de todas as expressões de caminho.  | \$1 | 
| .<name> |  Um elemento filho com notação de pontos.  |  `$.id`  | 
| \$1 |  Um caractere curinga. Use no lugar de um nome de atributo ou valor numérico.  |  `$.id.*`  | 
| ['<name>' (,'<name>')] |  Um elemento ou vários elementos filho com notação de colchetes.  |  `$['id','SageMakerOutput']`  | 
| [<number> (,<number>)] |  Um índice ou matriz de índices. Os valores de índice negativos também são compatíveis. Um índice `-1` corresponde ao último elemento em uma matriz.  |  `$[1]` , `$[1,3,5]`  | 
| [<start>:<end>] |  Um operador de matriz slice. O método matriz slice() extrai uma seção de uma matriz e retorna uma nova matriz. Se você omitir*<start>*, a SageMaker IA usa o primeiro elemento da matriz. Se você omitir*<end>*, a SageMaker IA usará o último elemento da matriz.  |  `$[2:5]`, `$[:5]`, `$[2:]`  | 

Ao usar a notação de colchete para especificar múltiplos elementos filho de um determinado campo, o aninhamento adicional de filhos dentro de colchetes não é compatível. Por exemplo, `$.field1.['child1','child2']` é compatível, mas `$.field1.['child1','child2.grandchild']` não é. 

Para obter mais informações sobre JSONPath operadores, consulte [JsonPath](https://github.com/json-path/JsonPath)em GitHub.

## Exemplos de transformação em lote
<a name="batch-transform-data-processing-examples"></a>

Os exemplos a seguir mostram algumas maneiras comuns de associar dados de entrada a resultados de predições.

**Topics**
+ [Exemplo: gerar somente inferências](#batch-transform-data-processing-example-default)
+ [Exemplo: inferências de saída unidas a dados de entrada](#batch-transform-data-processing-example-all)
+ [Exemplo: inferências de saída unidas aos dados de entrada e exclusão da coluna ID da entrada (CSV)](#batch-transform-data-processing-example-select-csv)
+ [Exemplo: inferências de saída unidas a uma coluna de ID e exclusão da coluna de ID da entrada (CSV)](#batch-transform-data-processing-example-select-json)

### Exemplo: gerar somente inferências
<a name="batch-transform-data-processing-example-default"></a>

Por padrão, o parâmetro [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) não associa resultados de inferência à entrada. Ele gera apenas resultados de inferência.

Se você quiser especificar explicitamente a não união de resultados com entrada, use o SDK do [Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) e especifique as seguintes configurações em uma chamada de transformador.

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

Para gerar inferências usando o AWS SDK para Python, adicione o código a seguir à sua solicitação. CreateTransformJob O código a seguir imita o comportamento padrão.

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

### Exemplo: inferências de saída unidas a dados de entrada
<a name="batch-transform-data-processing-example-all"></a>

Se você estiver usando o [SDK do Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) para combinar os dados de entrada com as inferências no arquivo de saída, especifique os `accept` parâmetros `assemble_with` e ao inicializar o objeto transformador. Ao usar a chamada de transformação, especifique `Input` para o parâmetro `join_source` e especifique também os parâmetros `split_type` e `content_type`. O parâmetro `split_type` deve ter o mesmo valor que `assemble_with`, e o parâmetro `content_type` deve ter o mesmo valor que `accept`. Para obter mais informações sobre os parâmetros e seus valores aceitos, consulte a página [Transformer](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html#sagemaker.transformer.Transformer) no *Amazon SageMaker AI Python SDK*.

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

Se você estiver usando o AWS SDK para Python (Boto 3), junte todos os dados de entrada à inferência adicionando o código a seguir à sua solicitação. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html) Os valores para `Accept` e `ContentType` devem corresponder, e os valores para `AssembleWith` e `SplitType` também devem corresponder.

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

Para os arquivos de entrada JSON ou Linhas JSON, os resultados estão na chave `SageMakerOutput` no arquivo JSON de entrada. Por exemplo, se a entrada é um arquivo JSON que contém o par de chave/valor `{"key":1}`, o resultado da transformação de dados pode ser `{"label":1}`.

SageMaker O AI armazena ambos no arquivo de entrada na `SageMakerInput` chave.

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

**nota**  
O resultado associado para JSON deve ser um objeto de par de chave/valor. Se a entrada não for um objeto de par de valores-chave, o SageMaker AI cria um novo arquivo JSON. No novo arquivo JSON, os dados de entrada são armazenados na chave `SageMakerInput`, e os resultados são armazenados como o valor `SageMakerOutput`.

Por exemplo, para um arquivo CSV, se o registro for `[1,2,3]`, e o resultado de rótulo for `[1]`, o arquivo de saída conterá `[1,2,3,1]`.

### Exemplo: inferências de saída unidas aos dados de entrada e exclusão da coluna ID da entrada (CSV)
<a name="batch-transform-data-processing-example-select-csv"></a>

Se você estiver usando o [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) para unir seus dados de entrada com a saída de inferência enquanto exclui uma coluna de ID da entrada do transformador, especifique os mesmos parâmetros do exemplo anterior, bem como uma JSONPath subexpressão para a em sua chamada de transformador. `input_filter` Por exemplo, se seus dados de entrada incluírem cinco colunas e a primeira for a coluna ID, use a solicitação de transformação a seguir para selecionar todas as colunas, exceto a coluna ID, como atributos. O transformador ainda gera todas as colunas de entrada unidas às inferências. Para obter mais informações sobre os parâmetros e seus valores aceitos, consulte a página [Transformer](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html#sagemaker.transformer.Transformer) no *Amazon SageMaker AI Python SDK*.

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

Se você estiver usando o AWS SDK para Python (Boto 3), adicione o código a seguir à sua solicitação. `[ CreateTransformJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)`

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

Para especificar colunas no SageMaker AI, use o índice dos elementos da matriz. A primeira coluna é o índice 0, a segunda coluna é o índice 1 e a sexta coluna é o índice 5.

Para excluir a primeira coluna da entrada, defina `[InputFilter](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-InputFilter )` como `"$[1:]"`. Os dois pontos (`:`) fazem com que a SageMaker IA inclua todos os elementos entre dois valores, inclusive. Por exemplo, `$[1:4]` especifica a segunda até a quinta colunas.

Se você omitir o número após o dois-pontos, por exemplo, `[5:]`, o subconjunto incluirá todas as colunas da sexta até a última. Se você omitir o número antes do dois-pontos, por exemplo `[:5]`, o subconjunto incluirá todas as colunas da primeira (índice 0) até a sexta.

### Exemplo: inferências de saída unidas a uma coluna de ID e exclusão da coluna de ID da entrada (CSV)
<a name="batch-transform-data-processing-example-select-json"></a>

Se você estiver usando o [SDK do Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable), poderá especificar a saída para unir somente colunas de entrada específicas (como a coluna ID) às inferências especificando a na chamada do `output_filter` transformador. O `output_filter` usa uma JSONPath subexpressão para especificar quais colunas devem ser retornadas como saída após unir os dados de entrada aos resultados da inferência. A solicitação a seguir mostra como você pode fazer predições ao excluir uma coluna de ID e, em seguida, unir a coluna de ID às inferências. Observe que, no exemplo a seguir, a última coluna (`-1`) da saída contém as inferências. Se você estiver usando arquivos JSON, o SageMaker AI armazena os resultados da inferência no atributo. `SageMakerOutput` Para obter mais informações sobre os parâmetros e seus valores aceitos, consulte a página [Transformer](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html#sagemaker.transformer.Transformer) no *Amazon SageMaker AI Python SDK*.

```
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]")
```

Se você estiver usando o AWS SDK para Python (Boto 3), junte somente a coluna ID às inferências adicionando o código a seguir à sua solicitação. [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"
    }
}
```

**Atenção**  
Se você estiver usando um arquivo de entrada em formato JSON, o arquivo não poderá conter o nome do atributo `SageMakerOutput`. Esse nome do atributo é reservado para as inferências no arquivo de saída. Se o arquivo de entrada no formato JSON contiver um atributo com esse nome, os valores no arquivo de entrada poderão ser substituídos pela inferência.

# Armazenamento em Batch Transform
<a name="batch-transform-storage"></a>

Quando você executa um trabalho de transformação em lote, o Amazon SageMaker AI anexa um volume de armazenamento do Amazon Elastic Block Store às instâncias do Amazon EC2 que processam seu trabalho. O volume armazena seu modelo e o tamanho do volume de armazenamento é fixado em 30 GB. Você tem a opção de criptografar seu modelo em repouso no volume de armazenamento.

**nota**  
Se você tiver um modelo grande, poderá encontrar um `InternalServerError`.

Para obter mais informações sobre armazenamentos e atributos do Amazon EBS, consulte as seguintes páginas:
+ [Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) no Guia do usuário do Amazon EC2.
+ [Volumes do Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes.html) no Guia do usuário do Amazon EC2

**nota**  
As instâncias G4dn vêm com seu próprio armazenamento SSD local. Para saber mais sobre instâncias G4dn, consulte a página [ Instâncias G4 do Amazon EC2](https://aws.amazon.com/ec2/instance-types/g4/).

# Solução de problemas
<a name="batch-transform-errors"></a>

Se você estiver tendo erros no Amazon SageMaker AI Batch Transform, consulte as dicas de solução de problemas a seguir.

## Max. de erros
<a name="batch-transform-errors-max-timeout"></a>

Se você estiver recebendo erros de tempo limite máximo ao executar trabalhos de transformação em lote, tente o seguinte:
+ Comece com o registro único `[BatchStrategy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-BatchStrategy)`, um tamanho de lote padrão (6 MB) ou menor que você especifica no parâmetro `[MaxPayloadInMB](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxPayloadInMB)` e um pequeno conjunto de dados de amostra. Ajuste o parâmetro de tempo limite máximo `[InvocationsTimeoutInSeconds](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelClientConfig.html#sagemaker-Type-ModelClientConfig-InvocationsTimeoutInSeconds)` (que tem no máximo 1 hora) até receber uma resposta de invocação bem-sucedida.
+ Depois de receber uma resposta de invocação bem-sucedida, aumente `MaxPayloadInMB` (que tem no máximo 100 MB) e os parâmetros `InvocationsTimeoutInSeconds` juntos para encontrar o tamanho máximo do lote que pode ser compatível com o tempo limite do modelo desejado. Você pode usar o registro único ou o registro múltiplo `BatchStrategy` nesta etapa.
**nota**  
Exceder o limite de `MaxPayloadInMB` causa um erro. Isso pode acontecer com um grande conjunto de dados se não puder ser dividido, se o parâmetro`SplitType` estiver definido como nenhum ou se os registros individuais dentro do conjunto de dados excederem o limite.
+ (Opcional) Ajuste o parâmetro `[MaxConcurrentTransforms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxConcurrentTransforms)`, que especifica o número máximo de solicitações paralelas que podem ser enviadas a cada instância em um trabalho de transformação em lote. No entanto, o valor de `MaxConcurrentTransforms * MaxPayloadInMB` não deve exceder 100 MB.

## Saída incompleta
<a name="batch-transform-errors-incomplete"></a>

SageMaker A IA usa a [API Amazon S3 Multipart Upload para carregar](https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html) os resultados de uma tarefa de transformação em lote para o Amazon S3. Se ocorrer um erro, os resultados obtidos por upload serão removidos do Amazon S3. Em alguns casos, como em uma paralisação da rede, um multipart upload incompleto pode permanecer no Amazon S3. Um upload incompleto também pode ocorrer se você tiver vários arquivos de entrada, mas alguns deles não puderem ser processados pelo SageMaker AI Batch Transform. Os arquivos de entrada que não puderam ser processados não terão arquivos de saída correspondentes no Amazon S3.

Para evitar cobranças de armazenamento, recomendamos adicionar a [política do bucket do S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config) às regras de ciclo de vida do bucket do S3. Essa política exclui multipart uploads incompletos que podem ser armazenados no bucket do S3. Para obter mais informações, consulte [Gerenciamento do ciclo de vida de objetos](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html).

## Trabalho é exibido como `failed`
<a name="batch-transform-errors-failed"></a>

Se uma tarefa de transformação em lote falhar ao processar um arquivo de entrada devido a um problema com o conjunto de dados, a SageMaker IA marca a tarefa como`failed`. Se um arquivo de entrada contiver um registro inválido, o trabalho de transformação não criará um arquivo de saída para esse arquivo de entrada, pois isso impede que ele mantenha a mesma ordem nos dados transformados e no arquivo de entrada. Quando o conjunto de dados tiver vários arquivos de entrada, um trabalho de transformação continuará a processar arquivos de entrada, mesmo que ele não possa processar um dos arquivos. Os arquivos processados ainda geram resultados utilizáveis.

Se estiver usando seus próprios algoritmos, você poderá usar texto de espaço reservado, como `ERROR`, quando o algoritmo encontrar um registro inválido em um arquivo de entrada. Por exemplo, se o último registro em um conjunto de dados for inválido, o algoritmo colocará o texto do espaço reservado para esse registro no arquivo de saída.