Formati di inferenza DeepAR - Amazon SageMaker

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

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

Formati di richiesta DeepAR JSON

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

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 di risposta DeepAr JSON

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 CPU per l'inferenza, se c'è memoria sufficiente per. CPU Se il modello è grande e non c'è abbastanza memoria per eseguire un modello su ciascuno di essiCPU, il numero di worker viene ridotto. Il numero di worker utilizzati per l'inferenza può essere sovrascritto utilizzando la variabile di ambiente (ad MODEL_SERVER_WORKERS esempio, impostandoMODEL_SERVER_WORKERS=1) quando si chiama il. SageMaker CreateModelAPI

Trasformazione in batch con l'algoritmo DeepAR

La previsione DeepAR supporta l'ottenimento di inferenze utilizzando la trasformazione in batch dai dati utilizzando il formato Lines. JSON In questo formato, ogni record è rappresentato su una singola riga come JSON oggetto e le righe sono separate da caratteri di nuova riga. Il formato è identico al formato JSON Lines utilizzato per l'addestramento dei modelli. Per informazioni, consultare Interfaccia di input/output per l'algoritmo DeepAR. Per 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 CreateTransformJob, imposta il valore BatchStrategy su SingleRecord e il valore SplitType nella configurazione TransformInput 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 chiamando CreateTransformJobAPI. 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"] }

L'output è anche in formato JSON Linee, con una riga per previsione, in un ordine identico all'ordine delle istanze nel file di input corrispondente. Le previsioni sono codificate come oggetti identici a quelli restituiti dalle risposte in modalità di inferenza online. Per esempio:

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

Nota che nella TransformInputconfigurazione della SageMaker CreateTransformJobrichiesta i client devono impostare esplicitamente il AssembleWith valore suLine, poiché il valore predefinito None concatena tutti gli JSON oggetti sulla stessa riga.

Ad esempio, ecco una SageMaker CreateTransformJobrichiesta 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", ... }, ... }