Wir planen, es nach Bedarf zu aktualisieren, während wir daran arbeiten.
*aktualisieren
Im Januar 2017 wurde die Implementierung des Prototyps abgeschlossen. Wir haben in AWS Premier Night # 3 über diese Implementierung gesprochen. Weitere Informationen finden Sie unter [hier](http: http: http: //blog.serverworks.co.jp/tech/2017/01/13/awspremier3-starting-serverless-ml/) Bitte lesen Sie den Artikel.
Im Grunde ist es ein Artikel, in dem ich nur ein paar leckere Speisen machen möchte. Ein Versuch, eine einfache Bedienung und maschinelles Lernen gleichzeitig zu erreichen, indem die ML-Logik als Service aktiviert wird.
In diesem Artikel werde ich hier die Untersuchung beschreiben, um die Logik der "Zeitreihenanalyse" auf die serverlose Infrastruktur des FaaS-Systems oder der verwalteten Infrastruktur wie PaaS anzuwenden, wenn dies möglich ist. Bitte beachten Sie, dass die Details der Analysemethode nicht besprochen werden.
Derzeit ist das Ziel, ob der Ort, an dem sich die Implementierung des Analyseprozesses bewegt, (wahrscheinlich) einfacher zu bedienen ist als der herkömmliche physische / virtuelle Server. Die Grundlinie ist um FaaS und PaaS.
Die Analyse, die ich versuche, ist "Zeitreihenanalyse". Im Rahmen der Infrastrukturüberwachung ist die Erkennung von Ausreißern / Änderungspunkten anwendbar. Kürzlich haben Sie Datadog als Beta-Version implementiert. Ich finde es sehr schön. => http://docs.datadoghq.com/ja/guides/anomalies/
Die Erkennung von Ausreißern / Änderungspunkten basiert auf früheren Daten, um zu bestimmen, ob die ** aktuellen Daten ** ein Wert sind, der im Hinblick auf vergangene Trends notiert werden sollte. Es ist eine Methode zur Bestimmung des aktuellen Werts und kann die Zukunft nicht vorhersagen. Andererseits ist die Methode, die ich diesmal verwende, "Future Value Prediction Logic" unter Verwendung von Methoden wie _AR (Auto Regression) _ und _MA (Moving Average) _.
Das prognostizierte Ziel ist "monatlicher Umsatz". Importieren Sie die aggregierte monatliche Verkaufsleistung aus CRM (in meinem Fall Salesforce) und verwenden Sie das Zeitreihenanalyse-Framework, um die letzten Verkäufe für N Monate vorherzusagen.
ML als Servicewerkstatt. Ein Spin-off-Ereignis von ServerlessConf. => [Sonderplan] Serverless Machine Learning Workshop => SlideShare
Die verwendete Sprache ist im Grunde Python. Die Bibliothek rund um maschinelles Lernen ist umfangreich, die Umgebung, die Python unterstützt, ist groß und ich mag es.
In dieser Implementierung werden die folgenden Bibliotheken verwendet.
Ich habe die Kandidaten aufgelistet, an die ich denken kann. Es gibt viele Dinge, die ich nicht berücksichtigt und nie benutzt habe. Ich möchte, dass Sie auf einflussreiche Informationen hinweisen.
Aus der Nachbarschaft von "Maschinelles Lernen x Cloud". Immerhin sind diese drei die Hauptpunkte.
Amazon ML unterstützt keine Zeitreihenanalyse, daher ist es out. Ich hatte eine Veröffentlichung bei re: Invent erwartet, aber Direction von Another Sie haben evolution in / rekognition /) durchgeführt. Es war eine sehr heiße Ankündigung, aber es scheint, dass die Richtung anders ist, als ich diesmal erwartet hatte.
Die Azure-Zeitreihenanalyse unterstützt nur die Anomalieerkennung und wird daher nicht unterstützt. Sie können jedoch Python / R-Code einbetten und damit alles implementieren. Die Ausführungsumgebung unterstützt Anaconda, und es gibt kein Problem mit der Bibliotheksunterstützung.
GCP Machine Learning wurde noch nicht untersucht. Da es eine Beschreibung gibt, die auf TensorFlow basiert, denke ich, dass die Antwort wahrscheinlich "alles kann implementiert werden" lautet, aber mir fehlt immer noch das Verständnis, einschließlich Peripheriedienste, so dass es sich derzeit in einem ungeprüften Zustand befindet.
Ein Dienst namens Function as a Service. Es gibt auch drei Hauptfächer unten.
Azure / GCP ist noch nicht ausreichend erforscht. Bei Lambda werden Python-Pakete (und gemeinsam genutzte Bibliotheken) gebündelt, die nicht in der Lambda-Ausführungsumgebung enthalten sind. Als Methode verweise ich auf diesen (netten) Hack. Der Unterschied besteht darin, dass statsmodels erforderlich ist, aber innerhalb der Größenbeschränkung (50 MB) des Labmda-Bundle-Pakets liegt. => Using Scikit-Learn in AWS Lambda -- Serverless Code
Ich frage mich, ob andere FaaS grundsätzlich die gleiche Bindung haben. Bei Azure-Funktionen basiert die Ausführungsplattform auf dem App Service, sodass Sie das Problem möglicherweise mithilfe des App Service-Editors lösen können. Offizielles Dokument "Node.js Apps mit App Service Editor entwickeln ", es scheint, dass Pakete von npm hinzugefügt werden können, also sogar in Python Das Grundprinzip ist, dass es der gleiche Grund wäre. Es ist immer noch nicht verifiziert, aber wenn ↑ wahr ist, sind Sie wahrscheinlich ein großer Fan von Azure.
PaaS und verwaltete Containerumgebung. Da "Ich möchte ohne Server arbeiten" einer der Ausgangspunkte ist, zögere ich grundsätzlich, eine Einstellung in Betracht zu ziehen.
Anaconda verfügt über alle Bibliotheken, die ich benötige. Ein PaaS, das Anaconda in seiner Ausführungsumgebung unterstützt, wäre eine attraktive Option.
Heroku möchte Anaconda in der Ausführungsumgebung haben, aber es scheint nicht getan zu sein. Nach der Untersuchung des Build Packs scheint es ein [Conda Build Pack] zu geben (https://github.com/kennethreitz/conda-buildpack). Es ist eine sehr schöne Zeile, aber es scheint, dass statsmodels nicht enthalten ist. Ich habe keine andere Wahl, als die Umgebung selbst aufzubauen, aber wenn es mir schwer fällt, werde ich überlegen, wie ich mit FaaS mein Bestes geben soll.
Cloud Docker ist praktisch dasselbe wie ECS, wenn AWS als Back verwendet wird, sodass es einmal ausgeschlossen wird. Die Unterstützung mehrerer Plattformen ist jedoch wie bei Terraform interessant. Es ist ein Service, den ich bei einer anderen Gelegenheit einmal ansprechen möchte.
GAE kann eine benutzerdefinierte Dockerfile-basierte Laufzeit verwenden, wenn es sich um eine Beta-Version [Flexible Environment] handelt (https://cloud.google.com/appengine/docs/flexible/). Es scheint eine Möglichkeit zu geben.
Materialien finden Sie im Unternehmensblog. Die Geschichte über die Implementierung ist ab Folie S.30 geschrieben.
Da die Implementierung zu grob ist, müssen Konfiguration und Funktionen immer mehr überarbeitet werden. Ich möchte die Vor- und Nachbearbeitung von der Funktion trennen, die die Vorhersagelogik steuert, und sie zu einer stringartigen Konfiguration machen. Da sich die Datenquelle in Salesforce befindet, möchte ich dort an der Zusammenarbeit arbeiten.
Es ist schade, dass die einzige Möglichkeit, ein Paket hinzuzufügen, darin besteht, "selbst in das Zip-Archiv zu pushen". Obwohl es serverlos ist, ist es überwältigend, sich so schwer mit dem Bau zu beschäftigen. .. ..
Nun, heutzutage gibt es Bereitstellungstools, die auf FaaS abzielen, und ich denke, es gibt viele Bereiche, die von der Leistungsfähigkeit der Tools abgedeckt werden können. Es ist ein Ärger, aber die aktuelle Wahrnehmung ist, dass es ein ernstes Problem ist.
In Bezug auf das Bereitstellungstool scheint Lamvery derzeit nützlich zu sein. Es scheint, dass es eine Funktion hat, nicht nur Python-Pakete, sondern auch gemeinsam genutzte Bibliotheken zu sammeln und zu bündeln, und die Build-Arbeit scheint Fortschritte zu machen. Es ist auch praktisch, dass die Verwaltungseinheit die Funktionseinheit ist. Ich habe keine speziellen Bereitstellungstools verwendet, daher werde ich Lamvery für die zukünftige Entwicklung verwenden.
Ich habe mich aufgrund meines Unternehmenshintergrunds für AWS Lambda entschieden, aber um ehrlich zu sein, bevorzuge ich in der aktuellen Situation die Verwendung von Azure.
Die Ausführungsumgebung für _ "Python-Skript ausführen" _ in Azure Machine Learning deckte alle benötigten Pakete ab. Azure Machine Learning berücksichtigt auch die Integration in Datenspeicher und Anwendungen. Wenn Sie mit der Logik (des Analyseteils) spielen und auch mit externen Diensten verknüpfen möchten, ist Azure Machine Learning meiner Meinung nach die beste Wahl.
Beachten Sie, dass Sie sicherstellen müssen, dass die erforderlichen Pakete in der Ausführungsumgebung Execute Python Script (Anaconda) enthalten sind. Es scheint, dass es verwaltet werden kann, auch wenn es nicht enthalten ist, aber um es zu löschen, müssen ähnliche Schritte wie beim obigen Lambda unternommen werden, damit der Vorteil, es leicht verwenden zu können, verloren geht. (Offizielle Referenz)
Ich habe die mit der Ausführungsplattform von AWS Lambda auf S3 hochgeladenen "monatlichen Verkaufsinformationen" analysiert und versucht, die neuesten Verkäufe vorherzusagen.
Um die Vorhersagelogik ausführen zu können, mussten Pakete verwendet werden, die nicht in der Lambda-Funktionsausführungsumgebung enthalten sind. Sie wurden jedoch im Bereitstellungspaket gebündelt und zur Startverarbeitung zur Laufzeit mit .so geladen Das Problem beheben.
Da die Implementierung noch schwierig ist, gibt es viele Verbesserungsmöglichkeiten. Ab dem 14. Januar 2017 sind die Dinge unvollendet und die Zukunftsaussichten sind wie folgt.
Recommended Posts