Formatos de inferencia de DeepAR - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Formatos de inferencia de DeepAR

En la siguiente página se describen los formatos de solicitud y respuesta para la inferencia con el modelo Amazon SageMaker DeepAR.

Formatos de solicitud de DeepAR JSON

Consulte un modelo de capacitación mediante el punto de enlace del modelo. El punto final adopta el siguiente formato de JSON solicitud.

En la solicitud, el campo instances se corresponde con la serie de tiempo que el modelo debe prever.

Si se ha realizado la capacitación del modelo con categorías, debe proporcionar el campo cat en cada instancia. Si se ha realizado la capacitación del modelo sin el campo cat, debe omitirse.

Si se ha capacitado el modelo con una serie temporal de característica personalizada (dynamic_feat), debe proporcionar el mismo número de valores dynamic_feat para cada instancia. Cada uno de ellos debe tener una longitud dada por length(target) + prediction_length, donde los últimos valores prediction_length corresponden a los puntos temporales en el futuro que se preverán. Si el modelo se capacitó sin serie temporal de características personalizada, el campo no debe incluirse en la solicitud.

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

El campo configuration es opcional. configuration.num_samples establece el número de rutas de muestra que el modelo genera para calcular la media y los cuantiles. configuration.output_types describe la información que aparecerá en la solicitud. Los valores válidos son "mean", "quantiles" y "samples". Si especifica "quantiles", se devuelven los valores de los cuantiles en configuration.quantiles como series temporales. Si especifica "samples", el modelo también devuelve las muestras sin procesar para calcular otras salidas.

Formatos de respuesta DeepAR JSON

A continuación se muestra el forma de una respuesta, en la que [...] son las matrices 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": [...] } ] }

DeepAR tiene un tiempo de espera de respuesta de 60 segundos. Cuando se transfieren varias series temporales en una única solicitud, las previsiones se generan de forma secuencial. Debido a que la previsión para cada serie temporal suele tardar aproximadamente 300 a 1000 milisegundos o más, según el tamaño del modelo, la transferencia de demasiadas series temporales en una sola solicitud puede provocar tiempos de espera. Es mejor enviar menos series temporales por solicitud y enviar más solicitudes. Dado que el algoritmo DeepAR utiliza varios procesos de trabajo por instancia, puede lograr un desempeño mucho mayor enviando varias solicitudes en paralelo.

De forma predeterminada, DeepAR utiliza un trabajador por cada uno CPU para la inferencia, si hay suficiente memoria por cada uno. CPU Si el modelo es grande y no hay memoria suficiente para ejecutar un modelo en cada unoCPU, se reduce el número de trabajadores. El número de trabajadores utilizados para la inferencia se puede sobrescribir mediante la variable de entorno (MODEL_SERVER_WORKERSpor ejemplo, configurandoMODEL_SERVER_WORKERS=1) al llamar a. SageMaker CreateModelAPI

Transformación por lotes con el algoritmo DeepAR

La previsión de DeepAR permite obtener inferencias mediante la transformación por lotes a partir de datos con el formato de líneas. JSON En este formato, cada registro se representa en una sola línea como un JSON objeto y las líneas se separan mediante caracteres de nueva línea. El formato es idéntico al formato de JSON líneas utilizado para el entrenamiento de modelos. Para obtener más información, consulte Interfaz de entrada/salida para el algoritmo DeepAR. Por ejemplo:

{"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

Al crear el trabajo de transformación con CreateTransformJob, establezca el valor BatchStrategy en SingleRecord y establezca el valor SplitType en la configuración TransformInput en Line, dado que los valores predeterminados actualmente provocan errores de tiempo de ejecución.

De forma similar al formato de solicitud de inferencia de punto de enlace alojado, los campos cat y dynamic_feat para cada instancia son obligatorios si se cumplen las dos condiciones siguientes:

  • El modelo se capacita en un conjunto de datos que contiene los campos cat y dynamic_feat.

  • Los valores cardinality y num_dynamic_feat correspondientes utilizados en el trabajo de capacitación no se establecen en "".

A diferencia de la inferencia de punto de enlace alojado, el campo de configuración se establece una vez para el trabajo de inferencia por lotes completo mediante una variable de entorno denominada DEEPAR_INFERENCE_CONFIG. El valor de se DEEPAR_INFERENCE_CONFIG puede transmitir cuando se crea el modelo mediante una llamada CreateTransformJobAPI. Si falta DEEPAR_INFERENCE_CONFIG en el entorno del contenedor, el contenedor de inferencia utiliza el siguiente valor predeterminado:

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

La salida también está en formato de JSON líneas, con una línea por predicción, en un orden idéntico al orden de las instancias del archivo de entrada correspondiente. Las predicciones se codifican como objetos idénticos a los devueltos por respuestas en modo de inferencia online. Por ejemplo:

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

Tenga en cuenta que, en la TransformInputconfiguración de la SageMaker CreateTransformJobsolicitud, los clientes deben establecer explícitamente el AssembleWith valor enLine, ya que el valor predeterminado None concatena todos los JSON objetos de la misma línea.

Por ejemplo, esta es una SageMaker CreateTransformJobsolicitud para un trabajo de DeepAR con una personalización: DEEPAR_INFERENCE_CONFIG

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