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 CreateModel
API
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 campidynamic_feat
. -
I valori corrispondenti
cardinality
enum_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 CreateTransformJob
API. 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 TransformInput
configurazione della SageMaker CreateTransformJob
richiesta 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 CreateTransformJob
richiesta 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", ... }, ... }