

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á.

# Formatos de inferência do DeepAR
<a name="deepar-in-formats"></a>

A página a seguir descreve os formatos de solicitação e resposta para inferência com o modelo Amazon SageMaker AI DeepAR.

## Formatos de solicitação JSON do DeepAR
<a name="deepar-json-request"></a>

Para fazer a consulta de um modelo treinado, use o endpoint do modelo. O endpoint usa o seguinte formato de solicitação JSON: 

Na solicitação, o campo `instances` corresponde à série temporal que deve ser prevista pelo modelo. 

Se o modelo tiver sido treinado com categorias, você deverá fornecer um `cat` para cada instância. Se o modelo tiver sido treinado sem o campo `cat`, este deverá ser omitido.

Se o modelo tiver sido treinado com uma série temporal de atributos personalizados (`dynamic_feat`), você terá que fornecer o mesmo número de valores `dynamic_feat`para cada instância. Cada um deles deve ter um comprimento dado por `length(target) + prediction_length`, em que os últimos valores `prediction_length` correspondem aos pontos de tempo no futuro que serão previstos. Se o modelo tiver sido treinado sem séries temporais de atributos personalizados, o campo não deverá ser incluído na solicitação.

```
{
    "instances": [
        {
            "start": "2009-11-01 00:00:00",
            "target": [4.0, 10.0, "NaN", 100.0, 113.0],
            "cat": [0, 1],
            "dynamic_feat": [[1.0, 1.1, 2.1, 0.5, 3.1, 4.1, 1.2, 5.0, ...]]
        },
        {
            "start": "2012-01-30",
            "target": [1.0],
            "cat": [2, 1],
            "dynamic_feat": [[2.0, 3.1, 4.5, 1.5, 1.8, 3.2, 0.1, 3.0, ...]]
        },
        {
            "start": "1999-01-30",
            "target": [2.0, 1.0],
            "cat": [1, 3],
            "dynamic_feat": [[1.0, 0.1, -2.5, 0.3, 2.0, -1.2, -0.1, -3.0, ...]]
        }
    ],
    "configuration": {
         "num_samples": 50,
         "output_types": ["mean", "quantiles", "samples"],
         "quantiles": ["0.5", "0.9"]
    }
}
```

O campo `configuration` é opcional. `configuration.num_samples` define o número de caminhos de amostra gerados pelo modelo para estimar a média e os quantis. `configuration.output_types` descreve as informações que serão retornadas na solicitação. Os valores válidos são `"mean"`, `"quantiles"` e `"samples"`. Se você especificar `"quantiles"`, cada um dos valores de quantil em `configuration.quantiles` será retornado como uma série temporal. Se você especificar `"samples"`, o modelo também retornará as amostras brutas usadas para calcular os outros resultados.

## Formatos de resposta JSON do DeepAR
<a name="deepar-json-response"></a>

A seguir, exibimos o formato de uma resposta, em que `[...]` são matrizes de números:

```
{
    "predictions": [
        {
            "quantiles": {
                "0.9": [...],
                "0.5": [...]
            },
            "samples": [...],
            "mean": [...]
        },
        {
            "quantiles": {
                "0.9": [...],
                "0.5": [...]
            },
            "samples": [...],
            "mean": [...]
        },
        {
            "quantiles": {
                "0.9": [...],
                "0.5": [...]
            },
            "samples": [...],
            "mean": [...]
        }
    ]
}
```

O DeepAR tem um tempo limite de resposta de 60 segundos. Ao transmitir várias séries temporais em uma única solicitação, as previsões são geradas sequencialmente. Como a previsão para cada série temporal normalmente leva cerca de 300 a 1000 milissegundos ou mais, dependendo do tamanho do modelo, transmitir muitas séries temporais em uma única solicitação pode causar tempos limite. É melhor enviar menos séries temporais por solicitação e enviar mais solicitações. Como o algoritmo DeepAR usa vários operadores por instância, você pode obter um throughput muito maior enviando várias solicitações em paralelo.

Por padrão, o DeepAR usa um operador por CPU para inferência, caso haja memória suficiente por CPU. Se o modelo for grande e não houver memória suficiente para executar um modelo em cada CPU, o número de operadores será reduzido. O número de trabalhadores usados para inferência pode ser sobrescrito usando a variável de ambiente (`MODEL_SERVER_WORKERS`por exemplo, por configuração`MODEL_SERVER_WORKERS=1`) ao chamar a SageMaker API de IA [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html).

## Transformação em lote com o algoritmo DeepAR
<a name="deepar-batch"></a>

As previsões do DeepAR oferecem apoio para a obtenção de inferências usando a transformação em lote dos dados usando o formato JSON Lines. Nesse formato, cada registro é representado em uma única linha como um objeto JSON, e as linhas são separadas por caracteres de nova linha. O formato é idêntico ao formato JSON Lines usado para treinamentos de modelos. Para mais informações, consulte [Interface de entrada/saída para o algoritmo DeepAR](deepar.md#deepar-inputoutput). Por exemplo:

```
{"start": "2009-11-01 00:00:00", "target": [4.3, "NaN", 5.1, ...], "cat": [0, 1], "dynamic_feat": [[1.1, 1.2, 0.5, ..]]}
{"start": "2012-01-30 00:00:00", "target": [1.0, -5.0, ...], "cat": [2, 3], "dynamic_feat": [[1.1, 2.05, ...]]}
{"start": "1999-01-30 00:00:00", "target": [2.0, 1.0], "cat": [1, 4], "dynamic_feat": [[1.3, 0.4]]}
```

**nota**  
Ao criar o trabalho de transformação com [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html), defina o valor de `BatchStrategy` como `SingleRecord` e defina o valor de `SplitType` na configuração [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html) como `Line`, pois, no momento, os valores padrão provocam falhas em runtime.

De forma semelhante ao formato de solicitação de inferência de endpoint hospedado, os campos `cat` e `dynamic_feat` para cada instância serão necessários se os dois fatores a seguir forem verdadeiros:
+ O modelo é treinado em um conjunto de dados que continha os campos `cat` e `dynamic_feat`.
+ Os valores `cardinality` e `num_dynamic_feat` correspondente usados no trabalho de treinamento não estão definidos como `"".`

Ao contrário da inferência de endpoints hospedados, o campo de configuração é definido uma vez para todo o trabalho de inferência em lote usando uma variável de ambiente denominada `DEEPAR_INFERENCE_CONFIG`. O valor de `DEEPAR_INFERENCE_CONFIG` pode ser transmitido quando o modelo é criado chamando a API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html). Se `DEEPAR_INFERENCE_CONFIG` estiver ausente no ambiente de contêiner, o contêiner de inferência usará o seguinte padrão:

```
{
    "num_samples": 100,
    "output_types": ["mean", "quantiles"],
    "quantiles": ["0.1", "0.2", "0.3", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9"]
}
```

A saída também está no formato JSON Lines, com uma linha por predição, em uma ordem idêntica à ordem de instâncias no arquivo de entrada correspondente. As predições são codificadas como objetos idênticos àqueles retornados por respostas no modo de inferência online. Por exemplo:

```
{ "quantiles": { "0.1": [...], "0.2": [...] }, "samples": [...], "mean": [...] }
```

Observe que, na [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html)configuração da [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)solicitação de SageMaker IA, os clientes devem definir explicitamente o `AssembleWith` valor como`Line`, pois o valor padrão `None` concatena todos os objetos JSON na mesma linha.

Por exemplo, aqui está uma [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)solicitação de SageMaker IA para um trabalho DeepAR com um personalizado: `DEEPAR_INFERENCE_CONFIG`

```
{
   "BatchStrategy": "SingleRecord",
   "Environment": { 
      "DEEPAR_INFERENCE_CONFIG" : "{ \"num_samples\": 200, \"output_types\": [\"mean\"] }",
      ...
   },
   "TransformInput": {
      "SplitType": "Line",
      ...
   },
   "TransformOutput": { 
      "AssembleWith": "Line",
      ...
   },
   ...
}
```