Formats d'inférence DeepAR - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Formats d'inférence DeepAR

La page suivante décrit les formats de demande et de réponse pour l'inférence avec le modèle Amazon SageMaker DeePar.

Formats de requête DeePar JSON

Interrogez un modèle entraîné à l'aide du point de terminaison du modèle. Le point de terminaison utilise le format de JSON demande suivant.

Dans la demande, le champ instances correspond à la série chronologique qui doit être prévue par le modèle.

Si le modèle a été entraîné avec des catégories, vous devez fournir un paramètre cat dans chaque instance. Si le modèle a été entraîné sans le champ cat, il doit être omis.

Si le modèle a été entraîné avec une série chronologique de caractéristiques personnalisées (dynamic_feat), vous devez fournir le même nombre de valeurs dynamic_feat pour chaque instance. Chacune d'entre elles doit avoir une longueur spécifiée par length(target) + prediction_length, où les dernières valeurs prediction_length correspondent aux points temporels dans le futur qui seront prédits. Si le modèle a été entraîné sans série chronologique de caractéristiques personnalisées, le champ ne doit pas être inclus dans la demande.

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

Le champ configuration est facultatif. configuration.num_samples définit le nombre d'exemples de chemins que le modèle génère pour estimer la moyenne et les quantiles. configuration.output_types décrit les informations qui seront renvoyées dans la demande. Les valeurs valides sont "mean""quantiles" et "samples". Si vous spécifiez "quantiles", chacune des valeurs de quantiles dans configuration.quantiles est renvoyée sous la forme d'une série chronologique. Si vous spécifiez "samples", le modèle renvoie également les échantillons bruts utilisés pour calculer les autres sorties.

Formats de réponse DeePar JSON

Voici le format d'une réponse, où [...] sont les ensembles de nombres :

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

Le temps de réponse de DeepAR est de 60 secondes. Lors de la transmission de plusieurs séries chronologiques dans une seule demande, les prévisions sont générées de manière séquentielle. Puisque la prévision pour chaque série chronologique dure généralement entre 300 et 1 000 millisecondes environ (ou plus), la transmission d'un trop grand nombre de séries chronologiques dans une seule demande peut entraîner des dépassements de délai, selon la taille du modèle. Il est préférable d'envoyer moins de séries chronologiques par demande et d'envoyer davantage de demandes. Puisque l'algorithme DeepAR utilise plusieurs instances de travail par instance, vous pouvez obtenir un débit beaucoup plus élevé en envoyant plusieurs demandes en parallèle.

Par défaut, DeePar utilise un worker par CPU pour l'inférence, s'il y a suffisamment de mémoire par. CPU Si le modèle est volumineux et qu'il n'y a pas assez de mémoire pour exécuter un modèle sur chacun d'euxCPU, le nombre de travailleurs est réduit. Le nombre de travailleurs utilisés pour l'inférence peut être remplacé à l'aide de la variable d'environnement (par MODEL_SERVER_WORKERS exemple, en définissantMODEL_SERVER_WORKERS=1) lorsque vous appelez le. SageMaker CreateModelAPI

Transformation par lots avec l'algorithme DeepAR

Les prévisions DeePar permettent d'obtenir des inférences en utilisant la transformation par lots à partir de données au JSON format Lines. Dans ce format, chaque enregistrement est représenté sur une seule ligne sous forme d'JSONobjet, et les lignes sont séparées par des caractères de nouvelle ligne. Le format est identique au format JSON Lines utilisé pour l'entraînement des modèles. Pour plus d’informations, veuillez consulter Interface d'entrée/de sortie pour l'algorithme DeepAR. Par exemple :

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

Lors de la création de la tâche de transformation à l'aide de CreateTransformJob, définissez la valeur de BatchStrategy sur SingleRecord et la valeur de SplitType de la configuration TransformInput sur Line, étant donné que les valeurs par défaut provoquent actuellement des échecs de l'exécution.

De même que pour le format de demande d'inférence du point de terminaison hébergé, les champs cat et dynamic_feat pour chaque instance sont requis si les deux conditions suivantes sont vraies :

  • Le modèle est entraîné sur un jeu de données contenant les champs cat et dynamic_feat.

  • Les valeurs cardinality et num_dynamic_feat correspondantes utilisées dans la tâche d'entraînement ne sont pas définies sur "".

Contrairement à l'inférence du point de terminaison hébergé, le champ de configuration est défini une fois pour la totalité de la tâche d'inférence par lots à l'aide d'une variable d'environnement nommée DEEPAR_INFERENCE_CONFIG. La valeur de DEEPAR_INFERENCE_CONFIG peut être transmise lorsque le modèle est créé en appelant CreateTransformJobAPI. Si DEEPAR_INFERENCE_CONFIG est manquant dans l'environnement du conteneur, le conteneur d'inférence utilise la valeur par défaut suivante :

{ "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 sortie est également au format JSON Lignes, avec une ligne par prédiction, dans un ordre identique à l'ordre des instances dans le fichier d'entrée correspondant. Les prédictions sont encodées en tant qu'objets identiques à ceux retournés par les réponses dans le mode d'inférence en ligne. Par exemple :

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

Notez que dans la TransformInputconfiguration de la SageMaker CreateTransformJobdemande, les clients doivent définir explicitement la AssembleWith valeur surLine, car la valeur par défaut None concatène tous les JSON objets sur la même ligne.

Par exemple, voici une SageMaker CreateTransformJobdemande pour une tâche DeePar personnalisée : DEEPAR_INFERENCE_CONFIG

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