{"id":4457,"date":"2021-09-15T02:36:51","date_gmt":"2021-09-15T02:36:51","guid":{"rendered":"https:\/\/lamarr-institute.org\/blog\/experiment-tracking\/"},"modified":"2025-11-12T14:53:40","modified_gmt":"2025-11-12T14:53:40","slug":"experiment-tracking","status":"publish","type":"blog","link":"https:\/\/lamarr-institute.org\/de\/blog\/experiment-tracking\/","title":{"rendered":"Experiment Tracking: Bessere Dokumentationen von ML-Experimenten mit MLflow"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Wenn es darum geht, K\u00fcnstliche Intelligenz erkl\u00e4rbar zu machen, liegt der Fokus h\u00e4ufig darauf, den Grund f\u00fcr die von einem Modell getroffene Entscheidung herauszufinden (siehe hierf\u00fcr auch unseren Blogbeitrag \u201e<a href=\"https:\/\/lamarr-institute.org\/de\/erklaerbarkeit-kuenstliche-intelligenz\/\">Warum KI erkl\u00e4rbar sein muss<\/a>\u201c). Gehen wir einen Schritt zur\u00fcck, also zur Erstellung eines solchen Modells, befinden wir uns beim sogenannten <a href=\"https:\/\/lamarr-institute.org\/de\/wie-maschinen-lernen\/\">Modell Training<\/a>. Um nachvollziehen zu k\u00f6nnen, wie ein Modell entstanden ist, sollten die Metadaten eines Trainingsvorgangs festgehalten werden. Hierbei spricht man auch von Experiment Tracking. F\u00fcr einen Trainingsvorgang k\u00f6nnen Metadaten, wie verschiedene Parameter, Hyperparameter und Metriken getrackt werden. Liegen gen\u00fcgend Informationen vor, kann mit einem wiederholten Trainingsvorgang das gleiche oder zumindest ein vergleichbares Ergebnis erzielt werden. Dieser Umstand ist auch f\u00fcr die Evaluation von Modellen wichtig, die durch verschiedene Traingingsvorg\u00e4nge entstanden sind. Unterschiede in den Ergebnissen k\u00f6nnen so besser auf die voneinander verschiedenen Daten oder Metadaten zur\u00fcckgef\u00fchrt werden. Durch eine klare \u00dcbersicht \u00fcber die Ergebnisse des Modells, kann das beste Modell ausgew\u00e4hlt werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">H\u00e4ufig stehen in der explorativen Phase des <a href=\"https:\/\/lamarr-institute.org\/de\/mlops\/\">ML-Engineering-Prozesses<\/a> das Modelltraining und das Erzielen guter Metriken im Vordergrund, w\u00e4hrend die Dokumentation der Ergebnisse in den Hintergrund f\u00e4llt. Eine gute Dokumentation zeichnet sich jedoch besonders bei langwierigen und komplexen Prozessen aus und hilft dabei, den \u00dcberblick zu bewahren und somit am Ende ein nachvollziehbares Ergebnis zu erzielen.<br>Zurzeit erfolgt die Dokumentation von Experimenten in vielen F\u00e4llen noch in Form von Textdateien und verschiedene Arbeitsst\u00e4nde werden h\u00e4ufig durch Suffixe an den Dateinamen, wie zum Beispiel \u201cModell_v1, Modell_v2, Modell_v2_approach1, \u2026\u201d markiert.<br>Eine automatische Aufzeichnung der Trainingsvorg\u00e4nge und das Versionieren von Arbeitsst\u00e4nden k\u00f6nnen die Arbeit erleichtern und f\u00fchren zu einer \u00fcbersichtlichen Dokumentation. Ein Tool, das bei diesen Schritten unterst\u00fctzen kann, ist <a href=\"https:\/\/mlflow.org\/\" target=\"_blank\" rel=\"noopener\">MLflow<\/a>. Dieses Werkzeug wollen wir euch anhand eines Beispielworkflows in diesem Beitrag vorstellen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Der veranschaulichende Beispielworkflow kann anhand von Codebeispielen auf dem eigenen Rechner nachvollzogen werden. Hierf\u00fcr wird eine Linux-Umgebung empfohlen. Zudem sollten Git und Anaconda bereits installiert sein.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-size: 18pt;\">Ein Beispielworkflow in MLflow<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ziel dieses Beispielworkflows soll es sein, mithilfe des Wine-Quality-Datensatzes ein Modell f\u00fcr die Einordnung von Weinsorten in Qualit\u00e4tsstufen zu entwickeln. Hierbei handelt es sich um ein Klassifikationsproblem (siehe <a href=\"https:\/\/machinelearning-blog.de\/grundlagen\/welche-arten-von-maschinellem-lernen-gibt-es\/\" target=\"_blank\" rel=\"noopener\">\u201e<\/a><a href=\"https:\/\/lamarr-institute.org\/de\/welche-arten-von-maschinellem-lernen-gibt-es\/\">Welche Arten vom Maschinellen Lernen gibt es?<\/a><a href=\"https:\/\/machinelearning-blog.de\/grundlagen\/welche-arten-von-maschinellem-lernen-gibt-es\/\" target=\"_blank\" rel=\"noopener\">\u201c<\/a> f\u00fcr mehr Informationen \u00fcber Klassifikation.). Den Weinen wird anhand der Eingabevariablen fixed acidity (feste S\u00e4uren), volatile acidity (fl\u00fcchtige S\u00e4uren), citric acid (Zitronens\u00e4ure), residual sugar (Restzucker), chlorides (Chloride), free sulfur dioxide (freies Schwefeldioxid), total sulfur dioxide (Gesamtschwefeldioxid), density (Dichte), pH (pH-Wert), sulphates, alcohol (Alkoholgehalt) die Ausgabevariable quality (Qualit\u00e4tsnote) mit einem Wert zwischen 0 und 10 zugeordnet. Als Grundlage nutzen wir den Code aus dem offiziellen <a href=\"https:\/\/github.com\/mlflow\/mlflow\/tree\/master\/examples\/sklearn_elasticnet_wine\" target=\"_blank\" rel=\"noopener\">MLflow Repository<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-size: 18pt;\">SCHRITT 1: Einrichten des Codes und MLflow<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Zuerst gilt es, den Code und MLflow einzurichten. Den Code erhalten wir, indem wir die zentrale Codeablage von MLflow beziehen. Das sogenannte Repository k\u00f6nnen wir \u00fcber eine beliebige Kommandozeile mit Git klonen. Dazu sollten wir uns jedoch zuerst in den Ordner fortbewegen, in welchem wir den Code ablegen m\u00f6chten. Nach dem Klonen bewegen wir uns dann in das Verzeichnis <em>\u201e.\/mlflow\/examples\/sklearn_elasticnet_wine\/.\u201c<\/em> Hierin befinden sich bereits eine Notebook-Datei <em>train.ipynb<\/em> und eine <em>conda.yaml<\/em>-Datei, mit der wir eine vordefinierte Anaconda-Umgebung namens tutorial erstellen k\u00f6nnen. Das machen wir mit dem Befehl <em>conda env create -f conda.yaml<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um eine erstellte Conda-Umgebung im Jupyter-Notebook ansprechen zu k\u00f6nnen, muss zun\u00e4chst der Ipython-Kernel in unserer Umgebung installiert werden; anschlie\u00dfend wird f\u00fcr diesen die aktuelle Umgebung unter einem Namen, z.B. ebenfalls tutorial, installiert und somit im Jupyter-Notebook ansprechbar gemacht. Wenn noch nicht getan, kann dann zus\u00e4tzlich <em>jupyterlab<\/em> zum Aufrufen der Jupyter-Notebooks installiert werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Anschlie\u00dfend starten wir unser Jupyter-Notebook mit dem Befehl <em>jupyter notebook<\/em>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># in einen beliebigen Ordner bewegen, in dem das repository geklont werden soll\ncd \/home\/username\/repository\n\n# conda und jupyter notebook einrichten\ngit clone https:\/\/github.com\/mlflow\/mlflow.git\ncd mlflow\/examples\/sklearn_elasticnet_wine\nconda env create -f conda.yaml\nconda activate tutorial\n\n# Conda Umgebung im jupyter notebook nutzen\nconda install -c anaconda ipykernel\nipython kernel install --user --name=tutorial\nconda install -c conda-forge jupyterlab\n\n# jupyter notebook starten\njupyter notebook<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das Jupyter-Notebook l\u00e4uft jetzt im aktuellen Kommandofenster, in dem auch eine URL bereitgestellt wird, \u00fcber welche die Nutzeroberfl\u00e4che des Jupyter-Notebooks im Browser aufgerufen werden kann.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In einem neuen Kommandofenster bewegen wir uns nun erneut in den Ordner <em>sklearn_elasticnet_wine<\/em>. Damit die von uns gew\u00fcnschten Informationen getrackt werden, sollten wir die <em>tutorial<\/em>-Umgebung aktivieren, da MLflow in dieser bereits installiert ist. Aus dem Ordner <em>sklearn_elasticnet_wine<\/em> k\u00f6nnen wir dann die MLflow-Nutzeroberfl\u00e4che mit dem Befehl <em>mlflow ui<\/em> aufrufbar machen. Hiermit wird der sogenannte Tracking-Server gestartet, der dann standardm\u00e4\u00dfig \u00fcber <em>http:\/\/localhost:5000<\/em> erreichbar ist. MLflow legt die Informationen zu den getrackten Trainingsvorg\u00e4ngen im Ordner mlruns ab. Diese werden von MLflow geladen und auf dem Tracking-Server dargestellt.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># mlflow-tracking-server starten\ncd mlflow\/examples\/sklearn_elasticnet_wine\nconda activate tutorial\nmlflow ui<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unter Windows funktionieren die aufgef\u00fchrten Kommandos oft nicht problemlos. M\u00f6glicherweise helfen folgende Punkte bei der Ausf\u00fchrung:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Den Pfad zur Anacondainstallation setzen, wenn Anaconda angenommen im Ordner C:tools installiert wurde: <em>set PATH=%PATH%;C:\\tools\\Anaconda3;C:\\tools\\Anaconda3\\Scripts\\<\/em><\/li>\n\n\n\n<li>Die Conda-Umgebung \u201etutorial\u201c ohne expliziten \u201econda\u201c-Aufruf aktivieren: <em>activate tutorial<\/em><\/li>\n\n\n\n<li>Folgende Dateien aus C:\\tools\\Anaconda3\\Library\\bin in C:\\tools\\Anaconda3\\DLLs kopieren:\n<ul class=\"wp-block-list\">\n<li><em>libcrypto-1_1-x64.*<\/em><\/li>\n\n\n\n<li><em>libssl-1_1-x64.*<\/em><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/lamarr-institute.org\/wp-content\/uploads\/01_kernel-1024x464.png\" alt=\"- Lamarr Institute for Machine Learning (ML) and Artificial Intelligence (AI)\" class=\"wp-image-24906\" title=\"\"><figcaption class=\"wp-element-caption\">\u00a9 ML2R <br>Jupyter Notebook \u201etrain\u201c mit aktiviertem \u201etutorial\u201c-Kernel<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">SCHRITT 2: Ein Jupyter Notebook f\u00fcr die Nutzung mit MLflow einrichten<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Damit wir das Notebook uneingeschr\u00e4nkt nutzen k\u00f6nnen, muss unsere Conda-Umgebung im Notebook aktiviert werden. Dies haben wir bereits im ersten Codeblock erm\u00f6glicht. Nun k\u00f6nnen wir die Nutzeroberfl\u00e4che des Jupyter-Notebook mit der bereitgestellten URL aus Schritt 1 \u00f6ffnen und \u00fcber \u201eKernel\u201c \u00e0 \u201eChange kernel\u201c unseren \u201etutorial\u201c-Kernel w\u00e4hlen und das Notebook f\u00fcr das Tracking vorbereiten. Die zu trackenden Informationen m\u00fcssen wir im Notebook definieren. Betrachten wir das train.ipynb-Notebook, erkennen wir, dass wir zuerst die Funktion <em>mlflow.start_run()<\/em> aufrufen. Diese startet einen Run, f\u00fcr den der anschlie\u00dfende einger\u00fcckte Code ausgef\u00fchrt wird. In unserem Fall umfasst der Run einen Trainingsvorgang. Bei einem Fehler oder nach Ausf\u00fchren des einger\u00fcckten Codes wird der Run automatisch beendet. Der einger\u00fcckte Code ruft die Funktionen <em>mlflow.log_param()<\/em> sowie <em>mlflow.log_metric()<\/em> auf, um Parameter und Metriken zu loggen, also aufzuzeichnen, und abschlie\u00dfend <em>mlflow.sklearn.log_model()<\/em> um das spezifische sklearn-Modell zu sichern.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In den folgenden Zellen des Notebooks werden drei Trainingsvorg\u00e4nge mit verschiedenen Werten f\u00fcr die Parameter alpha (H\u00f6he der Strafe f\u00fcr Einbeziehung irrelevanter Merkmale) und <em>l1_ratio<\/em> (Gewichtung zwischen den <a href=\"https:\/\/en.wikipedia.org\/wiki\/Regularization_(mathematics)\" target=\"_blank\" rel=\"noopener\">zwei standard Regularisierungsmethoden<\/a> L1 und L2) definiert. F\u00fchren wir das gesamte Notebook aus, werden diese Trainingsvorg\u00e4nge als Runs in MLflow abgelegt, die wir in der MLflow-Nutzeroberfl\u00e4che betrachten k\u00f6nnen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/lamarr-institute.org\/wp-content\/uploads\/02_mlflow_gui-1024x420.png\" alt=\"- Lamarr Institute for Machine Learning (ML) and Artificial Intelligence (AI)\" class=\"wp-image-24908\" title=\"\"><figcaption class=\"wp-element-caption\">\u00a9 ML2R <br>MLflow Nutzeroberfl\u00e4che mit drei ausgef\u00fchrten Runs<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">SCHRITT 3: Ergebnisse in der MLflow Nutzeroberfl\u00e4che betrachten<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nun k\u00f6nnen wir in unserem Browser <em>http:\/\/localhost:5000<\/em> aufrufen und in der MLflow-Oberfl\u00e4che das Projekt \u201cDefault\u201d ausw\u00e4hlen, um die ausgef\u00fchrten Runs zu vergleichen. Dazu warten wir zun\u00e4chst, bis an allen Runs ein gr\u00fcner Haken erscheint, der signalisiert, dass die Vorg\u00e4nge abgeschlossen sind. Danach w\u00e4hlen wir alle drei Runs aus und klicken auf \u201cCompare\u201d. Im sich \u00f6ffnenden Fenster werden Parameter, die sich in den drei Runs unterscheiden, farblich hervorgehoben. Das sind in unserem Fall die beiden Parameter <em>alpha<\/em> und <em>l1_ratio<\/em>. \u00dcber verschiedene Plots k\u00f6nnen wir die Runs auch visuell vergleichen. Klicken wir beispielsweise auf \u201ermse\u201d (Wurzel [root] des <a href=\"https:\/\/de.wikipedia.org\/wiki\/Mittlere_quadratische_Abweichung\" target=\"_blank\" rel=\"noopener\">mean squared error<\/a>), wird eine Grafik angezeigt, auf der klar zu erkennen ist, dass der \u201ermse\u201d f\u00fcr Run 1 am niedrigsten ist. Das bedeutet, dass die Differenz zwischen beobachteten und vorhergesagten Daten am geringsten und somit das Modell am besten auf die verwendeten Daten angepasst ist. Auf der linken Seite lassen sich noch weitere Einstellungen machen; so k\u00f6nnen beispielsweise zus\u00e4tzlich noch &#8222;<a href=\"https:\/\/de.wikipedia.org\/wiki\/Bestimmtheitsma%C3%9F\" target=\"_blank\" rel=\"noopener\">r2<\/a>\u201d (<a href=\"https:\/\/de.wikipedia.org\/wiki\/Bestimmtheitsma%C3%9F\" target=\"_blank\" rel=\"noopener\">Bestimmtheitsma\u00df<\/a>), ebenfalls zur Beurteilung der Anpassung des Modells auf die Daten, und &#8222;mae&#8220; (<a href=\"https:\/\/de.wikipedia.org\/wiki\/Mittlerer_absoluter_Fehler\" target=\"_blank\" rel=\"noopener\">mean absolute error<\/a>) f\u00fcr die Beurteilung der Genauigkeit der Vorhersagen des Modells, angezeigt werden. Je nach Anwendungsfall bietet es sich an, verschiedene Darstellungsm\u00f6glichkeiten auszuprobieren.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/lamarr-institute.org\/wp-content\/uploads\/03_compare_runs_params-1024x471.png\" alt=\"- Lamarr Institute for Machine Learning (ML) and Artificial Intelligence (AI)\" class=\"wp-image-24910\" title=\"\"><figcaption class=\"wp-element-caption\">\u00a9 ML2R <br>MLflow: Tabellarischer Vergleich der Parameter und Metriken dreier Runs<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/lamarr-institute.org\/wp-content\/uploads\/04_compare_runs-1024x495.png\" alt=\"- Lamarr Institute for Machine Learning (ML) and Artificial Intelligence (AI)\" class=\"wp-image-24912\" title=\"\"><figcaption class=\"wp-element-caption\">\u00a9 ML2R <br>MLflow: Graphischer Vergleich der Metriken dreier Runs<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">SCHRITT 4: Besten Run detailliert betrachten<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der Run 1 mit den Werten <em>alpha=0.1<\/em> und <em>l1_ratio=0.1<\/em> hat mit einem &#8222;rmse\u201d von ca. 0.71 das beste Ergebnis geliefert. \u00dcber die Run ID k\u00f6nnen wir Metainformationen zu diesem Run explizit aufrufen. Klicken wir auf die oben genannte Grafik, \u00f6ffnet sich au\u00dferdem ein Pop-Up, \u00fcber das wir auch direkt zu einem Run springen k\u00f6nnen. Hier k\u00f6nnen wir Notizen hinzuf\u00fcgen und die genauen Parameter und Metriken erneut betrachten. Unter dem Punkt \u201eArtifacts\u201c k\u00f6nnen wir au\u00dferdem die entsprechenden Modelldateien betrachten. Auch eine <em>conda.yaml<\/em> kann mitgeliefert werden, unter der das Modell auf anderen Rechnern geladen oder trainiert werden kann. Diese wird ohne explizite Definition automatisch erzeugt. Mit einem Klick auf den Ordner \u201emodel\u201d wird au\u00dferdem ein Python-Codebeispiel angezeigt, durch das eine Vorhersage erfolgen kann.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/lamarr-institute.org\/wp-content\/uploads\/05_model_artifact-1024x560.png\" alt=\"- Lamarr Institute for Machine Learning (ML) and Artificial Intelligence (AI)\" class=\"wp-image-24914\" title=\"\"><figcaption class=\"wp-element-caption\">\u00a9 ML2R <br>In MLflow abrufbares Modell-Artefakt<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">SCHRITT 5: Ein Modell von MLflow beziehen und f\u00fcr die Vorhersage nutzen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Um das von uns erstellte Modell zu beziehen und damit eine Vorhersage zu machen, k\u00f6nnen wir uns am Codevorschlag von MLflow orientieren. Wir passen diesen an, indem wir die passende <em>run_id<\/em> aus der URL beziehen (http:\/\/localhost:5000\/#\/experiments\/experiment_nummer\/runs\/run_id) und im Code einf\u00fcgen. Den Code schreiben wir in eine neue Zelle in unserem Notebook. Die Eingabedaten f\u00fcr das Modell erzeugen wir im Code manuell als <em>input_data<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import mlflow\nlogged_model = '.\/mlruns\/0\/run_id\/artifacts\/model' # hier run_id einf\u00fcgen\n# Load model as a PyFuncModel.\nloaded_model = mlflow.pyfunc.load_model(logged_model)\n# Predict on a Pandas DataFrame.\nimport pandas as pd\ninput_data = {'fixed acidity': &#91;8.5], 'volatile acidity': &#91;0.26], 'citric acid': &#91;0.21], 'residual sugar': &#91;16.2], 'chlorides': &#91;74], 'free sulfur dioxide': &#91;41], 'total sulfur dioxide': &#91;197], 'density': &#91;998], 'pH': &#91;3.02], 'sulphates': &#91;0.5], 'alcohol': &#91;9.8]}\nprediction = loaded_model.predict(pd.DataFrame(input_data))\nprint(\"prediction = \"+str(prediction&#91;0]))<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nach dem Ausf\u00fchren der Zelle erhalten wir die Bewertung f\u00fcr den von uns definierten Wein.&nbsp; Spielen wir ein wenig herum, merken wir schnell, dass das Modell schon allein durch einen sehr hohen oder niedrigen Alkoholgehalt in seiner Bewertung beeinflusst wird. \ud83d\ude42<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/lamarr-institute.org\/wp-content\/uploads\/06_logged_model-1024x452.png\" alt=\"- Lamarr Institute for Machine Learning (ML) and Artificial Intelligence (AI)\" class=\"wp-image-24918\" title=\"\"><figcaption class=\"wp-element-caption\">\u00a9 ML2R <br>F\u00fcr die manuell angelegten Eingabedaten liefert das bezogene Modell hier einen Wert von ca. 2.1<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Tracking, Tracking, Tracking, &#8230;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Unsere Experimente k\u00f6nnen mithilfe weniger zus\u00e4tzlicher Codezeilen automatisch durch MLflow getrackt werden. Dadurch haben wir einen besseren \u00dcberblick dar\u00fcber, welche Metriken wir mit welchen Parametern erreichen, und wir k\u00f6nnen unsere entwickelten Modelle einem konkreten Trainingsvorgang zuordnen, dem wir wiederum eine konkrete Trainingsumgebung zuordnen k\u00f6nnen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Abschlie\u00dfend ist zu erw\u00e4hnen, dass hier mit dem statischen Wine-Quality-Datensatz gearbeitet wurde. Genauso wie sich Modelle und Parameter in der realen Welt ver\u00e4ndern k\u00f6nnen, ist jedoch auch eine Ver\u00e4nderung des Sourcecodes und der zugrundeliegenden Daten m\u00f6glich. In den n\u00e4chsten Blogeintr\u00e4gen dieser Reihe, gehe ich deshalb darauf ein, wie Source Code und Daten w\u00e4hrend der Exploration verwaltet werden k\u00f6nnen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mehr Informationen zur Implementierung im zugeh\u00f6rigen Video:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n <div class=\"brlbs-cmpnt-container brlbs-cmpnt-content-blocker brlbs-cmpnt-with-individual-styles\" data-borlabs-cookie-content-blocker-id=\"youtube-content-blocker\" data-borlabs-cookie-content=\"PGlmcmFtZSB0aXRsZT0iRXhwZXJpbWVudCBUcmFja2luZzogQmVzc2VyZSBEb2t1bWVudGF0aW9uZW4gdm9uIE1MLUV4cGVyaW1lbnRlbiBtaXQgTUxmbG93IiB3aWR0aD0iNjQwIiBoZWlnaHQ9IjM2MCIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbS9lbWJlZC9PaW5LQmFPdWZ4Yz9mZWF0dXJlPW9lbWJlZCIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgY2xpcGJvYXJkLXdyaXRlOyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlOyB3ZWItc2hhcmUiIHJlZmVycmVycG9saWN5PSJzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+\"><div class=\"brlbs-cmpnt-cb-preset-c brlbs-cmpnt-cb-youtube\"> <div class=\"brlbs-cmpnt-cb-thumbnail\" style=\"background-image: url('https:\/\/lamarr-institute.org\/wp-content\/uploads\/borlabs-cookie\/1\/yt_OinKBaOufxc_hqdefault.jpg')\"><\/div> <div class=\"brlbs-cmpnt-cb-main\"> <div class=\"brlbs-cmpnt-cb-play-button\"><\/div> <div class=\"brlbs-cmpnt-cb-content\"> <p class=\"brlbs-cmpnt-cb-description\">Sie sehen gerade einen Platzhalterinhalt von <strong>YouTube<\/strong>. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfl\u00e4che unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.<\/p> <a class=\"brlbs-cmpnt-cb-provider-toggle\" href=\"#\" data-borlabs-cookie-show-provider-information role=\"button\">Mehr Informationen<\/a> <\/div> <div class=\"brlbs-cmpnt-cb-buttons\"> <a class=\"brlbs-cmpnt-cb-btn\" href=\"#\" data-borlabs-cookie-unblock role=\"button\">Inhalt entsperren<\/a> <a class=\"brlbs-cmpnt-cb-btn\" href=\"#\" data-borlabs-cookie-accept-service role=\"button\" style=\"display: inherit\">Erforderlichen Service akzeptieren und Inhalte entsperren<\/a> <\/div> <\/div> <\/div><\/div>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Bereits in der experimentellen Phase des Maschinellen Lernens k\u00f6nnen Trainingsvorg\u00e4nge \u00fcbersichtlich und nachvollziehbar strukturiert werden. Dieser Beitrag stellt ein hilfreiches Tool f\u00fcr diesen Zweck vor.<\/p>\n","protected":false},"author":9,"featured_media":4471,"template":"","meta":{"_acf_changed":false,"footnotes":""},"blog-category":[1416,546],"blog-tag":[1554,1565],"class_list":["post-4457","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog-category-alle-blogbeitraege","blog-category-anwendung","blog-tag-mlops-de","blog-tag-python-de"],"acf":[],"publishpress_future_workflow_manual_trigger":{"enabledWorkflows":[]},"_links":{"self":[{"href":"https:\/\/lamarr-institute.org\/de\/wp-json\/wp\/v2\/blog\/4457","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lamarr-institute.org\/de\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/lamarr-institute.org\/de\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/lamarr-institute.org\/de\/wp-json\/wp\/v2\/users\/9"}],"version-history":[{"count":0,"href":"https:\/\/lamarr-institute.org\/de\/wp-json\/wp\/v2\/blog\/4457\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lamarr-institute.org\/de\/wp-json\/wp\/v2\/media\/4471"}],"wp:attachment":[{"href":"https:\/\/lamarr-institute.org\/de\/wp-json\/wp\/v2\/media?parent=4457"}],"wp:term":[{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/lamarr-institute.org\/de\/wp-json\/wp\/v2\/blog-category?post=4457"},{"taxonomy":"blog-tag","embeddable":true,"href":"https:\/\/lamarr-institute.org\/de\/wp-json\/wp\/v2\/blog-tag?post=4457"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}