Il sera mis à jour à tout moment car il est en cours.
*mise à jour
En janvier 2017, la mise en œuvre du prototype a été achevée. Nous avons parlé de cette implémentation à AWS Premier Night # 3, veuillez donc vous reporter à [ici](http: http: //blog.serverworks.co.jp/tech/2017/01/13/awspremier3-starting-serverless-ml/) Veuillez consulter l'article.
En gros, c'est un article que je veux juste faire de délicieux plats récents. Une tentative pour obtenir une opération facile et un apprentissage automatique en même temps en mettant la logique ML sur _ comme un service_
Dans cet article, nous allons discuter ici comment mettre la logique de «l'analyse des séries temporelles» sur une infrastructure sans serveur d'un système FaaS ou une infrastructure gérée telle que PaaS. Veuillez noter que les détails de la méthode d'analyse ne seront pas discutés.
Pour le moment, l'objectif est de savoir si le lieu où se déplace la mise en œuvre du processus d'analyse est (probablement) plus facile à exploiter que le serveur physique / virtuel conventionnel. La ligne de base est autour de FaaS et PaaS.
L'analyse que j'essaie de faire est une "analyse de séries chronologiques". Dans le contexte de la surveillance des infrastructures, la détection des valeurs aberrantes / détection des points de changement est applicable. Récemment, vous avez Datadog implémenté en tant que fonction de version bêta. Je trouve que c'est très sympa. => http://docs.datadoghq.com/ja/guides/anomalies/
La détection des valeurs aberrantes / détection des points de changement est basée sur les données passées pour déterminer si les ** données actuelles sont ** une valeur à noter au vu des tendances passées. C'est une méthode pour déterminer la valeur actuelle et ne peut pas prédire l'avenir. D'autre part, la méthode que j'utilise cette fois est la "logique de prédiction de la valeur future" en utilisant des méthodes telles que _AR (Auto Regression) _ et _MA (Moving Average) _.
L'objectif de prévision est le "montant des ventes mensuelles". Importez les performances de ventes mensuelles agrégées à partir du CRM (Salesforce dans mon cas) et utilisez le cadre d'analyse des séries chronologiques pour prévoir les ventes les plus récentes sur N mois.
Atelier ML en tant que service. Un événement dérivé de ServerlessConf. => [Plan spécial] Atelier d'apprentissage automatique sans serveur => SlideShare
Le langage utilisé est essentiellement Python. La bibliothèque autour de l'apprentissage automatique est vaste, l'environnement qui prend en charge Python est vaste et j'aime ça.
Dans cette implémentation, les bibliothèques suivantes sont utilisées.
J'ai listé les candidats auxquels je pense. Il y a beaucoup de choses que je n'ai pas envisagées et que je n'ai jamais utilisées. Je voudrais que vous signaliez toute information influente.
Du voisinage du "machine learning x cloud". Après tous ces trois sont les principaux points.
Amazon ML ne prend pas en charge l'analyse des séries chronologiques, il est donc hors service. J'attendais une sortie chez re: Invent, mais Direction de Another Vous avez fait evolution dans / rekognition /). C'était une annonce très chaude, mais il semble que la direction soit différente de ce à quoi je m'attendais cette fois.
L'analyse des séries temporelles Azure prend uniquement en charge la détection des anomalies, elle n'est donc pas prise en charge telle quelle. Cependant, vous pouvez intégrer du code Python / R et vous pouvez l'utiliser pour implémenter n'importe quoi. L'environnement d'exécution prend en charge Anaconda et il n'y a aucun problème avec la prise en charge de la bibliothèque.
L'apprentissage automatique GCP n'a pas encore été étudié. Puisqu'il y a une description qu'il est basé sur TensorFlow, je pense que la réponse est probablement "tout peut être implémenté", mais je manque encore de compréhension, y compris les services périphériques, donc c'est dans un état non examiné pour le moment.
Un service appelé Function as a Service. Il y a également trois majors ci-dessous.
Azure / GCP fait encore l'objet de recherches insuffisantes. Pour Lambda, cela fonctionne en regroupant des packages Python (et des bibliothèques partagées) qui ne sont pas inclus dans l'environnement d'exécution Lambda. En tant que méthode, je me réfère à ce (joli) hack. La différence est que statsmodels est requis, mais il s'inscrit dans la limite de taille (50 Mo) du package bundle de Labmda. => Using Scikit-Learn in AWS Lambda -- Serverless Code
Je me demande si les autres FaaS ont fondamentalement la même liaison. Comme pour Azure Functions, la plate-forme d'exécution est basée sur App Service, il est donc possible de résoudre le problème en utilisant App Service Editor. Document officiel "Développer des applications Node.js avec App Service Editor ", il semble que les packages peuvent être ajoutés par npm, donc même en Python Le raisonnement est que ce serait la même raison. Ce n'est toujours pas vérifié, mais si ↑ est vrai, vous êtes probablement un grand fan d'Azure.
PaaS et environnement de conteneur géré. Puisque «je veux faire du sans serveur» est l'un des points de départ, je suis fondamentalement réticent à envisager l'embauche.
Anaconda a toutes les bibliothèques dont j'ai besoin. Un PaaS prenant en charge Anaconda dans l'environnement d'exécution serait une option intéressante.
Heroku aimerait avoir Anaconda dans l'environnement d'exécution, mais cela ne semble pas être fait. Après avoir étudié le Build pack, il semble qu'il existe un Conda Build Pack. C'est une très belle ligne, mais il semble que statsmodels ne soit pas inclus. Je n'ai pas d'autre choix que de construire mon environnement par moi-même, mais si j'ai du mal, je considérerai la direction de faire de mon mieux avec FaaS.
Cloud Docker est pratiquement identique à ECS si AWS est utilisé comme arrière, il est donc exclu une fois. Cependant, le support multi-plateforme est intéressant comme Terraform. C'est un service que j'aimerais aborder une fois à une autre occasion.
GAE peut utiliser un environnement d'exécution basé sur Dockerfile défini par l'utilisateur s'il s'agit d'une version bêta Environnement flexible. Il semble y avoir une possibilité.
Veuillez consulter le Blog de l'entreprise pour les documents. L'histoire de la mise en œuvre est écrite à partir de la diapositive p.30.
La mise en œuvre étant trop approximative, la configuration et les fonctions doivent être de plus en plus refactorisées. Je veux séparer le prétraitement et le post-traitement de la fonction qui pilote la logique de prédiction et en faire une configuration de type chaîne. Étant donné que la source de données est sur Salesforce, j'aimerais y travailler sur la coopération.
C'est dommage que la seule façon d'ajouter un paquet soit de "pousser vous-même dans l'archive zip". Tout en disant qu'il est sans serveur, c'est un peu écrasant d'avoir autant de mal autour de la construction. .. ..
Eh bien, de nos jours, il existe des outils de déploiement qui ciblent FaaS, et je pense qu'il y a de nombreux domaines qui peuvent être couverts par la puissance des outils. C'est un problème, mais la perception actuelle est que c'est une grave préoccupation.
Concernant l'outil de déploiement, Lamvery semble être utile pour le moment. Il semble qu'il ait une fonction pour collecter et regrouper non seulement les packages Python, mais aussi les bibliothèques partagées, et le travail de construction semble progresser. Il est également pratique que l'unité de gestion soit l'unité fonctionnelle. Je n'ai utilisé aucun outil de déploiement en particulier, je vais donc utiliser Lamvery pour le développement futur.
J'ai choisi AWS Lambda en raison de mon expérience dans l'entreprise, mais pour être honnête, je préfère utiliser Azure dans la situation actuelle.
L'environnement d'exécution de _ "Exécuter un script Python" _ dans Azure Machine Learning couvrait tous les packages dont j'avais besoin. Azure Machine Learning envisage également l'intégration avec les magasins de données et les applications. Si vous souhaitez jouer avec la logique (de la partie analyse) et souhaitez également vous lier à des services externes, je pense qu'Azure Machine Learning est le meilleur choix.
Notez que vous devez vous assurer que les packages requis sont inclus dans l'environnement d'exécution Execute Python Script (Anaconda). Il semble qu'il puisse être géré même s'il n'est pas inclus, mais pour l'effacer, il est nécessaire de prendre des mesures similaires à Lambda ci-dessus, de sorte que l'avantage de pouvoir l'utiliser facilement est perdu. (Référence officielle)
J'ai analysé les "informations de ventes mensuelles" téléchargées sur S3 avec la plate-forme d'exécution d'AWS Lambda et j'ai essayé de prédire les dernières ventes.
Pour faire fonctionner la logique de prédiction, il était nécessaire d'utiliser des packages qui ne sont pas inclus dans l'environnement d'exécution de la fonction Lambda, mais en les regroupant dans le package de déploiement + en ajoutant le processus de chargement .so au processus de démarrage au moment de l'exécution, ce Résoudre le problème.
La mise en œuvre étant encore approximative, il y a de nombreux points à améliorer. Au 14 janvier 2017, les choses laissées en suspens et les perspectives d'avenir sont les suivantes.