Von Experimenten bis zur Bereitstellung: MLflow 101
HeimHeim > Nachricht > Von Experimenten bis zur Bereitstellung: MLflow 101

Von Experimenten bis zur Bereitstellung: MLflow 101

Feb 24, 2024

Afaque-Alter

Folgen

--

1

Hören

Aktie

Stellen Sie sich Folgendes vor: Sie haben eine brandneue Geschäftsidee und die Daten, die Sie benötigen, stehen Ihnen direkt zur Verfügung. Sie sind alle gespannt darauf, dieses fantastische Modell für maschinelles Lernen zu entwickeln 🤖. Aber seien wir ehrlich: Diese Reise ist kein Kinderspiel! Sie werden wie verrückt experimentieren, sich mit der Datenvorverarbeitung befassen, Algorithmen auswählen und Hyperparameter optimieren, bis Ihnen schwindelig wird 😵‍💫. Wenn das Projekt immer schwieriger wird, ist es, als würde man versuchen, Rauch einzufangen – man verliert den Überblick über all die wilden Experimente und brillanten Ideen, die man dabei hatte. Und glauben Sie mir, sich an all das zu erinnern, ist schwieriger als das Hüten von Katzen 😹

Aber warten Sie, es gibt noch mehr! Sobald Sie dieses Modell haben, müssen Sie es wie ein Champion einsetzen! Und angesichts der sich ständig ändernden Daten und Kundenbedürfnisse trainieren Sie Ihr Modell häufiger neu, als Sie Ihre Socken wechseln! Es ist wie eine nie endende Achterbahnfahrt, und Sie brauchen eine grundsolide Lösung, um alles zusammenzuhalten 🔗. Geben Sie MLOps ein! Es ist die geheime Soße, die Ordnung ins Chaos bringt ⚡

Okay, Leute, jetzt haben wir das Warumhinter uns, lasst uns in das Was eintauchenund das saftige Wiein diesem Blog.

Werfen wir einen Blick auf die Pipeline, die wir am Ende dieses Blogs aufbauen werden 👆

Halten Sie sich fest, denn das wird keine schnelle Lektüre! Wir entwickeln eine End-to-End-MLOps-Lösung, und um sie realistisch zu halten, musste ich sie in drei Abschnitte unterteilen.

Abschnitt 1:Wir legen die Grundlagen und Theorien fest 📜

Sektion 2: Hier ist die Action! Wir bauen einen Spamfilter und verfolgen all diese verrückten Experimente mit MLflow 🥼🧪

Sektion 3:Wir werden uns auf das Wesentliche konzentrieren – die Bereitstellung und Überwachung unseres Champion-Modells, um es produktionsbereit zu machen 🚀

Lasst uns mit MLOps rocken und rollen!

MLOps stellt eine Sammlung von Methoden und Best Practices der Branche dar, die Datenwissenschaftler dabei unterstützen sollen, den gesamten Modellschulungs-, Bereitstellungs- und Verwaltungslebenszyklus in einer großen Produktionsumgebung zu vereinfachen und zu automatisieren.

Es entwickelt sich nach und nach zu einem eigenständigen Ansatz für die Verwaltung des gesamten maschinellen Lernlebenszyklus. Zu den wesentlichen Phasen des MLOps-Prozesses gehören die folgenden:

Wie werden wir es umsetzen? Obwohl mehrere Optionen wie Neptune, Comet und Kubeflow usw. verfügbar sind, bleiben wir bei MLflow. Machen wir uns also mit MLflow vertraut und tauchen in seine Prinzipien ein.

MLflow ist wie das Schweizer Taschenmesser des maschinellen Lernens – es ist äußerst vielseitig und Open Source und hilft Ihnen, Ihre gesamte ML-Reise wie ein Chef zu verwalten. Es funktioniert gut mit allen großen ML-Bibliotheken (TensorFlow, PyTorch, Scikit-learn, spaCy, Fastai, Statsmodels usw.). Sie können es jedoch auch mit jeder anderen Bibliothek, jedem anderen Algorithmus oder jedem anderen Bereitstellungstool Ihrer Wahl verwenden. Darüber hinaus ist es äußerst anpassbar gestaltet – Sie können mithilfe benutzerdefinierter Plugins ganz einfach neue Arbeitsabläufe, Bibliotheken und Tools hinzufügen.

MLflow folgt einer modularen und API-basierten Designphilosophie und unterteilt seine Funktionalität in vier verschiedene Teile.

Schauen wir uns nun jeden dieser Teile einzeln an!

Damit ist unser grundlegendes Verständnis der Angebote von MLflow abgeschlossen. Ausführlichere Informationen finden Sie in der offiziellen Dokumentation hier 👉📄. Mit diesem Wissen ausgestattet, tauchen wir nun in Abschnitt 2 ein. Wir beginnen mit der Erstellung einer einfachen Spam-Filter-App und gehen dann in den vollständigen Experimentiermodus, in dem wir verschiedene Experimente mit einzigartigen Durchläufen verfolgen!

Also gut, Leute, macht euch bereit für eine aufregende Reise! Bevor wir uns ins Labor stürzen und uns mit Experimenten die Hände schmutzig machen, legen wir unseren Angriffsplan vor, damit wir wissen, was wir bauen. Als Erstes werden wir einen Spam-Klassifikator mithilfe des Random-Forest-Klassifikators rocken (ich weiß, dass Multinomial NB besser für die Dokumentenklassifizierung funktioniert, aber hey, wir wollen mit den Hyperparams von Random Forest herumspielen). Wir machen es zunächst absichtlich nicht so gut, nur wegen des Nervenkitzels. Dann lassen wir unserer Kreativität freien Lauf und verfolgen verschiedene Läufe, optimieren Hyperparams und experimentieren mit coolen Dingen wie Bag of Words und Tfidf. Und rate was? Wir werden die MLflow-Benutzeroberfläche wie ein Boss für all diese tollen Tracking-Aktionen verwenden und uns auf den nächsten Abschnitt vorbereiten. Also schnall dich an, denn wir werden eine Menge Spaß haben! 🧪💥

Für diese Aufgabe verwenden wir den auf Kaggle verfügbaren Spam-Sammlungsdatensatz. Dieser Datensatz enthält 5.574 SMS-Nachrichten in englischer Sprache, die als Ham (legitim) oder Spam gekennzeichnet sind. Allerdings gibt es im Datensatz ein Ungleichgewicht mit rund 4.825 Schinkenetiketten. Um Abweichungen zu vermeiden und die Sache prägnant zu halten, habe ich beschlossen, einige Ham-Samples wegzulassen, sie auf etwa 3.000 zu reduzieren, und die resultierende CSV-Datei für die weitere Verwendung in unserem Modell und der Textvorverarbeitung gespeichert. Sie können Ihren Ansatz frei nach Ihren Bedürfnissen wählen – dies dient nur der Kürze. Hier ist der Codeausschnitt, der zeigt, wie ich das erreicht habe.

Da wir nun die Daten bereit haben, können wir schnell einen grundlegenden Klassifikator erstellen. Ich möchte Sie nicht mit dem alten Klischee langweilen, dass Computer Textsprache nicht verstehen können und sie daher für die Textdarstellung vektorisiert werden müssen. Sobald das erledigt ist, können wir es in ML/DL-Algorithmen einspeisen, und ich werde Ihnen nicht sagen, ob Sie eine Auffrischung benötigen oder irgendwelche Zweifel haben, keine Sorge – ich habe Sie in einem meiner vorherigen Blogs behandelt beziehen auf. Das wissen Sie doch schon, oder? 🤗

levelup.gitconnected.com

Okay, kommen wir zur Sache! Wir laden die Daten und verarbeiten die Nachrichten vor, um Stoppwörter, Satzzeichen und mehr zu entfernen. Zur Sicherheit werden wir sie sogar stammeln oder lemmatisieren. Dann kommt der spannende Teil – die Vektorisierung der Daten, um einige erstaunliche Funktionen für die Arbeit zu erhalten. Als Nächstes teilen wir die Daten für Training und Tests auf, passen sie in den Random-Forest-Klassifikator ein und treffen diese aussagekräftigen Vorhersagen auf dem Testsatz. Endlich ist es Zeit für die Evaluierung, um zu sehen, wie unser Modell funktioniert! Lasst uns den Worten Taten folgen lassen ⚡

In diesem Code habe ich mehrere Optionen für Experimente als Kommentare bereitgestellt, z. B. Vorverarbeitung mit oder ohne Stoppwörter, Lemmatisierung, Stammbildung usw. Ebenso können Sie für die Vektorisierung zwischen Bag of Words, TF-IDF oder Einbettungen wählen. Kommen wir nun zum spaßigen Teil! Wir trainieren unser erstes Modell, indem wir diese Funktionen nacheinander aufrufen und Hyperparameter übergeben.

Ja, ich stimme voll und ganz zu, dieses Modell ist so gut wie nutzlos. Die Präzision liegt nahezu bei Null, was ebenfalls zu einem F1-Score nahe 0 führt. Da wir ein leichtes Klassenungleichgewicht haben, ist das F1-Ergebnis wichtiger als die Genauigkeit, da es ein Gesamtmaß für Präzision und Erinnerung liefert – das ist seine Magie! Hier haben wir es also – unser allererstes schreckliches, unsinniges und nutzloses Modell. Aber hey, keine Sorge, es ist alles Teil der Lernreise 🪜.

Lassen Sie uns nun MLflow starten und uns darauf vorbereiten, mit verschiedenen Optionen und Hyperparametern zu experimentieren. Sobald wir die Dinge verfeinert haben, wird alles einen Sinn ergeben. Wir können unsere Fortschritte wie Profis visualisieren und analysieren!

Das Wichtigste zuerst: Lassen Sie uns MLflow zum Laufen bringen. Um Ordnung zu schaffen, empfiehlt es sich, eine virtuelle Umgebung einzurichten. Sie können MLflow einfach mit pip 👉pip install mlflow installieren

Sobald es installiert ist, starten Sie die MLflow-Benutzeroberfläche, indem Sie 👉mlflow ui ausführen im Terminal (stellen Sie sicher, dass es sich in der virtuellen Umgebung befindet, in der Sie MLflow installiert haben). Dadurch wird der MLflow-Server in Ihrem lokalen Browser gestartet, der unter http://localhost:5000 gehostet wird. Sie sehen eine Seite ähnlich 👇

Da wir noch nichts aufgezeichnet haben, wird es auf der Benutzeroberfläche nicht viel zu überprüfen geben. MLflow bietet verschiedene Tracking-Optionen, z. B. lokal, lokal mit einer Datenbank, auf einem Server oder sogar in der Cloud. Bei diesem Projekt bleiben wir vorerst bei allem Lokalen. Sobald wir mit der lokalen Einrichtung vertraut sind, können wir später die URI des Tracking-Servers übergeben und einige Parameter konfigurieren – die zugrunde liegenden Prinzipien bleiben dieselben.

Kommen wir nun zum unterhaltsamen Teil – dem Speichern von Metriken, Parametern und sogar Modellen, Visualisierungen oder anderen Objekten, auch Artefakte genannt.

Die Tracking-Funktionalität von MLflow kann als Weiterentwicklung oder Ersatz der herkömmlichen Protokollierung im Kontext der Entwicklung maschinellen Lernens angesehen werden. Bei der herkömmlichen Protokollierung verwenden Sie normalerweise eine benutzerdefinierte Zeichenfolgenformatierung, um Informationen wie Hyperparameter, Metriken und andere relevante Details während des Modelltrainings und der Modellbewertung aufzuzeichnen. Dieser Protokollierungsansatz kann mühsam und fehleranfällig sein, insbesondere wenn es um eine große Anzahl von Experimenten oder komplexe Pipelines für maschinelles Lernen geht, während Mlflow den Prozess der Aufzeichnung und Organisation dieser Informationen automatisiert, was die Verwaltung und den Vergleich von Experimenten erleichtert und zu einer höheren Effizienz führt und reproduzierbare Arbeitsabläufe für maschinelles Lernen.

Die Mlflow-Verfolgung konzentriert sich auf drei Hauptfunktionen: log_paramfür Protokollierungsparameter log_metricfür die Protokollierung von Metriken und log_artifact zum Protokollieren von Artefakten (z. B. Modelldateien oder Visualisierungen). Diese Funktionen erleichtern die organisierte und standardisierte Verfolgung experimentbezogener Daten während des Entwicklungsprozesses des maschinellen Lernens.

Bei der Protokollierung eines einzelnen Parameters wird dieser mithilfe eines Schlüssel-Wert-Paares innerhalb eines Tupels aufgezeichnet. Wenn Sie hingegen mit mehreren Parametern arbeiten, würden Sie ein Wörterbuch mit Schlüssel-Wert-Paaren verwenden. Das gleiche Konzept gilt auch für Protokollierungsmetriken. Hier ist ein Codeausschnitt, um den Prozess zu veranschaulichen.

Ein Experiment fungiert als Container, der eine Gruppe zusammengehöriger Machine-Learning-Läufe darstellt und eine logische Gruppierung für Läufe mit einem gemeinsamen Ziel bereitstellt. Jedes Experiment verfügt über eine eindeutige Experiment-ID und Sie können zur einfachen Identifizierung einen benutzerfreundlichen Namen vergeben.

Andererseits entspricht ein Lauf der Ausführung Ihres maschinellen Lerncodes innerhalb eines Experiments. Sie können innerhalb eines einzelnen Experiments mehrere Läufe mit unterschiedlichen Konfigurationen durchführen und jedem Lauf wird eine eindeutige Lauf-ID zugewiesen. Die Tracking-Informationen, zu denen Parameter, Metriken und Artefakte gehören, werden in einem Backend-Speicher gespeichert, beispielsweise einem lokalen Dateisystem, einer Datenbank (z. B. SQLite oder MySQL) oder einem Remote-Cloud-Speicher (z. B. AWS S3 oder Azure Blob Storage). .

MLflow bietet eine einheitliche API zum Protokollieren und Verfolgen dieser Experimentdetails, unabhängig vom verwendeten Backend-Store. Dieser optimierte Ansatz ermöglicht das mühelose Abrufen und Vergleichen von Experimentergebnissen und verbessert so die Transparenz und Verwaltbarkeit des Entwicklungsprozesses für maschinelles Lernen.

Zunächst können Sie mit mlflow.create_experiment() ein Experiment erstellen.oder eine einfachere Methode, mlflow.set_experiment("your_exp_name") . Wenn ein Name angegeben wird, wird das vorhandene Experiment verwendet. Andernfalls wird ein neues erstellt, um Läufe zu protokollieren.

Rufen Sie als Nächstes mlflow.start_run() auf. um den aktuell aktiven Lauf zu initialisieren und mit der Protokollierung zu beginnen. Nachdem Sie die erforderlichen Informationen protokolliert haben, schließen Sie den Lauf mit mlflow.end_run()..

Hier ist ein einfacher Ausschnitt, der den Prozess veranschaulicht:

Anstatt Skripte über die Shell auszuführen und dort Parameter bereitzustellen, entscheiden wir uns für einen benutzerfreundlichen Ansatz. Lassen Sie uns eine einfache Benutzeroberfläche erstellen, die es Benutzern ermöglicht, entweder den Experimentnamen oder bestimmte Hyperparameterwerte einzugeben. Wenn Sie auf die Zugschaltfläche klicken, wird die Zugfunktion mit den angegebenen Eingaben aufgerufen. Darüber hinaus untersuchen wir, wie Experimente und Läufe abgefragt werden, sobald eine beträchtliche Anzahl von Läufen gespeichert ist.

Mit dieser interaktiven Benutzeroberfläche können Benutzer mühelos mit verschiedenen Konfigurationen experimentieren und ihre Läufe verfolgen, um die Entwicklung des maschinellen Lernens effizienter zu gestalten. Ich werde nicht näher auf die Besonderheiten von Streamlit eingehen, da der Code unkompliziert ist. Ich habe kleinere Anpassungen an der früheren Zugfunktion für die MLflow-Protokollierung vorgenommen und benutzerdefinierte Designeinstellungen implementiert. Bevor ein Experiment ausgeführt wird, werden Benutzer aufgefordert, zwischen der Eingabe eines neuen Experimentnamens (welche Protokolle die Ausführung in diesem Experiment protokolliert) oder der Auswahl eines vorhandenen Experiments aus dem Dropdown-Menü zu wählen, das mit mlflow.search_experiments() generiert wurde. . Darüber hinaus können Benutzer Hyperparameter ganz einfach nach Bedarf anpassen. Hier ist der Code für die Anwendung 👇

und so wird die App aussehen 🚀

Da unsere App nun fertig ist, können wir mit den Experimenten fortfahren. Für das erste Experiment verwende ich die Wörter in ihrer Rohform ohne Stammbildung oder Lemmatisierung, konzentriere mich nur auf Stoppwörter und die Entfernung von Satzzeichen und wende Bag of Words (BOW) auf die Textdaten zur Textdarstellung an. Dann werde ich in aufeinanderfolgenden Durchläufen einige Hyperparameter verfeinern. Wir nennen dieses Experiment RawToken.

Nachdem wir einige Durchläufe ausgeführt haben, können wir MLflow über die Streamlit-Benutzeroberfläche starten und es wird ungefähr so ​​aussehen

Okay, jetzt haben wir das RawToken Das unter „Experimente“ aufgeführte Experiment und eine Reihe von Läufen in der Spalte „Durchlauf“, die alle mit diesem Experiment verknüpft sind. Sie können einen, mehrere oder alle Läufe auswählen und auf die Schaltfläche „Vergleichen“ klicken, um die Ergebnisse nebeneinander anzuzeigen. Sobald Sie sich im Vergleichsbereich befinden, können Sie die Metriken oder Parameter auswählen, die Sie vergleichen oder visualisieren möchten.

Es gibt mehr zu entdecken, als Sie vielleicht erwarten, und Sie werden den besten Ansatz finden, wenn Sie wissen, wonach Sie suchen und warum!

Okay, wir haben ein Experiment abgeschlossen, aber es verlief nicht wie erwartet, und das ist in Ordnung! Jetzt müssen wir einige Ergebnisse mit zumindest einem gewissen F1-Ergebnis erzielen, um mögliche Peinlichkeiten zu vermeiden. Wir wussten, dass dies passieren würde, da wir rohe Token verwendeten und die Anzahl der Bäume und die Tiefe recht gering hielten. Lassen Sie uns also in ein paar neue Experimente eintauchen, eines mit Stemming und das andere mit Lemmatisierung. Im Rahmen dieser Experimente werden wir verschiedene Hyperparameter in Verbindung mit verschiedenen Textdarstellungstechniken testen.

Ich werde hier nicht auf den vollständigen Pro-Modus umsteigen, da unser Zweck ein anderer ist, und nur eine freundliche Erinnerung daran, dass ich die Git-Integration nicht implementiert habe. Tracking-Experimente mit Git könnten ideal sein, erfordern aber einige Änderungen im Code, die ich bereits auskommentiert habe. MLflow kann auch den Überblick über Git behalten, aber das Hinzufügen würde zu einer Menge zusätzlicher Screenshots führen, und ich weiß, dass Sie ein Experte in Git sind, also überlasse ich es Ihnen!

Lassen Sie uns nun einige Codes manuell auskommentieren und auskommentieren, um diese beiden neuen Experimente hinzuzufügen und einige Durchläufe darin aufzuzeichnen. Nachdem ich alles durchgegangen bin, was ich gerade gesagt habe, sind hier die Experimente und ihre Ergebnisse. Mal sehen, wie es weitergeht! 🚀🔥

Okay, jetzt, da wir mit unseren Experimenten fertig sind, sehen unsere Läufe möglicherweise etwas chaotisch und chaotisch aus, genau wie echte Anwendungsfälle. Können Sie sich vorstellen, das alles manuell zu erledigen? Es wäre ein Albtraum, und wir würden wahrscheinlich keine Haftnotizen mehr haben oder einen endlosen Vorrat an Schmerzmitteln brauchen! Aber dank MLflow sind wir auf der sicheren Seite und kümmern uns um den ganzen Schlamassel unserer wilden Experimente, sodass wir eine saubere und organisierte Lösung erhalten. Lassen Sie uns die Magie von MLflow schätzen! 🧙‍♀️✨

Okay, nehmen wir an, wir sind mit ein paar Experimenten fertig und müssen jetzt ein Modell aus einem bestimmten Experiment ladenund Renn . Das Ziel besteht darin, die run_id abzurufenund laden Sie die Artefakte (das Modell und der Vektorisierer), die dieser Lauf-ID zugeordnet sind. Eine Möglichkeit, dies zu erreichen, besteht darin, nach Experimenten zu suchen, ihre IDs abzurufen und dann nach Durchläufen innerhalb dieser Experimente zu suchen. Sie können die Ergebnisse nach Metriken wie Genauigkeit filtern und die benötigte Lauf-ID auswählen. Anschließend können Sie die Artefakte mithilfe von MLflow-Funktionen laden.

Eine einfachere Option besteht darin, die MLflow-Benutzeroberfläche direkt zu verwenden, wo Sie die Ergebnisse in absteigender Reihenfolge vergleichen, die Lauf-ID vom obersten Ergebnis übernehmen und den Vorgang wiederholen können.

Eine weitere einfache und standardmäßige Methode ist die Bereitstellung von Modellen in der Produktion, die wir im letzten Abschnitt des Blogs behandeln.

Meine Absicht hinter dem ersten Ansatz bestand darin, Sie mit der Experimentabfrage vertraut zu machen, da Sie manchmal ein benutzerdefiniertes Dashboard oder Diagramme anstelle der integrierten Funktionen von MLflow benötigen. Mithilfe der MLflow-Benutzeroberfläche können Sie mühelos benutzerdefinierte Visualisierungen erstellen, die Ihren spezifischen Anforderungen entsprechen. Es geht darum, verschiedene Optionen zu erkunden, um Ihre MLflow-Reise noch effizienter und effektiver zu gestalten!

Jetzt haben wir die run_id erhalten können wir das Modell laden und Vorhersagen über verschiedene APIs durchführen. MLflow verwendet ein bestimmtes Format namens Flavours für verschiedene Bibliotheken. Sie können auch Ihre eigene benutzerdefinierte Geschmacksrichtung erstellen, dies ist jedoch ein separates Thema. Wenn Sie in MLflow auf ein Modell klicken, werden in jedem Fall Anweisungen zum Laden angezeigt.

Laden wir eines unserer Modelle, um eine schnelle Vorhersage zu treffen und zu sehen, wie es in Aktion funktioniert!

Wow!! das war glatt! Das Laden eines Modells aus 15 verschiedenen Läufen war ein Kinderspiel. Wir mussten lediglich die Lauf-ID angeben und mussten uns keine komplexen Pfade oder ähnliches merken. Aber warte, ist das alles? Wie bedienen wir die Modelle oder setzen sie ein? Lassen Sie uns im nächsten Abschnitt darauf eingehen und die Welt der Modellbereitstellung und -bereitstellung erkunden.

Willkommen im letzten Abschnitt! Lassen Sie uns direkt einsteigen, ohne Zeit zu verlieren. Sobald wir uns für das Modell entschieden haben, das wir verwenden möchten, müssen wir es nur noch auswählen und mit einem eindeutigen Modellnamen registrieren. In früheren Versionen von MLflow war für die Registrierung eines Modells eine Datenbank erforderlich, heute jedoch nicht mehr. Jetzt ist es viel einfacher und ich muss etwas weniger darüber schreiben.

Der entscheidende Punkt hierbei ist, den Modellnamen einfach und eindeutig zu halten. Dieser Name wird für zukünftige Aufgaben wie Umschulung oder Aktualisierung von Modellen von entscheidender Bedeutung sein. Immer wenn wir ein neues Modell haben, das aus erfolgreichen Experimenten mit guten Metriken resultiert, registrieren wir es unter demselben Namen. MLflow protokolliert das Modell automatisch mit einer neuen Version und aktualisiert es ständig.

In diesem Abschnitt registrieren wir drei Modelle basierend auf der Testgenauigkeitstabelle: eines unten, eines in der Mitte und das letzte oben. Wir benennen das Modell Spamfilter

Sobald wir Modelle verschiedener Ausführungen unter demselben Modellnamen registrieren, werden Versionen wie diese hinzugefügt 👇

Ist mit der Registrierung des Modells also Schluss? Die Antwort ist nein! Die Registrierung des Modells ist nur ein Schritt im Lebenszyklus des maschinellen Lernens, und von hier aus kommt MLOps, oder genauer gesagt, die CI/CD-Pipeline, ins Spiel.

Sobald wir die Modelle in MLflow registriert haben, umfassen die nächsten Schritte normalerweise: ⚠️Theorie voraus ⚠️

Okay! Schluss mit Geplauder und Theoriejargon!! Damit haben wir Schluss, und Langeweile ist auf dieser Party also kein Thema. Es ist Zeit, den Code freizugeben ⚡ Machen wir uns die Hände schmutzig und haben richtig Spaß! 🚀💻. Hier arbeite ich alleine und bin nicht an die Zwänge des Qualitäts- oder Testteams gebunden 😉. Obwohl ich die Bedeutung der gelben Phase (Staging for Validation) nicht ganz verstehe, werde ich den Schritt wagen und direkt zur grünen Phase übergehen. Obwohl dieser Ansatz in einem realen Szenario riskant sein könnte, bin ich in meiner experimentellen Welt bereit, das Risiko einzugehen.

Mit nur wenigen Klicks setze ich mein Modell der Version 3 auf die Produktion und lass uns untersuchen, wie wir das Produktionsmodell abfragen können.

Ebenso können wir eine Abfrage ausführen und nach der Bedingung current_stage == 'Production' filtern., Wir können das Modell abrufen. Genau wie im letzten Abschnitt können wir die model.run_id verwenden fortfahren. Es geht darum, das Gelernte zu nutzen! 💡

Alternativ können Sie auch mit dem folgenden Snippet ein Produktionsmodell laden.

Nachdem unser Produktionsmodell nun bereitgestellt ist, besteht der nächste Schritt darin, es über eine API bereitzustellen. MLflow bietet eine Standard-REST-API zum Erstellen von Vorhersagen mithilfe des protokollierten Modells, verfügt jedoch über begrenzte Anpassungsoptionen. Um mehr Kontrolle und Flexibilität zu haben, können wir Web-Frameworks wie FastAPI oder Flask verwenden, um benutzerdefinierte Endpunkte zu erstellen.

Zu Demonstrationszwecken verwende ich Streamlit erneut, um einige Informationen zu den Serienmodellen anzuzeigen. Darüber hinaus untersuchen wir, wie ein neues Modell aus einem Experiment möglicherweise das vorherige ersetzen kann, wenn es eine bessere Leistung erbringt. Hier ist der Code für die Benutzeranwendung mit dem Namen user_app.py

Die Benutzeroberfläche der App wird in etwa so aussehen 😎

Wow, wir haben unsere erste App erfolgreich bereitgestellt! Aber warten Sie, die Reise endet hier nicht. Da die App nun den Benutzern bereitgestellt wird, interagieren sie mit der App mithilfe unterschiedlicher Daten, was zu unterschiedlichen Vorhersagen führt. Diese Vorhersagen werden durch verschiedene Mittel wie Feedback, Bewertungen und mehr aufgezeichnet. Mit der Zeit verliert das Modell jedoch möglicherweise an Wirksamkeit, und dann ist es Zeit für eine Umschulung.

Bei der Umschulung geht es darum, zur Anfangsphase zurückzukehren, möglicherweise mit neuen Daten oder Algorithmen, um die Leistung des Modells zu verbessern.

Nach der Umschulung stellen wir die neuen Modelle im Vergleich zum Serienmodell auf die Probe, und wenn sie eine deutliche Verbesserung zeigen, werden sie im Staging-Bereich 🟨 zur Validierung und Qualitätsprüfung in die Warteschlange gestellt.

Sobald sie grünes Licht erhalten, werden sie in die Produktion versetzt 🟩 Phase, Ersetzen des aktuell verwendeten Modells. Das bisherige Serienmodell wird dann archiviert ⬛.

Hinweis: Wir haben die Flexibilität, mehrere Modelle gleichzeitig in der Produktion einzusetzen. Das bedeutet, dass wir verschiedene Modelle mit unterschiedlichen Qualitäten und Funktionalitäten anbieten können, die auf spezifische Abonnements oder Anforderungen zugeschnitten sind. Es geht darum, das Benutzererlebnis perfekt anzupassen!

Verschieben Sie nun diesen neuesten Lauf in die Produktionsphase und aktualisieren Sie unsere App 🔄️

Es spiegelt die neuesten Änderungen wider und genau so werden Modelle in der realen Welt bedient. Dies sind die Grundlagen von CI/CD – Continuous Integration und Continuous Deployment. Das ist MLOps. Wir haben es von Anfang bis Ende geschafft! 🎉

Und das ist ein Abschluss für diesen umfangreichen Blog! Aber denken Sie daran, dies ist nur ein kleiner Schritt in der riesigen Welt von MLOps. Die bevorstehende Reise umfasst das Hosten unserer App in der Cloud, die Zusammenarbeit mit anderen und die Bereitstellung von Modellen über APIs. Während ich in diesem Blog ausschließlich Streamlit verwendet habe, haben Sie die Freiheit, andere Optionen wie FastAPI oder Flask zum Erstellen von Endpunkten zu erkunden. Sie können Streamlit sogar mit FastAPI kombinieren, um es mit Ihrer bevorzugten Pipeline zu entkoppeln und zu koppeln. Wenn Sie eine Auffrischung benötigen, habe ich einen meiner vorherigen Blogs für Sie zusammengestellt, der zeigt, wie man genau das macht!

medium.com

Hey Hey Hey! Wir haben die Ziellinie erreicht, Leute! Hier ist das GitHub Repo für dieses gesamte Projekt 👇

github.com

Ich hoffe, dieser Blog hat Ihnen ein Lächeln und Wissen gebracht. Wenn Ihnen die Lektüre Spaß gemacht hat und Sie es hilfreich fanden, vergessen Sie nicht, Ihrem Grußwort zu folgen, Afaque Umer, für weitere spannende Artikel.

Seien Sie gespannt auf weitere spannende Abenteuer in der Welt des maschinellen Lernens und der Datenwissenschaft. Ich werde sicherstellen, dass diese ausgefallenen Begriffe in einfache Konzepte zerlegt werden.

Alles klar, schon gut, schon gut! Es ist Zeit, Abschied zu nehmen 👋

Bildquelle:UnsplashWarumWasWieBild vom AutorAbschnitt 1:Sektion 2:Sektion 3:Bildquelle:DatensteineDatenerfassung:Datenanalyse:Datentransformation/-vorbereitung:Modellschulung und -entwicklung:Modell Bestätigung:Modeldienst:Modellüberwachung:Modellumschulung:MLflow-Tracking:Mlflow-Projekte:Mlflow-Modelle:Mlflow-Registrierung:pip mlflow installierenmlflow-BenutzeroberflächeBild vom Autor: Mlflow UIlog_paramlog_metriclog_artifactBild vom Autor:MLflow-Trackingmlflow.create_experiment()mlflow.set_experiment("your_exp_name")mlflow.start_run()mlflow.end_run()mlflow.search_experiments()Bild vom Autor: Streamlit UI (Trainer-App)RawToken.Bild vom Autor: Hyperparameter-TuningBild vom Autor: Experimente & LäufeRawTokenBild vom Autor: Läufe vergleichenBild vom Autor: Metriken und ParameterBild vom Autor: Alle ExperimenteBild vom Autor: Vergleich aller LäufeExperimentlaufenrun_idArtefakteBild vom Autor: Abfragen von LäufenBild vom Autor: Trackingrun_idAromenBild vom Autor: Laden und VorhersagenSpam FilterBild vom Autor: Registrieren eines ModellsBild vom Autor: ModellversionenBild vom Autor: Model StagingStaging und Validierung 🟨:Bereitstellung 🟩:Überwachung und Wartung ⛑️:Umschulung ⚙️:Modellversionierung 🔢:Feedbackschleife und Verbesserung:Bild vom Autor: Registrierte Modelle abfragencurrent_stage == 'Produktion',model.run_idBild vom Autor: Produktionsmodell findenBild vom Autor: Produktionsmodell findenuser_app.pyBild vom Autor: Stramlit CodeBild vom Autor: Stramlit UIBild vom Autor: Umschulung und NachverfolgungBild vom Autor: ModellinszenierungProduktion Hinweis: Wir haben die Flexibilität, mehrere Modelle gleichzeitig in der Produktion einzusetzen. Das bedeutet, dass wir verschiedene Modelle mit unterschiedlichen Qualitäten und Funktionalitäten anbieten können, die auf spezifische Abonnements oder Anforderungen zugeschnitten sind. Es geht darum, das Benutzererlebnis perfekt anzupassen!Bild vom Autor: Vorhersagen treffenAfaque-Alter