

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Formati di inferenza DeepAR
<a name="deepar-in-formats"></a>

La pagina seguente descrive i formati di richiesta e risposta per l'inferenza con il modello Amazon SageMaker AI DeepAR.

## Formati della richiesta JSON DeepAR
<a name="deepar-json-request"></a>

Esegui la query a un modello addestrato utilizzando l'endpoint del modello. L'endpoint necessita del seguente formato di richiesta JSON. 

Nella richiesta, il campo `instances` corrisponde alla serie temporale che deve essere prevista dal modello. 

Se il modello è stato sottoposto a training con categorie, devi fornire un `cat` per ogni istanza. Se il modello è stato addestrato senza il campo `cat`, il modello deve essere omesso.

Se il modello è stato addestrato con una serie temporale di caratteristiche personalizzate (`dynamic_feat`), devi fornire lo stesso numero di valori `dynamic_feat` per ogni istanza. Ognuno di essi deve avere una lunghezza data da `length(target) + prediction_length`, dove gli ultimi valori `prediction_length` corrispondono ai punti temporali futuri che saranno previsti. Se il modello è stato addestrato senza serie temporali personalizzate, il campo non deve essere incluso nella richiesta.

```
{
    "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"]
    }
}
```

Il campo `configuration` è facoltativo. `configuration.num_samples` imposta il numero di percorsi di esempio generati dal modello per stimare la media e i quantili. `configuration.output_types` descrive le informazioni che vengono restituite nella richiesta. I valori validi sono `"mean"``"quantiles"` e `"samples"`. Se specifichi `"quantiles"`, ciascuno dei valori di quantili in `configuration.quantiles` viene restituito come serie temporale. Se specifichi `"samples"`, il modello restituisce anche i campioni non elaborati utilizzati per calcolare le altre uscite.

## Formati della risposta JSON DeepAR
<a name="deepar-json-response"></a>

Di seguito è riportato il formato di una risposta, dove `[...]` sono matrici di numeri:

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

DeepAR ha un timeout di risposta di 60 secondi. Quando si passano più serie temporali in una singola richiesta, le previsioni vengono generate in modo sequenziale. Poiché la previsione per ciascuna serie temporale richiede in genere da 300 ad almeno 1000 millisecondi a seconda delle dimensioni del modello, il passaggio di troppe serie temporali in una singola richiesta può causare il timeout. È meglio inviare meno serie temporali per richiesta e inviare più richieste. Dal momento che l'algoritmo DeepAR utilizza più worker per istanza, è possibile ottenere un throughput molto più elevato inviando più richieste in parallelo.

Per impostazione predefinita, DeepAR utilizza un worker per CPU per l'inferenza, se c'è sufficiente memoria per CPU. Se il modello è di grandi dimensioni e non c'è abbastanza memoria per eseguire un modello su ciascuna CPU, il numero di worker è ridotto. Il numero di worker utilizzati per l'inferenza può essere sovrascritto utilizzando la variabile di ambiente (ad `MODEL_SERVER_WORKERS` esempio, impostando`MODEL_SERVER_WORKERS=1`) quando si chiama l'API AI. SageMaker [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)

## Trasformazione in batch con l'algoritmo DeepAR
<a name="deepar-batch"></a>

La previsione DeepAR supporta l'inferenza utilizzando la trasformazione in batch dai dati utilizzando il formato JSON Lines. In questo formato, ogni record è rappresentato su una singola riga come oggetto JSON e le righe sono separate da caratteri di nuova riga. Il formato è identico al formato JSON Lines utilizzato per l’addestramento del modello. Per informazioni, consulta [Interfaccia di input/output per l'algoritmo DeepAR](deepar.md#deepar-inputoutput). Esempio:

```
{"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**  
Quando crei il processo di trasformazione con [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html), imposta il valore `BatchStrategy` su `SingleRecord` e il valore `SplitType` nella configurazione [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html) su `Line`, poiché al momento i valori di default provocano errori di runtime.

Simile al formato della richiesta di inferenza dell'endpoint ospitato, il `cat` e i campi `dynamic_feat` per ogni istanza sono obbligatori se sono vere entrambe le seguenti condizioni:
+ Il modello viene addestrato su un set di dati che contiene il `cat` e i campi `dynamic_feat`.
+ I valori corrispondenti `cardinality` e `num_dynamic_feat` utilizzati nel processo di addestramento non sono impostati su `"".`

Diversamente dall'inferenza dell'endpoint ospitato, il campo di configurazione viene impostato una volta per l'intero processo di inferenza batch utilizzando una variabile di ambiente denominata `DEEPAR_INFERENCE_CONFIG`. Il valore di `DEEPAR_INFERENCE_CONFIG` può essere passato quando il modello viene creato da una chiamata all'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` non è specificato nell'ambiente del container, il container di inferenza utilizza il seguente valore predefinito:

```
{
    "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"]
}
```

Anche l'output è in formato JSON Lines, con una riga per previsione, nell'ordine identico all'ordine di istanza nel file di input corrispondente. Le previsioni sono codificate come oggetti identici a quelli restituiti dalle risposte in modalità di inferenza online. Esempio:

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

Nota che nella [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html)configurazione della [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)richiesta SageMaker AI i client devono impostare esplicitamente il valore su`Line`, poiché il `AssembleWith` valore predefinito `None` concatena tutti gli oggetti JSON sulla stessa riga.

Ad esempio, ecco una [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)richiesta SageMaker AI per un job DeepAr con una personalizzazione: `DEEPAR_INFERENCE_CONFIG`

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