Der Kaggle-Wettbewerb [Google Cloud & NCAA® ML-Wettbewerb 2020-NCAAW](https://www.kaggle.com/c/google-cloud-ncaa-march-madness-2020-division-], an dem ich im März 2020 teilgenommen habe. Aufgrund der Einführung der Tracking-Funktion von mlflow in 1-Womens-Turnieren war es einfach zu bedienen, daher werde ich es als Memorandum veröffentlichen. Die Beschreibung beschreibt hauptsächlich die Einführung der Tracking-Funktion von mlflow und die Punkte, auf die ich bei der Einführung gestoßen bin.
mlflow ist eine Open-Source-Plattform, die den Lebenszyklus des maschinellen Lernens (Vorverarbeitung-> Lernen-> Bereitstellung) verwaltet und drei Hauptfunktionen hat. --Tracking: Protokollierung --Projekte: Verpackung --Modelle: Bereitstellungsunterstützung Dieses Mal werde ich hauptsächlich auf die Einführung von Tracking eingehen. Einzelheiten zu Projekten und Modellen finden Sie unter hier.
Tracking ist eine Funktion, die jeden Parameter, Bewertungsindex und Ergebnis, Ausgabedatei usw. beim Erstellen eines maschinellen Lernmodells protokolliert. Wenn Sie ein Projekt in git einfügen, können Sie die Codeversion verwalten. Ich dachte jedoch, dass sich die Geschichte bei der Einführung auf Projekte ausweiten würde, sodass ich sie dieses Mal weglassen werde (nächstes Mal werde ich Projekte ansprechen). Ich möchte damit umgehen, wenn ich es tue.
mlflow kann mit pip installiert werden.
pip install mlflow
Legen Sie den URI für die Protokollierung fest (standardmäßig wird er zur Laufzeit direkt unter dem Ordner erstellt). Für den URI können nicht nur das lokale Verzeichnis, sondern auch die Datenbank und der HTTP-Server angegeben werden. Der Name des Protokollierungszielverzeichnisses muss "mlruns" sein (der Grund wird später erläutert).
import mlflow
mlflow.set_tracking_uri('./hoge/mlruns/')
Das Experiment wird vom Analysten für jede Aufgabe im maschinellen Lernprojekt erstellt (z. B. Merkmalsmenge, maschinelle Lernmethode, Parametervergleich usw.).
#Wenn kein Experiment vorhanden ist, wird es erstellt.
mlflow.set_experiment('compare_max_depth')
Lassen Sie uns tatsächlich protokollieren.
with mlflow.start_run():
mlflow.log_param('param1', 1) #Parameter
mlflow.log_metric('metric1', 0.1) #Ergebnis
mlflow.log_artifact('./model.pickle') #Andere Modelle, Daten usw.
mlflow.search_runs() #Sie können den Protokollierungsinhalt im Experiment abrufen
Es protokolliert Parameter, Scores, Modelle usw. Detaillierte Spezifikationen der einzelnen Funktionen finden Sie im offiziellen Dokument.
Wechseln Sie in das von URI festgelegte Verzeichnis. Stellen Sie zu diesem Zeitpunkt sicher, dass sich das Verzeichnis "mlruns" unter der Kontrolle befindet (wenn das Verzeichnis "mlruns" nicht vorhanden ist, wird das Verzeichnis "mlruns" erstellt).
Starten Sie den lokalen Server mit mlflow ui
.
$ cd ./hoge/
$ ls
mlruns
$ mlflow ui
Wenn Sie im Browser "http: //127.0.0.1: 5000" öffnen, wird der folgende Bildschirm angezeigt.
Es ist auch möglich, jeden Parameter zu vergleichen.
Tips
tracking = mlflow.tracking.MlflowClient()
experiment = tracking.get_experiment_by_name('hoge')
print(experiment.experiment_id)
#Methode 1:Experimentliste abrufen
tracking.list_experiments()
#Methode 2:
tracking = mlflow.tracking.MlflowClient()
experimet = tracking.get_experiment('1') #Experiment ID bestehen
print(experimet.name)
tracking = mlflow.tracking.MlflowClient()
tracking.delete_experiment('1')
with mlflow.start_run():
run_id = mlflow.active_run().info.run_id
Wenn Sie die erfasste run_id an den Parameter start_run ()
übergeben, wird das Protokoll der Ziel-run_id überschrieben.
tracking = mlflow.tracking.MlflowClient()
tracking.delete_run(run_id)
#Wenn Sie mehrere Parameter gleichzeitig protokollieren möchten, übergeben Sie sie mit dict.
params = {
'test1': 1,
'test2': 2
}
metrics = {
'metric1': 0.1,
'metric2': 0.2
}
with mlflow.start_run():
mlflow.log_params(params)
mlflow.log_metrics(metrics)
download artifacts
tracking = mlflow.tracking.MlflowClient()
print(tracking.list_artifacts(run_id=run_id)) #Holen Sie sich eine Liste der Artefakte
[<FileInfo: file_size=23, is_dir=False, path='model.pickle'>]
tracking.download_artifacts(run_id=run_id, path='model.pickle', dst_path='./')
Recommended Posts