Le Blog Amazon Web Services
Établir des prévisions de consommation d’énergie avec Amazon Forecast
Félicitations! Vous venez de décrocher un poste d’AWSome Data Scientist chez Happy Green Eco Energy LP. Votre première mission est d’implémenter un système de prévision de consommation électrique et de visualisation des données de consommations à l’aide des services AWS.
Suite à un rendez-vous acharné entre l’architecte cloud et votre équipe, vous avez décidé d’implémenter l’architecture suivante pour répondre aux besoins précédemment cités :
Dans cet article, nous allons voir comment générer des prédictions basées sur des données chronologiques stockées dans un datalake basé sur Amazon S3. Nous allons utiliser le service Amazon Forecast pour importer les données, entrainer un modèle de prédiction utilisant un algorithme de notre choix puis exporter ces données pour pouvoir les consommer via Amazon Athena pour requêter et Amazon Quicksight pour les visualiser.
Préparation des données en entrée
Nous allons utiliser un fichier CSV qui contient le jeu de données. Celui-ci est une sous-partie, préalablement transformée, d’un jeu de données open-source de l’Université de Californie à Irvine. Il présente 3 colonnes :
- timestamp (string timestamp) : Temps représentant la fin de la période de la consommation électrique,
- consommation électrique (float) : Consommation électrique,
- id client (string) : Id du client concernant la consommation.
Voici ci-dessous un aperçu du fichier :
2014-01-01 01:00:00,38.34991708126038,client_12
2014-01-01 02:00:00,33.582089552238806,client_12
2014-01-01 03:00:00,34.41127694859037,client_12
2014-01-01 04:00:00,39.800995024875625,client_12
2014-01-01 05:00:00,41.044776119402975,client_12
2014-01-01 06:00:00,33.58208955223882,client_12
2014-01-01 07:00:00,35.44776119402985,client_12
2014-01-01 08:00:00,38.34991708126035,client_12
1 – Téléchargez le fichier csv, item-demand-time.csv.
2 – Enregistrez-le localement.
3 – Créez un compartiment/bucket S3 nommé forecasting-<NOM> (<NOM> doit être un nombre de votre choix pour garantir l’unicité du nom de votre compartiment).
4 – Créez deux répertoires au sein de votre compartiment/bucket S3 : forecast et train.
5 – Positionnez-vous dans le répertoire train et uploader le dataset au format CSV.
Mise en route d’Amazon Forecast
Dans cette première partie nous allons nous focaliser sur la mise en place de la première partie de l’architecture comme représenté ci-dessous :
1 – Via Amazon Forecast, créez un premier dataset group. Les dataset groups sont des collections d’un ou plusieurs de vos ensembles de données. Les dataset groups vous permettent d’organiser vos ensembles de données par cas d’utilisation spécifique. Par exemple, une société d’électronique peut créer un groupe de données pour prévoir la demande de ses produits et un autre groupe de données pour prévoir l’utilisation de son stock. Une autre entreprise peut utiliser différents groupes de données pour prévoir les effets des réductions de prix, des promotions commerciales et d’autres campagnes.
2 – Renseignez le nom de votre dataset group.
3 – Choisissez un Forecasting domain ou domaine de prévision en français qui correspond à un domaine de prévision définit un cas d’utilisation de la prédiction. Vous pouvez choisir un domaine prédéfini, ou vous pouvez créer votre propre domaine.Ici nous allons choisir “Custom” pour créer notre propre domaine correspondant à notre cas d’utilisation.
4 – Maintenant que vous avez créé votre dataset group, les prochaines étapes consistent à créer votre ensemble de données chronologiques cibles (timeseries) et à importer vos données d’entrainement dans le dataset group. Vous pouvez répéter le processus plus tard pour ajouter d’autres types d’ensembles de données à votre groupe dataset group. Le nom que vous donnez à votre ensemble de données ne doit pas nécessairement correspondre au nom du fichier de données dans votre compartiment Amazon S3 ; vous pouvez lui donner un nom unique.
Si vous prévoyez d’avoir un grand nombre de dataset groups, vous pouvez utiliser une convention de nommage cohérente afin de pouvoir facilement retrouver vos dataset groups sur le tableau de bord.Après avoir nommé votre dataset group, vous fournissez d’autres informations dont Amazon Forecast a besoin, telles que la fréquence de collecte des données dans votre compartiment Amazon S3 et le format de l’horodatage des données. Ces informations aident Amazon Forecast à comprendre comment vos données sont collectées et structurées.
Les algorithmes qui forment vos prédicteurs (vos modèles) utilisent également ces informations. Le fait d’avoir plus de données dans votre ensemble de données peut contribuer à améliorer la précision des prévisions.
5 – Spécifiez le nom correspondant à l’import du dataset sans oublier le chemin vers votre compartiment/bucket Amazon S3 contenant votre dataset. Ensuite cliquez sur “Start import”.Concernant le rôle IAM autorisant l’accès au compartiment S3 où se situent les données, il est nécessaire ici de créer un nouveau rôle AWS IAM via le formulaire :
6 – Cela peut prendre quelques minutes car Amazon Forecast importe maintenant le dataset pour pouvoir l’utiliser par la suite.
7 – Une fois l’import terminé, vous pouvez démarrer le predictor via le button “Start“. Un predictor est un modèle utilisé par Amazon Forecast pour générer vos prévisions. Pour former un predictor, Amazon Forecast utilise un algorithme de prédiction.
8 – Afin de créer le predictor, il est nécessaire de renseigner les paramètres suivants :
- le nom de votre predictor
- le “Forecast horizon” qui est le nombre de pas de temps que le modèle va utiliser pour prédire. L’horizon de prévision est également appelé longueur de prédiction. Par exemple, si vous configurez un ensemble de données pour la collecte de données quotidienne (à l’aide du paramètre DataFrequency de l’opération CreateDataset) et définissez l’horizon de prévision sur 20, le modèle renvoie des prévisions pour 20 jours.
- choisissez l’algorithme de manière manuelle et choisissez l’algorithme ARIMA. Ici l’algorithme consiste à des étapes de traitement des données qui sont nécessaires pour former un prédicteur.Choisissez l’option Automatique si vous souhaitez laisser Amazon Forecast choisir le meilleur algorithme pour votre ensemble de données. Choisissez l’option Manuel si vous préférez choisir votre propre algorithme. Amazon Forecast fournit les algorithmes intégrés suivants pour divers scénarios de prévision:
9 – Lancez l’entraînement du modèle utilisant l’algorithme précédemment choisit.
10 – Une fois l’entraînement du modèle terminé, démarrez la génération des prédictions encliquant sur Start dans l’étape Generate forecasts.
11 – Nous allons désormais créer une prédiction. Lorsque vous créez une prédiction, Amazon Forecast génère des prédictions pour chaque élément unique de votre ensemble de données de séries chronologiques cibles. Vous devez choisir un prédicteur pour créer la prévision.
Ici, il est nécessaire de renseigner les informations suivantes :
- le nom de la prédiction
- le predictor précédemment créé
- les types de prédictions qui représentent les quantiles à partir desquels les prévisions probabilistes sont générées. Les valeurs acceptées comprennent 0,01 à 0,99 (par incréments de 0,01 seulement) et la « moyenne ». La prévision moyenne est différente de 0,50 (médiane) lorsque la distribution n’est pas symétrique (par exemple, Bêta, Binomial négatif).
Dans cet exemple nous allons choisir les quantiles .10,.50,.90
Les quantiles (intervalles de prédiction) expriment l’incertitude du résultat. Amazon Forecast s’appuie sur une approche probabiliste avec trois quantiles, 10%, 50%, 90%, et le service nous permet de calculer l’erreur associée. Les quantiles nous permettent d’avoir un intervalle de possible valeur.
Cliquez ensuite sur “Create a forecast”. Une fois la prévision générée, vous pouvez consulter vos prévisions sur la page de consultation des prévisions.
12 – Une fois que la construction de prédiction est finalisée (cela peut prendre quelques minutes), nous allons créer un export afin de permettre à Amazon Forecast d’enregistrer les données de prédictions dans notre répertoire/forecast de notre compartiment/bucket Amazon S3.
Pour cela, nous allons nous rendre dans la section “Forecasts“ en utilisant le menu sur la gauche. Puis cliquez sur “Create forecast export”.
Nous allons maintenant créer l’export pour le forecast précédemment créé. Pour cela il est nécessaire de renseigner :
- le nom de l’export
- le modèle de prédiction à utiliser et d’où les prédictions proviennent
- créer un rôle IAM pour donner accès au compartiment Amazon S3 à Amazon Forecast pour pouvoir réaliser l’export. pour cela, sélectionnez “Specific S3 buckets” et renseignez le nom de votre compartiment S3. Puis cliquez sur “Create role”.
- le chemin d’accès vers votre répertoire /forecast au sein de votre compartiment S3
Cliquez sur “Create forecast export”.
13 – Une fois ceci effectué, nous pouvons consommer les données afin d’afficher les prédictions en utilisant la section “Forecast lookup”.
Ici, vous pouvez sélectionner votre modèle de prédictions créé précédemment, et les différents paramètres de temps et utiliser le paramètre item_id pour sélectionner la consommation d’un client en particulier.
14 – Nous pouvons maintenant constater que les prédictions ont bien été exportées dans notre répertoire /forecast de notre compartiment Amazon S3.
Cataloguer et compresser les données pour mieux les consommer
Dans cette deuxième partie nous allons nous focaliser sur la deuxième partie de notre architecture dont le but va être de cataloguer la donnée pour mieux la consommer par la suite.
Maintenant que nous avons généré et exporté les données de prédictions, nous allons les cataloguer afin de pouvoir ensuite les consommer avec des outils de visualisation comme Amazon QuickSight. Pour ce faire, nous allons utiliser le service AWS Glue et la fonctionnalité “Crawler” ou analyseur en français permettant de cataloguer les données en déterminant le schéma ce qui permettra de les utiliser par la suite.
AWS Glue est un service d’extraction, de transformation et de chargement (ETL) entièrement géré qui facilite la préparation et le chargement des données pour analyse des clients. Vous pouvez créer et exécuter une tâche ETL en quelques clics grâce à la Console AWS. Il vous suffit de pointer AWS Glue sur les données que vous avez stockées sur Amazon S3 pour qu’AWS Glue découvre vos données et les stocke dans le catalogue de métadonnées AWS Glue (c’est-à-dire, la définition et le schéma de la table). Dès qu’elles sont répertoriées, il est possible d’effectuer des recherches, de lancer des requêtes et de rendre vos données disponibles pour l’ETL.
1 – Se rendre sur le service AWS Glue à l’aide de la console
2 – Une fois sur la page du service, utilisez le menu à gauche pour vous rendre sur la section “Analyseurs”.
3- Nous allons maintenant créer un analyseur dont la fonction sera de déterminer le schéma des données de prédictions précédemment exportées. Cliquez sur “Ajouter un analyseur”.
4 – Nous allons maintenant créér l’analyseur en renseignant plusieurs paramètres :
-
- le nom de votre analyseur
-
- le type de notre data store ou magasin de données en français ainsi que le chemin vers nos données à cataloguer situées dans le répertoire /forecast de notre compartiment S3.
-
- créez un rôle IAM qui va permettre à votre analyseur d’avoir le droit d’accéder à vos données stockées dans votre compartiment S3.
-
- créez une base de données qui va stocker les métadonnées (schéma) de vos données de prédictions. La base de données va contenir des informations comme une table forecast contenant des paramètres que nous allons découvrir plus loin.
Cliquez sur “Ajouter une base de données” puis Créer une fois que vous avez renseigné le nom. Puis cliquez sur “Suivant”.
-
- Vérifiez que tous les paramètres sont corrects
Si tout est bon cliquez sur “Terminer”. L’analyseur est désormais créé.
5 – Vous pouvez maintenant le sélectionner puis cliquez sur “Exécuter un analyseur”.
Le status doit maintenant changer pour être “Starting”. Le crawler est maintenant en train de scanner les données pour en déterminer le schéma. Cela peut prendre quelques minutes.
Une fois terminé, vous pouvez voir qu’une table à été ajoutée à votre base de données précédemment crée (Tables ajoutées doit être à 1) :
6 – Si vous vous rendez dans la section “Tables” vous pouvez voir que la table forecast à bien été ajoutée.
Si vous cliquez sur le nom de votre table vous devez être en mesure de voir les paramètres suivant correspondants aux paramèrtes des prédictions générées par Amazon Forecast.
Désormais vos données exportées sont bien cataloguées et sont prêtes à être consommées mais attentions celles-ci ne sont pas encore compressés au format Parquet.
Compresser les données afin d’optimiser les coûts lors du requêtage
Dans cette deuxième partie optionnelle mais très conseillée, nous allons compresser nos données au format Parquet et ce afin de réduire la taille de ces données et ainsi optimiser les coûts et améliorer les performances lors du requêtage.
7 – Nous allons maintenant créer une tâche AWS Glue dont le rôle va être d’exécuter un script de compression sur les données stockées au format csv et ainsi les convertir au format Parquet. Rendez-vous sur la section ETL de la console d’AWS Glue et cliquez sur “Tâches”.
Cliquez sur “Ajouter une tâche”.
8 – Donnez un nom à votre tâche, sélectionnez le rôle AWS IAM précédemment et qui garanti à AWS Glue un accès à votre compartiment Amazon S3.
Cliquez sur “Suivant”.
9 – Sélectionnez votre source de données qui sera ici le répertoire de votre compartiment contenant les données de prévisions.
10 – Définissez un répertoire cible pour vos données qui seront converties au format Parquet par votre tâche AWS Glue. Ici le répertoire qui contiendra nos données au format Parquet s’appellera forecast_parquet.
Cliquez sur “Suivant”.
Ainsi, la tâche fait appel à un script Python automatiquement généré et vous permettant de compresser vos données sans avoir à coder vous même le script en entier. Celui-ci est déjà prêt à l’emploi.
Vous avez la possibilité de le personnaliser si besoin en utilisant la console.
11 – Votre tâche de compression est désormais prête à être exécutée.
12 – Vous pouvez maintenant utiliser la console pour suivre l’exécution de votre tâche et utiliser Amazon CloudWatch afin d’obtenir les logs de l’exécution.
La tâches est désormais au statut “Running”. L’exécution peut prendre quelques minutes avant d’être terminée.
Si l’exécution s’est bien déroulée la statut de la tâche doit être “Succeeded”.
Nous pouvons constater que la tâche a bien fonctionné en nous rendant dans notre compartiment S3. Nous pouvons constater la présence d’un nouveau répertoire “forecast_parquet” contenant nos données de prévision au format Parquet.
13 – Afin d’exploiter ces données dans ce nouveau format, il est maintenant nécessaire de les cataloguer en utilisant un analyseur comme fait précédemment.
Vous pouvez donc répéter les étapes précédentes pour créer un nouvel analyseur appelé “electricity_consumption_forecast_crawler_parquet” dont le rôle va être de créer une nouvelle table dans le catalogue de données.
Ce nouvel analyseur utilisera le chemin menant à vos données au format Parquet créé par votre tâche précédente : s3://forecasting-<YOURNAME>/forecast_parquet/.
14 – Une fois que votre analyseur a terminé son exécution, vous devriez obtenir une table supplémentaire dans votre catalogue de données. Une table nommée “forecast_parquet” comme le nom de votre répertoire contenant les données en Parquet.
Une fois ceci fait, les données compressées sont prêtes à être consommées. Pour rappel, l’étape d’optimisation faite précédemment est optionnelle mais est considérée comme une bonne pratique en terme de d’optimisation des coûts mais aussi des performances lors du requêtage.
Consommer les données générées
Nous allons maintenant mettre en place la dernière partie de notre architecture en intégrant les services de consommation des données et de visualisation. Pour cela nous allons utiliser deux services : Amazon Athena et Amazon Quicksight.
Amazon Athena
Amazon Athena est un service de requête interactif qui facilite l’analyse des données dans Amazon S3 à l’aide de la syntaxe SQL standard. Athena fonctionne sans serveur. Il n’existe aucune infrastructure à gérer et vous ne payez que pour les requêtes que vous exécutez.
Amazon Quicksight
Amazon QuickSight est un service rapide d’aide à la décision (BI) basé sur le cloud qui vous permet de fournir des renseignements à tout collaborateur de votre entreprise.
En tant que service entièrement géré, QuickSight vous permet de créer et de publier facilement des tableaux de bord interactifs qui incluent des aperçus générés par Machine Learning. Vous pouvez ensuite accéder aux tableaux de bord depuis n’importe quel appareil et les intégrer à vos applications, vos portails et vos sites web. Avec notre méthode de paiement à l’utilisation, QuickSight vous permet de donner à tout le monde l’accès aux données dont ils ont besoin, tout en ne payant que pour ce que vous utilisez.
1 – Se rendre sur le service Athena à l’aide de la console
2 – Cliquez sur “Mise en route“.
3 – Avant de commencer à requêter la donnée via Amazon Athena, nous devons fournir un compartiment S3 de sortie permettant de stocker la donnée requêtée. Pour cela, nous allons créer un nouveau répertoire dans notre compartiment S3 appelé “athenaquery” en utilisant le service Amazon S3. Une fois le répertoire créé, vous devriez avoir cette arborescence là dans votre compartiment S3 :
4 – Nous allons maintenant nous rendre à sur Amazon Athena et cliquez sur l’onglet “Settings” en haut à droite de la console. Nous allons spécifier ici le chemin vers notre nouveau répertoire pour permettre à Amazon Athena de stocker les résultats de nos requêtes.
Cliquez sur “Enregistrer”.
5 – Nous pouvons maintenant utiliser la console pour exécuter nos requêtes SQL.
Remarque : vous pourrez voir à gauche qu’Amazon Athena utilise le catalogue de données définit avec AWS Glue et utilise le schéma des données précédemment détecté afin de pouvoir exécuter des requêtes en ce basant dessus.
Nous allons maintenant créer une vue qui va nous permettre de rassembler les données de la table “forecast” qui nous intéresse mais aussi convertir le paramètre “date” qui est au format String vers le format Timestamp pour pouvoir l’utiliser dans Amazon Quicksight.
CREATE OR REPLACE VIEW electricity_consumption_forecast_view AS
SELECT "lower"("item_id") "item_id", "p90", "p50", "p10", CAST("from_iso8601_timestamp"("date") AS timestamp) "Timestamp"
FROM forecast_parquet
Une fois exécutée, vous êtes en mesure de voir votre vue dans l’onglet “Vues” à gauche.
Vous pouvez utiliser le bouton paramètres pour accéder à vos données et les visualiser dans la console.
Le résultat est ensuite affiché dans la console :
Nous allons utiliser la vue précédemment créée avec Amazon Quicksight pour accéder à ces données et les visualiser de manière graphique.
6 – Se rendre sur le service Quicksight à l’aide de la console
7 – Nous allons créer un compte afin de pouvoir utiliser Amazon Quicksight. Cliquez sur “Sign up for QuickSight”.
8 – Choisissez ici la version de QuickSight. Ici nous allons utiliser la version “Standard”
Cliquez sur “Continuer”.
9 – Choisissez ici plusieurs paramètres :
- Sélectionnez la région EU (Ireland)
- Choisissez un nom pour votre compte Quicksight
- Renseignez votre email pour l’envoi des notifications
Cliquez sur “Terminer”. Votre compte est en cours de création. Cela peut prendre quelques minutes.
Une fois votre compte créé, cliquez sur “Accéder à Amazon Quicksight”.
Avant de commencer à utiliser les données, nous allons ajouter de la capacité de stockage à notre cluster SPICE. SPICE est le moteur de calcul optimisé en mémoire d’Amazon QuickSight, conçu spécifiquement pour une visualisation ponctuelle et rapide des données. SPICE stocke vos données dans un système conçu pour la haute disponibilité, où elles sont conservées jusqu’à ce que vous décidiez de les supprimer. Vous pouvez ainsi améliorer les performances des ensembles de données de base de données en important les données dans SPICE au lieu d’envoyer une requête directe à la base de données.
10 – Nous allons maintenant créé une nouvelle analyse ce qui est en réalité un nouveau dashboard. Cliquez sur “Nouvelle analyse”.
11 – Créons maintenant un nouveau dataset qui va permettre à Quicksight d’accéder à vos données via Amazon Athena. Cliquez sur “Nouvel ensemble de données”.
Ensuite, choisissez Athena comme source de données :
12 – Créez une nouvelle source de données côté Quicksight et donnez lui un nom. Cliquez ensuite sur “Créer une source de données”.
13 – Sélectionnez ensuite votre base de données contenant votre catalogue de données puis la vue crée précédemment via Athena.
Cliquez sur “Sélectionner”.
14 – Importez les données depuis Amazon Athena dans votre SPICE pour un chargement plus rapide de vos données.
Cliquez sur “Visualize”.
15 – Une fois sur le dashboard, attendez quelques minutes que Quicksight charge les données dans le SPICE. Une fois terminez vous aurez ce message :
16 – Nous allons maintenant choisir le type de visualisation que nous allons utiliser pour visualiser nos données. Choisissez “Diagramme mixte à barre groupées”.
17 – Cliquez et déposez les paramètres à gauche dans chacun des champs du graphiques comme ci-dessous.
Ici, le graphique nous montre les prédictions exportées depuis Amazon Forecast mais basées sur toutes les consommations de tous les clients. Nous allons maintenant filtrer cela et afficher les prédictions d’un seul client.
18 – Cliquez sur “Filter” à gauche. Cliquez sur “En créer un…” puis choississez le paramètre item_id qui représente le nom des clients.
Choisissez “Liste de filtres personnalisés” comme Filter type puis renseignez le nom du client à filter pour nos prédictions. Ici client_12.
Cliquez sur “Appliquer”.
19 – Nous pouvons désormais visualiser nos prédictions pour un client donné via notre dashboard Quicksight.
Félicitations ! Vous avez atteint votre objectif et répondu à votre besoin métier. Vous pouvez désormais exploiter ces prévisions pour en tirer de la valeur pour votre entreprise.
Nous avons pu voir comment utiliser Amazon Forecast pour effectuer des prévisions basées sur un jeu de données historiques. Nous avons pu voir comment cataloguer la données recuelli avant de pouvoir la consommer puis nous avons pu utiliser des outils afin d’effectuer un requêtage des prévisions produites à des fins de visualisation et d’interprétation.
Dorian Richard, Solutions Architect (EMEA) chez Amazon Web Services France, il accompagne les clients français dans leur transformation digitale et leur adoption du cloud.
Felix Guglielmi Miguel, Solutions Architect (EMEA) chez Amazon Web Services France, il accompagne ses clients français dans leur adoption du Cloud AWS.