ML-Pipelines

Beim maschinellen Lernen in der Produktion besteht das Ziel nicht darin, ein einzelnes Modell zu erstellen und bereitzustellen. Ziel ist es, automatisierte Pipelines zum Entwickeln, Testen und Bereitstellen von Modellen im Laufe der Zeit zu erstellen. Warum? Da sich die Welt verändert, verändern sich Trends in den Daten, wodurch Modelle in der Produktion veralten. Modelle müssen in der Regel mit aktuellen Daten neu trainiert werden, um langfristig Vorhersagen von hoher Qualität liefern zu können. Mit anderen Worten: Sie sollten eine Möglichkeit finden, veraltete Modelle durch neue zu ersetzen.

Ohne Pipelines ist das Ersetzen eines veralteten Modells ein fehleranfälliger Prozess. Wenn ein Modell beispielsweise schlechte Vorhersagen liefert, muss jemand neue Daten manuell erfassen und verarbeiten, ein neues Modell trainieren, seine Qualität validieren und es schließlich bereitstellen. ML-Pipelines automatisieren viele dieser sich wiederholenden Prozesse, wodurch die Verwaltung und Wartung von Modellen effizienter und zuverlässiger wird.

Pipelines erstellen

ML-Pipelines organisieren die Schritte zum Erstellen und Bereitstellen von Modellen in klar definierten Aufgaben. Pipelines haben eine von zwei Funktionen: Vorhersagen bereitstellen oder das Modell aktualisieren.

Vorhersagen liefern

Die Bereitstellungspipeline liefert Vorhersagen. Ihr Modell wird damit der realen Welt zugänglich gemacht und für Ihre Nutzer zugänglich. Wenn ein Nutzer beispielsweise eine Vorhersage wünscht – wie das Wetter morgen wird, wie viele Minuten die Fahrt zum Flughafen dauern wird oder eine Liste empfohlener Videos – empfängt und verarbeitet die Bereitstellungspipeline die Daten des Nutzers, macht eine Vorhersage und liefert sie dann an den Nutzer.

Modell aktualisieren

Modelle sind in der Regel fast direkt nach der Produktion veraltet. Im Wesentlichen treffen sie Vorhersagen anhand alter Informationen. Die Trainings-Datasets haben den Zustand der Welt vor einem Tag oder in einigen Fällen vor einer Stunde erfasst. Unausweichlich hat sich die Welt verändert: Ein Nutzer hat sich mehr Videos angesehen und benötigt eine neue Liste von Empfehlungen, Regen hat den Traffic verlangsamt und Nutzer benötigen aktualisierte Schätzungen für ihre Ankunftszeiten. Ein beliebter Trend führt dazu, dass Einzelhändler aktualisierte Inventarvorhersagen für bestimmte Artikel anfordern.

In der Regel trainieren Teams neue Modelle lange, bevor das Produktionsmodell veraltet ist. In einigen Fällen trainieren und stellen Teams täglich neue Modelle in einem kontinuierlichen Trainings- und Bereitstellungszyklus bereit. Idealerweise sollte das Training eines neuen Modells lange dauern, bevor das Produktionsmodell veraltet ist.

Die folgenden Pipelines arbeiten zusammen, um ein neues Modell zu trainieren:

  • Datenpipeline: Die Datenpipeline verarbeitet Nutzerdaten, um Trainings- und Test-Datasets zu erstellen.
  • Trainingspipeline. Die Trainingspipeline trainiert Modelle mit den neuen Trainings-Datasets aus der Datenpipeline.
  • Validierungspipeline. Die Validierungspipeline validiert das trainierte Modell. Dazu wird es mithilfe von Test-Datasets, die von der Datenpipeline generiert wurden, mit dem Produktionsmodell verglichen.

Abbildung 4 zeigt die Ein- und Ausgaben jeder ML-Pipeline.

ML-Pipelines

ML-Pipelines mit deren Ein- und Ausgaben Die Bereitstellungspipeline nimmt Nutzereingaben auf und liefert Vorhersagen. Die Datenpipeline verarbeitet die Anwendungsdatenlogs, um Trainings- und Test-Datasets zu erstellen, mit denen die Trainings- und Validierungspipeline neue Modelle trainieren und validieren.

Abbildung 4. ML-Pipelines automatisieren viele Prozesse für die Entwicklung und Pflege von Modellen. Jede Pipeline zeigt ihre Ein- und Ausgaben.

Ganz allgemein halten die Pipelines ein neues Modell in der Produktion bei:

  1. Zuerst geht ein Modell in die Produktion und die Bereitstellungspipeline beginnt mit der Bereitstellung von Vorhersagen.

  2. Die Datenpipeline beginnt sofort mit der Erfassung von Daten, um neue Trainings- und Test-Datasets zu generieren.

  3. Anhand eines Zeitplans oder Triggers trainieren und validieren die Trainings- und Validierungspipelines ein neues Modell mithilfe der von der Datenpipeline generierten Datasets.

  4. Wenn die Validierungspipeline bestätigt, dass das neue Modell nicht schlechter als das Produktionsmodell ist, wird das neue Modell bereitgestellt.

  5. Dieser Vorgang wiederholt sich ununterbrochen.

Modellveralterung und Trainingshäufigkeit

Fast alle Modelle sind veraltet. Einige Modelle veralten schneller als andere. Beispielsweise veralten Modelle, die Kleidung empfehlen, in der Regel schnell veraltet, da Verbraucherpräferenzen dafür bekannt sind, dass sie sich häufig ändern. Andererseits veralten Modelle, die Blumen identifizieren, möglicherweise nie veralten. Die Identifizierungsmerkmale einer Blume bleiben stabil.

Die meisten Modelle verfallen sofort nach der Produktion. Sie sollten eine Trainingshäufigkeit festlegen, die die Art Ihrer Daten widerspiegelt. Wenn die Daten dynamisch sind, sollten Sie häufig trainieren. Wenn es weniger dynamisch ist, müssen Sie möglicherweise nicht so oft trainieren.

Modelle trainieren, bevor sie veraltet sind. Das frühe Training bietet einen Puffer zur Behebung potenzieller Probleme, z. B. wenn die Daten oder Trainingspipeline ausfällt oder die Modellqualität schlecht ist.

Eine empfohlene Best Practice besteht darin, neue Modelle täglich zu trainieren und bereitzustellen. Genau wie normale Softwareprojekte mit einem täglichen Build- und Releaseprozess funktionieren ML-Pipelines für Training und Validierung oft am besten, wenn sie täglich ausgeführt werden.

Bereitstellungspipeline

Die Bereitstellungspipeline generiert und liefert Vorhersagen auf eine von zwei Arten: online oder offline.

  • Onlinevorhersagen: Onlinevorhersagen erfolgen in Echtzeit, in der Regel durch Senden einer Anfrage an einen Onlineserver und Zurückgeben einer Vorhersage. Wenn ein Nutzer beispielsweise eine Vorhersage wünscht, werden die Daten des Nutzers an das Modell gesendet und das Modell gibt die Vorhersage zurück. Gmail klassifiziert beispielsweise eingehende Nachrichten mithilfe von Onlinevorhersagen in Echtzeit.

  • Offlinevorhersagen: Offlinevorhersagen werden vorausberechnet und im Cache gespeichert. Zum Bereitstellen einer Vorhersage sucht die Anwendung die im Cache gespeicherte Vorhersage in der Datenbank und gibt sie zurück. Ein abobasierter Dienst könnte beispielsweise die Abwanderungsrate für seine Abonnenten vorhersagen. Das Modell sagt die Wahrscheinlichkeit der Abwanderung für jeden Abonnenten voraus und speichert sie im Cache. Wenn die Anwendung die Vorhersage benötigt, um beispielsweise Nutzer zu motivieren, die kurz vor der Abwanderung stehen, ruft sie einfach die vorausberechnete Vorhersage ab.

Abbildung 5 zeigt, wie Online- und Offlinevorhersagen generiert und zugestellt werden.

Online- und Offlinevorhersagen

Vorhersagen können in Echtzeit bereitgestellt oder als Batch zusammengefasst und für die Suche im Cache gespeichert werden.

Abbildung 5. Onlinevorhersagen liefern Vorhersagen in Echtzeit. Offline-Vorhersagen werden im Cache gespeichert und zum Zeitpunkt der Bereitstellung abgerufen.

Nachbearbeitung von Vorhersagen

In der Regel werden Vorhersagen nach der Verarbeitung verarbeitet, bevor sie gesendet werden. Vorhersagen können beispielsweise nachverarbeitet werden, um unangemessene oder verzerrte Inhalte zu entfernen. Für die Klassifizierungsergebnisse kann Twiddling verwendet werden, um die Ergebnisse neu anzuordnen, anstatt die Rohausgabe des Modells anzuzeigen. So können beispielsweise zuverlässigere Inhalte verbessert, vielfältigere Ergebnisse präsentiert, bestimmte Ergebnisse wie Clickbaiting abgewertet oder Ergebnisse aus rechtlichen Gründen entfernt werden.

Abbildung 6 zeigt eine Bereitstellungspipeline und die typischen Aufgaben, die mit der Bereitstellung von Vorhersagen verbunden sind.

Vorhersagen nach der Verarbeitung

Die Bereitstellungspipeline verarbeitet in der Regel Vorhersagen.

Abbildung 6. Bereitstellungspipeline, die die typischen Aufgaben veranschaulicht, die mit der Bereitstellung von Vorhersagen verbunden sind.

Der Schritt für das Feature Engineering wird normalerweise innerhalb des Modells erstellt und nicht in einem separaten, eigenständigen Prozess. Der Datenverarbeitungscode in der Bereitstellungspipeline ist häufig fast identisch mit dem Datenverarbeitungscode, den die Datenpipeline zum Erstellen von Trainings- und Test-Datasets verwendet.

Asset- und Metadatenspeicher

Die Bereitstellungspipeline sollte ein Repository enthalten, um Modellvorhersagen und, wenn möglich, Ground Truth zu protokollieren.

Mit Logging von Modellvorhersagen können Sie die Qualität Ihres Modells überwachen. Durch das Aggregieren von Vorhersagen können Sie die allgemeine Qualität Ihres Modells überwachen und feststellen, ob es an Qualität nachlässt. Im Allgemeinen sollten die Vorhersagen des Produktionsmodells denselben Durchschnitt wie die Labels aus dem Trainings-Dataset haben. Weitere Informationen finden Sie unter Vorhersageverzerrung.

Ground-Truth-Daten erheben

In einigen Fällen ist Ground Truth erst viel später verfügbar. Wenn eine Wetter-App beispielsweise das Wetter sechs Wochen in der Zukunft vorhersagt, ist die Ground-Truth-Datei (was das tatsächliche Wetter ist) sechs Wochen lang nicht verfügbar.

Bitten Sie Nutzer nach Möglichkeit, die Ground-Truth-Datei zu melden, indem Sie Feedbackmechanismen in die App einbinden. In Gmail wird Nutzerfeedback implizit erfasst, wenn Nutzer E-Mails aus dem Posteingang in den Spamordner verschieben. Dies funktioniert jedoch nur, wenn Nutzer ihre E-Mails richtig kategorisieren. Wenn Nutzer Spam in ihrem Posteingang hinterlassen (weil sie wissen, dass es sich um Spam handelt und sie ihn nie öffnen), sind die Trainingsdaten ungenau. Diese bestimmte E-Mail erhält das Label „Kein Spam“, obwohl sie eigentlich „Spam“ sein sollte. Mit anderen Worten: Versuchen Sie immer, Möglichkeiten zu finden, die Ground-Truth-Informationen zu erfassen und aufzuzeichnen, sollten Sie sich jedoch der Mängel in Feedback-Mechanismen bewusst sein.

Abbildung 7 zeigt Vorhersagen, die an einen Nutzer gesendet und in einem Repository protokolliert werden.

Logging-Vorhersagen

Die Bereitstellungspipeline sollte Vorhersagen protokollieren, um die Veralterung des Modells zu überwachen.

Abbildung 7. Protokollieren Sie Vorhersagen, um die Modellqualität zu überwachen.

Datenpipelines

Datenpipelines generieren Trainings- und Test-Datasets aus Anwendungsdaten. Die Trainings- und Validierungspipelines verwenden die Datasets dann zum Trainieren und Validieren neuer Modelle.

Die Datenpipeline erstellt Trainings- und Test-Datasets mit denselben Features und Labels, die ursprünglich zum Trainieren des Modells verwendet wurden, aber mit neueren Informationen. Eine Karten-App generiert beispielsweise Trainings- und Test-Datasets von aktuellen Fahrtzeiten zwischen Punkten für Millionen von Nutzern sowie andere relevante Daten wie das Wetter.

Eine App für Videoempfehlungen generiert Trainings- und Test-Datasets, die die Videos, die ein Nutzer aus der Liste mit Empfehlungen angeklickt hat (sowie die, auf die nicht geklickt wurde) sowie andere relevante Daten wie den Wiedergabeverlauf enthalten.

Abbildung 8 zeigt die Datenpipeline unter Verwendung von Anwendungsdaten zum Generieren von Trainings- und Test-Datasets.

Datenpipeline

Die Datenpipeline generiert Trainings- und Test-Datasets.

Abbildung 8. Die Datenpipeline verarbeitet Anwendungsdaten, um Datasets für die Trainings- und Validierungspipelines zu erstellen.

Datenerhebung und -verarbeitung

Die Aufgaben zum Erfassen und Verarbeiten von Daten in Datenpipelines unterscheiden sich wahrscheinlich von der Testphase, in der Sie festgestellt haben, dass Ihre Lösung machbar war:

  • Datenerhebung: Während des Tests müssen Sie in der Regel auf gespeicherte Daten zugreifen, um Daten zu sammeln. Bei Datenpipelines kann das Erfassen von Daten erfordern, dass Streaming-Logdaten erkannt und eine Genehmigung für den Zugriff darauf eingeholt werden muss.

    Wenn Sie von Menschen beschriftete Daten benötigen (z. B. medizinische Bilder), müssen Sie auch ein Verfahren zum Erfassen und Aktualisieren dieser Daten anwenden. Wenn Sie von Menschen gekennzeichnete Daten benötigen, finden Sie entsprechende Informationen auf der Seite CrowdCompute.

  • Datenverarbeitung: Während des Experimentierens wurden die richtigen Features durch das Scraping, Zusammenführen und Sampling der Test-Datasets gewonnen. Für die Datenpipelines kann das Generieren dieser Merkmale völlig unterschiedliche Prozesse erfordern. Achten Sie jedoch darauf, die Datentransformationen aus der Experimentphase zu duplizieren, indem Sie dieselben mathematischen Operationen auf die Funktionen und Labels anwenden.

Asset- und Metadatenspeicher

Sie benötigen einen Prozess zum Speichern, Versionsverwaltung und Verwalten Ihrer Trainings- und Test-Datasets. Versionskontrollierte Repositories bieten folgende Vorteile:

  • Reproduzierbarkeit: Modelltrainingsumgebungen neu erstellen und standardisieren und die Vorhersagequalität verschiedener Modelle vergleichen.

  • Compliance. Einhaltung gesetzlicher Complianceanforderungen für Prüfbarkeit und Transparenz

  • Aufbewahrung: Legen Sie Werte für die Datenaufbewahrung fest, wie lange die Daten gespeichert werden sollen.

  • Zugriffsverwaltung: Legen Sie über detaillierte Berechtigungen fest, wer auf Ihre Daten zugreifen kann.

  • Datenintegrität: Sie können Änderungen an Datasets im Zeitverlauf verfolgen und verstehen, um die Diagnose von Problemen mit Ihren Daten oder Ihrem Modell zu erleichtern.

  • Auffindbarkeit: Machen Sie es anderen leicht, Ihre Datasets und Features zu finden. Andere Teams können dann entscheiden, ob sie für ihre Zwecke nützlich sind.

Daten dokumentieren

Eine gute Dokumentation hilft anderen, wichtige Informationen über Ihre Daten zu verstehen, wie Typ, Quelle, Größe und andere wichtige Metadaten. In den meisten Fällen reicht es aus, die Daten in einem Design- oder g3doc-Dokument zu dokumentieren. Wenn Sie Daten freigeben oder veröffentlichen möchten, strukturieren Sie die Informationen mithilfe von Datenkarten. Datenkarten erleichtern es anderen, Ihre Datasets zu entdecken und zu verstehen.

Trainings- und Validierungspipelines

Die Trainings- und Validierungspipelines erstellen neue Modelle, um Produktionsmodelle zu ersetzen, bevor sie veraltet sind. Durch kontinuierliches Training und Validierung neuer Modelle wird sichergestellt, dass immer das beste Modell immer in der Produktion ist.

Die Trainingspipeline generiert ein neues Modell aus den Trainings-Datasets. Die Validierungspipeline vergleicht die Qualität des neuen Modells mit der Qualität des Modells in der Produktion mithilfe von Test-Datasets.

In Abbildung 9 wird die Trainingspipeline mit einem Trainings-Dataset zum Trainieren eines neuen Modells dargestellt.

Trainingspipeline

Die Trainingspipeline trainiert neue Modelle mit aktuellen Daten.

Abbildung 9. Die Trainingspipeline trainiert neue Modelle mit dem neuesten Trainings-Dataset.

Nachdem das Modell trainiert wurde, verwendet die Validierungspipeline Test-Datasets, um die Qualität des Produktionsmodells mit dem trainierten Modell zu vergleichen.

Im Allgemeinen gilt: Wenn das trainierte Modell nicht wesentlich schlechter als das Produktionsmodell ist, geht es in die Produktion. Wenn das trainierte Modell schlechter ist, sollte die Monitoring-Infrastruktur eine Benachrichtigung erstellen. Trainierte Modelle mit schlechterer Vorhersagequalität können auf potenzielle Probleme mit den Daten- oder Validierungspipelines hinweisen. Dadurch wird sichergestellt, dass das beste Modell, das mit den neuesten Daten trainiert wurde, immer in der Produktion ist.

Asset- und Metadatenspeicher

Modelle und ihre Metadaten sollten in versionierten Repositories gespeichert werden, um Modellbereitstellungen zu organisieren und zu verfolgen. Modell-Repositories bieten folgende Vorteile:

  • Tracking und Auswertung. Sie können Modelle in der Produktion verfolgen und deren Messwerte für Bewertungs- und Vorhersagequalität verstehen.

  • Modellveröffentlichungsprozess. Modelle können einfach geprüft, genehmigt, freigegeben oder rückgängig gemacht werden.

  • Reproduzierbarkeit und Fehlerbehebung. Sie können Modellergebnisse reproduzieren und Probleme effektiver beheben, indem Sie die Datasets und Abhängigkeiten eines Modells bereitstellungsübergreifend verfolgen.

  • Auffindbarkeit: Machen Sie es anderen leicht, Ihr Modell zu finden. Andere Teams können dann entscheiden, ob Ihr Modell (oder Teile davon) für ihre Zwecke verwendet werden können.

Abbildung 10 zeigt ein validiertes Modell, das in einem Modell-Repository gespeichert ist.

Modellspeicher

Modelle in einem versionierten Repository speichern

Abbildung 10. Validierte Modelle werden zur Nachverfolgung und Sichtbarkeit in einem Modell-Repository gespeichert.

Verwenden Sie Modellkarten, um wichtige Informationen zu Ihrem Modell wie Zweck, Architektur, Hardwareanforderungen, Bewertungsmesswerte usw. zu dokumentieren und zu teilen.

Herausforderungen beim Bau von Pipelines

Beim Erstellen von Pipelines können die folgenden Herausforderungen auftreten:

  • Zugriff auf die benötigten Daten erhalten Für den Datenzugriff muss möglicherweise begründet werden, warum Sie ihn benötigen. Beispielsweise müssen Sie eventuell erklären, wie die Daten verwendet werden, und klären, wie Probleme mit personenidentifizierbaren Informationen gelöst werden. Bereiten Sie sich darauf vor, ein Proof of Concept zu zeigen, das zeigt, wie Ihr Modell durch Zugriff auf bestimmte Arten von Daten bessere Vorhersagen trifft.

  • Die richtigen Funktionen nutzen: In einigen Fällen sind die in der Testphase verwendeten Funktionen nicht aus den Echtzeitdaten verfügbar. Versuchen Sie daher beim Experimentieren zu prüfen, ob Sie in der Produktionsumgebung dieselben Features erhalten können.

  • Verstehen, wie Daten erhoben und dargestellt werden: Es kann Zeit und Mühe erfordern, zu erfahren, wie und von wem die Daten erhoben wurden und wie sie (und andere Probleme) erhoben wurden. Es ist wichtig, die Daten genau zu verstehen. Verwenden Sie keine Daten, bei denen Sie sich nicht sicher sind, um ein Modell zu trainieren, das möglicherweise in der Produktion verwendet wird.

  • Vor- und Nachteile von Aufwand, Kosten und Modellqualität verstehen: Die Einbindung einer neuen Funktion in eine Datenpipeline kann viel Aufwand erfordern. Die Qualität des Modells wird durch die zusätzliche Funktion möglicherweise nur geringfügig verbessert. In anderen Fällen ist das Hinzufügen einer neuen Funktion möglicherweise einfach. Die Ressourcen zum Abrufen und Speichern des Features können jedoch zu teuer sein.

  • Computing abrufen Wenn Sie TPUs für ein erneutes Training benötigen, kann es schwierig sein, das erforderliche Kontingent zu erhalten. Außerdem ist die Verwaltung von TPUs kompliziert. Beispielsweise müssen einige Teile Ihres Modells oder Ihrer Daten möglicherweise speziell für TPUs entwickelt werden, indem Teile davon auf mehrere TPU-Chips aufgeteilt werden.

  • Das richtige goldene Dataset finden Wenn sich die Daten häufig ändern, kann das Abrufen goldener Datasets mit konsistenten und genauen Labels eine Herausforderung sein.

Wenn Sie diese Art von Problemen während des Tests erkennen, sparen Sie Zeit. Sie möchten beispielsweise nicht die besten Features und das beste Modell entwickeln, nur um zu erfahren, dass sie in der Produktion nicht realisierbar sind. Versuchen Sie daher so früh wie möglich zu bestätigen, dass Ihre Lösung im Rahmen der Einschränkungen einer Produktionsumgebung funktioniert. Es ist besser, Zeit zu investieren, um die Funktionsweise einer Lösung zu prüfen, anstatt in die Testphase zurückzukehren, da die Pipelinephase unüberwindbare Probleme aufgedeckt hat.