Uruchamianie projektów MLflow w usłudze Azure Databricks
Projekt MLflow to format pakowania kodu nauki o danych w sposób wielokrotnego użytku i powtarzalny. Składnik MLflow Projects zawiera interfejs API i narzędzia wiersza polecenia do uruchamiania projektów, które również integrują się ze składnikiem Tracking w celu automatycznego rejestrowania parametrów i zatwierdzenia git kodu źródłowego w celu odtworzenia.
W tym artykule opisano format projektu MLflow i sposób zdalnego uruchamiania projektu MLflow w klastrach usługi Azure Databricks przy użyciu interfejsu wiersza polecenia platformy MLflow, co ułatwia skalowanie kodu nauki o danych w pionie.
Format projektu MLflow
Każdy katalog lokalny lub repozytorium Git może być traktowany jako projekt MLflow. Następujące konwencje definiują projekt:
- Nazwa projektu to nazwa katalogu.
- Środowisko oprogramowania jest określone w
python_env.yaml
pliku , jeśli istnieje. Jeśli plik niepython_env.yaml
istnieje, platforma MLflow używa środowiska virtualenv zawierającego tylko język Python (w szczególności najnowszy język Python dostępny dla środowiska virtualenv) podczas uruchamiania projektu. - Dowolny
.py
plik lub.sh
w projekcie może być punktem wejścia bez jawnie zadeklarowanych parametrów. Po uruchomieniu takiego polecenia z zestawem parametrów platforma MLflow przekazuje każdy parametr w wierszu polecenia przy użyciu--key <value>
składni.
Możesz określić więcej opcji, dodając plik MLproject, który jest plikiem tekstowym w składni YAML. Przykładowy plik MLproject wygląda następująco:
name: My Project
python_env: python_env.yaml
entry_points:
main:
parameters:
data_file: path
regularization: {type: float, default: 0.1}
command: "python train.py -r {regularization} {data_file}"
validate:
parameters:
data_file: path
command: "python validate.py {data_file}"
Uruchamianie projektu MLflow
Aby uruchomić projekt MLflow w klastrze usługi Azure Databricks w domyślnym obszarze roboczym, użyj polecenia :
mlflow run <uri> -b databricks --backend-config <json-new-cluster-spec>
gdzie <uri>
jest identyfikatorem URI repozytorium Git lub folderem zawierającym projekt MLflow i <json-new-cluster-spec>
jest dokumentem JSON zawierającym strukturę new_cluster. Identyfikator URI usługi Git powinien mieć postać: https://github.com/<repo>#<project-folder>
.
Przykładowa specyfikacja klastra to:
{
"spark_version": "7.3.x-scala2.12",
"num_workers": 1,
"node_type_id": "Standard_DS3_v2"
}
Jeśli musisz zainstalować biblioteki w ramach procesu roboczego, użyj formatu "specyfikacja klastra". Należy pamiętać, że koła języka Python muszą zostać przekazane do systemu plików DBFS i określone jako pypi
zależności. Na przykład:
{
"new_cluster": {
"spark_version": "7.3.x-scala2.12",
"num_workers": 1,
"node_type_id": "Standard_DS3_v2"
},
"libraries": [
{
"pypi": {
"package": "tensorflow"
}
},
{
"pypi": {
"package": "/dbfs/path_to_my_lib.whl"
}
}
]
}
Ważne
.egg
zależności i.jar
nie są obsługiwane w przypadku projektów MLflow.- Wykonywanie projektów MLflow ze środowiskami platformy Docker nie jest obsługiwane.
- Podczas uruchamiania projektu MLflow w usłudze Databricks należy użyć nowej specyfikacji klastra. Uruchamianie projektów w istniejących klastrach nie jest obsługiwane.
Korzystanie z aparatu SparkR
Aby można było użyć platformy SparkR w uruchomieniu projektu MLflow, kod projektu musi najpierw zainstalować i zaimportować aparat SparkR w następujący sposób:
if (file.exists("/databricks/spark/R/pkg")) {
install.packages("/databricks/spark/R/pkg", repos = NULL)
} else {
install.packages("SparkR")
}
library(SparkR)
Projekt może następnie zainicjować sesję platformy SparkR i używać aparatu SparkR w zwykły sposób:
sparkR.session()
...
Przykład
W tym przykładzie pokazano, jak utworzyć eksperyment, uruchomić projekt samouczka MLflow w klastrze usługi Azure Databricks, wyświetlić dane wyjściowe uruchomienia zadania i wyświetlić przebieg w eksperymencie.
Wymagania
- Zainstaluj platformę MLflow przy użyciu polecenia
pip install mlflow
. - Zainstaluj i skonfiguruj interfejs wiersza polecenia usługi Databricks. Mechanizm uwierzytelniania interfejsu wiersza polecenia usługi Databricks jest wymagany do uruchamiania zadań w klastrze usługi Azure Databricks.
Krok 1. Tworzenie eksperymentu
W obszarze roboczym wybierz pozycję Utwórz > eksperyment MLflow.
W polu Nazwa wprowadź wartość
Tutorial
.Kliknij przycisk Utwórz. Zanotuj identyfikator eksperymentu. W tym przykładzie jest to
14622565
.
Krok 2. Uruchamianie projektu samouczka MLflow
Poniższe kroki umożliwiają skonfigurowanie zmiennej środowiskowej MLFLOW_TRACKING_URI
i uruchomienie projektu, zarejestrowanie parametrów trenowania, metryk i wytrenowanego modelu w eksperymencie zanotowanym w poprzednim kroku:
Ustaw zmienną
MLFLOW_TRACKING_URI
środowiskową na obszar roboczy usługi Azure Databricks.export MLFLOW_TRACKING_URI=databricks
Uruchom projekt samouczka MLflow, wytrenuj model wina. Zastąp
<experiment-id>
element identyfikatorem eksperymentu zanotowany w poprzednim kroku.mlflow run https://github.com/mlflow/mlflow#examples/sklearn_elasticnet_wine -b databricks --backend-config cluster-spec.json --experiment-id <experiment-id>
=== Fetching project from https://github.com/mlflow/mlflow#examples/sklearn_elasticnet_wine into /var/folders/kc/l20y4txd5w3_xrdhw6cnz1080000gp/T/tmpbct_5g8u === === Uploading project to DBFS path /dbfs/mlflow-experiments/<experiment-id>/projects-code/16e66ccbff0a4e22278e4d73ec733e2c9a33efbd1e6f70e3c7b47b8b5f1e4fa3.tar.gz === === Finished uploading project to /dbfs/mlflow-experiments/<experiment-id>/projects-code/16e66ccbff0a4e22278e4d73ec733e2c9a33efbd1e6f70e3c7b47b8b5f1e4fa3.tar.gz === === Running entry point main of project https://github.com/mlflow/mlflow#examples/sklearn_elasticnet_wine on Databricks === === Launched MLflow run as Databricks job run with ID 8651121. Getting run status page URL... === === Check the run's status at https://<databricks-instance>#job/<job-id>/run/1 ===
Skopiuj adres URL
https://<databricks-instance>#job/<job-id>/run/1
w ostatnim wierszu danych wyjściowych przebiegu MLflow.
Krok 3. Wyświetlanie uruchomienia zadania usługi Azure Databricks
Otwórz adres URL skopiowany w poprzednim kroku w przeglądarce, aby wyświetlić dane wyjściowe uruchomienia zadania usługi Azure Databricks:
Krok 4. Wyświetlanie szczegółów przebiegu eksperymentu i platformy MLflow
Przejdź do eksperymentu w obszarze roboczym usługi Azure Databricks.
Kliknij eksperyment.
Aby wyświetlić szczegóły przebiegu, kliknij link w kolumnie Date (Data).
Dzienniki z przebiegu można wyświetlić, klikając link Dzienniki w polu Dane wyjściowe zadania.
Zasobów
Aby zapoznać się z przykładowymi projektami MLflow, zobacz bibliotekę aplikacji MLflow zawierającą repozytorium gotowych do uruchomienia projektów mających na celu ułatwienie uwzględnienia funkcji uczenia maszynowego w kodzie.