Wie laufen reale maschinelle Lernproduktionssysteme?


7

Liebe Maschinelles Lernen / KI-Community,

Ich bin nur ein angehender und aufstrebender Maschinenlerner, der an offenen Online-Datensätzen und einigen lokal für mein Projekt erstellten POCs gearbeitet hat. Ich habe einige Modelle gebaut und in Gurkenobjekte umgewandelt, um ein erneutes Training zu vermeiden.

Und diese Frage verwirrt mich immer wieder. Wie funktioniert ein echtes Produktionssystem für ML-Algorithmen?

Angenommen, ich habe meinen ML-Algorithmus mit einigen Millionen Daten trainiert und möchte ihn in ein Produktionssystem verschieben oder auf einem Server hosten. Konvertieren sie in der realen Welt in Essiggurkenobjekte? Wenn ja, wäre es eine riesige eingelegte Datei, nicht wahr? Diejenigen, die ich lokal trainiert und für 50000 Zeilendaten selbst konvertiert habe, beanspruchten 300 MB Speicherplatz auf der Festplatte für dieses eingelegte Objekt. Ich denke nicht, dass dies der richtige Ansatz ist.

Wie funktioniert es also, um zu vermeiden, dass mein ML-Algorithmus eingehende Daten neu trainiert und mit der Vorhersage beginnt? Und wie machen wir den ML-Algorithmus tatsächlich als kontinuierlichen Online-Lernenden? Zum Beispiel habe ich einen Bildklassifizierer erstellt und die eingehenden Bilder vorhergesagt. Ich möchte den Algorithmus jedoch erneut trainieren, indem ich die eingehenden Online-Bilder zu meinen zuvor trainierten Datensätzen hinzufüge. Möglicherweise nicht für alle Daten, aber täglich, wenn ich alle empfangenen Daten für diesen Tag kombinieren und mit neu 100 Bildern neu trainieren möchte, die mein zuvor trainierter Klassifikator mit dem tatsächlichen Wert vorhergesagt hat. Und dieser Ansatz sollte sich nicht auf meinen zuvor trainierten Algorithmus auswirken, um die Vorhersage eingehender Daten zu beenden, da dieses erneute Training aufgrund von Rechenressourcen und Daten einige Zeit in Anspruch nehmen kann.

Ich habe viele Artikel gegoogelt und gelesen, konnte aber meine obige Frage nicht finden oder verstehen. Und das verwirrt mich jeden Tag. Sind manuelle Eingriffe auch für Produktionssysteme erforderlich? oder gibt es einen automatisierten Ansatz dafür?

Alle Hinweise oder Antworten auf die oben genannten Fragen wären sehr hilfreich und würden geschätzt. Bitte lassen Sie mich wissen, wenn meine Fragen keinen Sinn ergeben oder nicht verständlich sind.

Dies ist kein Projekt, den ich suche. Nur ein allgemeiner Fall eines Beispiels für ML-Systeme in der realen Welt.

Vielen Dank im Voraus!

Antworten:


2

Es gibt viele Dinge zu beachten, um ein Modell in der Produktion zu haben. Die wichtigsten, nach denen Sie fragen, sind:

  • Funktionalität
  • Die Architektur

Funktionalität

Damit Ihr Modell in der Produktion von einem Webserver aus verwendet werden kann, können Sie eine API hosten, die Ihr Modell verfügbar macht.

Beispielsweise wird ein Flask Python-Server ausgeführt, auf dem Sie GET http://<your_host>/prediction/image.jpgder predict()Funktion Ihres Modells einen Endpunkt (z. B. ) zuordnen.

Dann haben Sie erwähnt, dass es ein kontinuierlicher Online-Lernender ist . Die meisten Klassifizierer verbessern sich mit mehr Daten, wenn diese Daten mit Anmerkungen versehen (dh beschriftet) sind. Dazu müssen Sie sie jedoch manuell mit Anmerkungen versehen und Ihrem System erneut zuführen und Ihr Modell neu trainieren. Wenn Sie neue Daten automatisch sicher kennzeichnen könnten, müssten Sie Ihr System nicht verbessern. Ich würde also sagen, dass einige manuelle Arbeit erforderlich wäre (Etikettierung), aber der Rest kann automatisiert werden. Sie können Ihrem Webserver weitere Endpunkte hinzufügen, auf denen Sie weitere Trainingsdaten hochladen können. Das System trainiert Ihr Modell neu, kümmert sich um die Versionierung und lädt das neueste trainierte Modell neu.

Die Architektur

Lager

Sie erwähnen pickleDateien und befürchten, dass sie auf der Festplatte zu groß sind. Bei Cloud-Lösungen ist dies heutzutage jedoch oft kein Problem mehr.

Sie können Blob-Storage-Lösungen verwenden, und die Preise sind häufig sehr niedrig (z. B. https://azure.microsoft.com/en-us/services/storage/blobs/ kosten0.002Euro / GB / Monat).

Natürlich können Sie dort viele Gurken für die Versionierung aufbewahren (empfohlen). Wenn Sie jedoch die Kosten minimieren möchten, können Sie nur das neueste Modell speichern.

Wenn Ihre API häufig verwendet wird, möchten Sie Ihr Modell nicht jedes Mal neu laden. Es wäre besser, es immer im RAM verfügbar zu haben. Es ist wiederum nicht teuer, einen Server mit viel RAM in der Cloud zu hosten.

Layout

Ein Architekturlayout, das Sie haben können, ist:

+----------------+          +--------------+
|                |          |              |
|  ADMIN SERVER  | -------> | BLOB STORAGE |
|                |          |              |
+----------------+          +--------------+
        |                           ^
        |                           |
        |               +-----------+-----------+
        |               |                       |
        |      +------------------+  +----------------+
        |      |                  |  |                |
        |      |  PREDICT SERVER  |  | PREDICT SERVER |
        |      |                  |  |                |
        |      +------------------+  +----------------+
        |                    ^          ^
        |                    |          |
        |                +------------------+
        |                | |              | |
        +--------------> | |     QUEUE    | |
                         | |              | |
                         +------------------+

Hier werden ADMIN SERVERalle Funktionen zum erneuten Trainieren des Modells und zum Hochladen neuer Modelle in die Speicher- und Veröffentlichungsjobs in die Warteschlange übernommen PREDICT SERVERS, um die neuesten Modelle abzurufen BLOB STORAGE.

Das BLOB STORAGEhält die Modelle.

Die PREDICT SERVERs predict()legen Ihre Funktion offen, sodass Ihr Modell für andere Systeme zugänglich ist. Hier werden die Modelle für schnellere Vorhersagen im RAM gespeichert. Abhängig von der Verwendung Ihres Modells möchten Sie möglicherweise haben1Server für Vorhersagen. Da Ihr Modell auf BLOB STORAGEund nicht auf Ihrer lokalen Festplatte gespeichert ist, können alle das neueste Modell abrufen.

Das QUEUEist , wie die ADMIN SERVERmit allen kommunizieren kann PREDICT SERVERs.


Vielen Dank Bruno! Dies ist eine der besten und einfachsten Erzählungen, die ich zu dieser Frage erhalten habe.
Manikant Kella

@ ManikantKella mein Vergnügen. Jederzeit.
Bruno Lubascher

2

Ja, es ist typisch, dass das hochgeladene Modell dauerhaft dargestellt wird, und ja, es ist normalerweise sehr groß als Datei / Dateien. Mit Hilfe pickleist eine Möglichkeit , es zu tun, häufig verwendet mit scikit-learn, zum Beispiel. Deep-Learning-Frameworks haben normalerweise ihre eigenen Formate, aber nichts hindert Sie daran, picklesie auch zu verwenden, außer dass sie als Ansatz komplizierter und weniger effizient sind.

Ich bin nicht sicher, ob ich den zweiten Teil der Frage verstehe, aber wenn Sie Ihr Modell online ändern möchten, hindert Sie nichts daran, eine neue Gurke zu erstellen. Es wird empfohlen, dass Sie eine neue Schulung als separaten Stapelprozess im Hintergrund ausführen, um zu vermeiden, dass Ihre Website oder Ihr Webdienst blockiert wird, insbesondere wenn Ihr Webanwendungsserver Single-Threaded ist. Darüber hinaus müssen Sie bei der Verwendung von Serverressourcen vorsichtig sein, damit Sie solche Batch-Updates in Zeiten mit geringem Datenverkehr besser ausführen können. Dies kann über das Wochenende erfolgen oder wenn Ihre Benutzerbasis überwiegend regional ist, nachts oder an Feiertagen.


Ja, eingelegte Dateien können verwendet werden. Stellen Sie sich jedoch Millionen von Daten vor, und um dieses trainierte Modell in eine Pickle-Datei zu konvertieren, können diese Daten Gigabyte belegen. Und wenn wir Ingenieurdaten verwenden, müssen diese ebenfalls in Pickle konvertiert werden, um mehr Speicherplatz auf dem Server zu schaffen. Wie vermeiden wir diese Situation in der realen Welt? Und für andere wollte ich neu trainieren und als neue Pickle-Datei speichern. Manuelle Eingriffe sind erforderlich, die jeder automatisierte dazu wie Online-Vorhersagen und neue Daten zu alten Daten macht und automatisch neu trainiert.
Manikant Kella

Beabsichtigen Sie, scikit-learn oder ein anderes Framework zu verwenden? Wie ich bereits sagte, bieten verschiedene Frameworks andere Vorteile für das Fortbestehen des Modells. Im Wesentlichen schreibt die überwiegende Mehrheit von ihnen es in eine Datei. In der Tat sind mehrere Gigabyte nicht so viel. Sie können es sogar auf einem SSD-Laufwerk auf dem Server speichern, um eine bessere Leistung zu erzielen.
Mapto

Denken Sie nicht, dass es möglich sein sollte, den manuellen Eingriff, den Sie derzeit in Betracht ziehen, mit Skripten zu automatisieren?
Mapto

Ja, ich spreche hauptsächlich über die Verwendung von Scikit Learn.
Manikant Kella

Hmm, das könnte möglich sein, aber wie automatisieren wir, ob mein Modell oder System mit neuen trainierten Daten gut funktioniert oder nicht? Gibt es in einem solchen Fall einen Weg?
Manikant Kella
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.