Première édition: 2020/3/3
Auteur: Soichi Takashige, Masahiro Ito, Hitachi, Ltd.
Dans cet article, nous présenterons le savoir-faire de conception du prétraitement des données et le résultat de la vérification des performances du prétraitement des données numériques lors de la conception d'un système intégrant un modèle d'apprentissage automatique.
Dans le premier volet, nous présenterons le prétraitement des données du système d'apprentissage automatique et les grandes lignes de sa conception.
** Liste des messages: **
L'analyse des données à l'aide de la technologie de l'IA telle que l'apprentissage automatique attire l'attention et le nombre de projets utilisant l'IA augmente. Dans les projets d'IA, nous analysons les données des clients pour créer des modèles d'apprentissage automatique afin d'obtenir des informations et d'automatiser les prévisions. Dans de nombreux cas, les projets d'IA sont 1) menés PoC (Proof of Concept) dirigés par des data scientists experts en analyse de données, et ont confirmé l'utilité des modèles d'analyse de données et d'apprentissage automatique, et 2) les résultats. De plus, l'ingénieur système (ci-après dénommé SE) réalisera le système de production, qui se déroule en deux étapes. En plus du rapport soumis au client, les livrables PoC par le data scientist ont un code source écrit dans un langage tel que Python, que SE conçoit et systématise.
L'un des défis de la systématisation basée sur les livrables PoC est l'augmentation de la quantité de données dans l'environnement de production. Étant donné que PoC n'est qu'une vérification, la quantité de données qui nous est confiée par les clients est souvent faible, et même s'il y a une grande quantité de données, nous échantillonnons et utilisons souvent les données pour une vérification rapide. Comme vous pouvez le voir, PoC utilise généralement une petite quantité de données qui peuvent être traitées sur une seule machine de bureau. D'autre part, puisque le système d'apprentissage automatique apprend sur la base des données, plus la quantité de données est grande, plus la précision de la prédiction est élevée. Par conséquent, lors de la création d'un système de production, une grande quantité de données est souvent utilisée pour améliorer la précision de la prédiction, et un système d'apprentissage automatique doit avoir des performances de traitement de données élevées.
En outre, alors que les scientifiques des données gèrent des modèles d'apprentissage automatique, le prétraitement des données est généralement conçu principalement par des ingénieurs tels que SE. Le prétraitement des données est une technologie étroitement liée au modèle d'apprentissage automatique, mais il nécessite également des connaissances en tant que SE, telles que la conception de l'infrastructure, le dimensionnement et la gestion des pannes en cas de panne. À ce moment-là, il n'est pas efficace de repenser et de réimplémenter le prétraitement à partir de zéro du côté SE à un coût et en temps élevés. Par conséquent, une approche qui favorise la systématisation en utilisant des prototypes développés par des scientifiques des données en Python, etc. est efficace. Cependant, il n'y a actuellement pas beaucoup d'informations publiques sur ce savoir-faire en matière de conception. Dans cet article, nous présenterons la procédure de conception et les points de prétraitement des données basés sur les connaissances obtenues à partir des résultats de la vérification des performances pour les SE qui ont terminé l'étape PoC et qui conçoivent un système qui intègre un modèle d'apprentissage automatique. Je vais.
Dans un système qui utilise l'apprentissage automatique, il est concevable d'effectuer un prétraitement des données principalement dans les trois phases d'apprentissage, d'inférence et de réapprentissage. La figure 1 donne un aperçu.
Figure 1 Vue d'ensemble du système d'utilisation de l'apprentissage automatique
Les ensembles de données stockés dans divers formats sont convertis en une structure de données adaptée à l'apprentissage d'un certain modèle, et les données sont normalisées et agrégées pour améliorer la précision. Dans le prétraitement pendant l'apprentissage, toutes les données sont souvent traitées en même temps et la quantité de traitement a tendance à être très importante par rapport à l'inférence.
L'inférence utilise un modèle pour effectuer des classifications et des prédictions de tendance sur les données collectées dans le champ d'opération réelle. L'inférence peut imposer des exigences de latence, telles que des secondes, auquel cas le prétraitement sera également soumis à des exigences de latence. Le prétraitement des données au moment de l'inférence est un traitement qui effectue une conversion de sorte qu'il ait les mêmes caractéristiques qu'au moment de l'apprentissage, mais il est effectué uniquement sur les données à déduire, et le traitement peut être simplifié. D'autre part, comme il est nécessaire d'exécuter le traitement à chaque fois que le modèle est utilisé, il est fréquemment appelé en continu dans le système de production.
Si des données pouvant être utilisées pour l'apprentissage sont accumulées à partir des données réelles sur le site d'exploitation, elles peuvent être utilisées pour mettre à jour le modèle. Dans un tel cas, le même traitement que le prétraitement des données au moment de l'apprentissage sera effectué.
Étant donné que le PoC par les scientifiques des données est souvent effectué avec une petite quantité de données, le prétraitement est souvent mis en œuvre en Python pendant le PoC. D'un autre côté, si vous essayez d'implémenter le prétraitement en Python pendant la systématisation, les problèmes indiqués dans le tableau 1 ci-dessous se produiront. Le tableau 1 montre également une solution à ce problème.
Tableau 1 Problèmes et solutions du système de prétraitement des données
# | Tâche | Plan de solution |
---|---|---|
① | Le prétraitement prend beaucoup de temps en raison de l'énorme quantité de données à cibler | Utilisation d'une infrastructure de traitement de Big DataConçu et mis en œuvre pour que le prétraitement écrit en Python, etc. puisse être exécuté en parallèle et distribué sur une plate-forme de traitement telle que Spark lorsque la quantité de données est importante. |
② | Si la plate-forme de traitement du Big Data est utilisée dans (1), une réimplémentation du prétraitement est nécessaire et cela demande beaucoup de main-d'œuvre. | Mise en œuvre du pré-traitement en vue de la systématisation dès la phase PoCChez PoC, nous adopterons et implémenterons une méthode d'implémentation de traitement Python qui fonctionnera sans changements majeurs lors de la conversion vers Spark. |
Concevez un système qui utilise l'apprentissage automatique, comme illustré à la figure 2. Comme évoqué au début de cet article, il est courant de réaliser des PoC pour confirmer l'utilité du machine learning et systématiser la logique dont l'utilité y a été confirmée.
Figure 2 Aperçu du processus de conception d'un système qui utilise l'apprentissage automatique
Comme le montre la figure 1, il existe deux grands systèmes qui utilisent l'apprentissage automatique: les systèmes d'apprentissage et les systèmes d'inférence. À partir de maintenant, nous traiterons des systèmes d'apprentissage. En général, le système d'inférence est comparé au système d'apprentissage.
Il y a une tendance.
Le tableau 2 montre les éléments de conception lors de la conception et de la mise en œuvre du prétraitement des données du système d'apprentissage. Seules les parties caractéristiques de l'apprentissage automatique sont présentées ici.
Tableau 2 Liste des éléments de conception du système d'apprentissage
# | Articles de conception | Détails |
---|---|---|
1 | Examen des exigences du système |
|
2 | Conception des données |
|
3 | Estimation des ressources par machine réelle |
|
4 | la mise en oeuvre |
|
5 | Conception de la disponibilité |
|
6 | Conception opérationnelle |
|
Dans un système d'apprentissage, le point le plus important est de savoir si le développement du modèle utilisant les données cibles peut être achevé dans le délai requis par les exigences du système. Dans la phase PoC, les données cibles ne sont souvent traitées que pendant une partie de la période (appareils, formulaires, etc.), mais dans la systématisation ultérieure, toute la période et tous les types de données sont traités. Cela peut entraîner une énorme quantité de données. Pour le prétraitement, il est important d'estimer les ressources (nombre de processeurs, quantité de mémoire) nécessaires pour la conception de la systématisation afin que le traitement puisse être terminé dans un temps de traitement acceptable pour les données volumineuses.
Lorsque vous recherchez les ressources requises pour le prétraitement, vérifiez d'abord la taille des données d'entrée / sortie et le temps de traitement à l'aide d'un petit ensemble de données pour chaque processus du prétraitement. Vérifiez également les processus (processus avec un grand nombre de répétitions) susceptibles d'être efficaces pour optimiser la logique de traitement, qui seront décrits dans la deuxième session et les suivantes.
En ce qui concerne le nombre de CPU parmi les ressources, le temps de traitement du système de production est estimé à partir de la taille des données d'entrée du système de production en fonction de la taille des données d'entrée et du temps de traitement lors de l'utilisation d'un petit ensemble de données (à ce stade, le temps de traitement est des données). Il doit être proportionnel à la taille). En divisant ce temps par le temps de traitement spécifié dans la configuration système requise, vous pouvez estimer le nombre approximatif de processeurs dont vous aurez besoin.
En ce qui concerne la quantité de mémoire, la taille des données de chaque processus dans le système de production est estimée en fonction de la taille des données d'entrée de chaque processus lors de l'utilisation d'un ensemble de données à petite échelle, et la taille totale est estimée.
Comme base pour exécuter le prétraitement des données du système de prétraitement de production, il est possible de décider de créer un environnement pour exécuter du code PoC écrit en Python tel qu'il est en Python ou de l'exécuter sur une plateforme de traitement distribuée telle que Spark. Est requis. Fondamentalement, à la suite de l'estimation des ressources requises, c'est une politique de prétraiter avec Spark si la mémoire semble insuffisante, et avec Python tel quel s'il n'y a pas de problème avec la quantité de mémoire.
Dans cet article, nous avons présenté un aperçu du prétraitement des données et de sa conception pour les systèmes utilisant l'apprentissage automatique. La prochaine fois, je présenterai le savoir-faire d'amélioration des performances du prétraitement des données numériques à l'aide de Python et le résultat de la vérification des performances sur la machine réelle.
La seconde: Vérification des performances du prétraitement par apprentissage automatique de données numériques (1)
Recommended Posts