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_WORKERS
por ejemplo, configurandoMODEL_SERVER_WORKERS=1
) al llamar a. SageMaker CreateModel
API
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
ydynamic_feat
. -
Los valores
cardinality
ynum_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 CreateTransformJob
API. 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 TransformInput
configuración de la SageMaker CreateTransformJob
solicitud, 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 CreateTransformJob
solicitud 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", ... }, ... }