Eseguire progetti MLflow in Azure Databricks
Un progetto MLflow è un formato per la creazione di pacchetti di codice di data science in modo riutilizzabile e riproducibile. Il componente MLflow Projects include un'API e strumenti da riga di comando per l'esecuzione di progetti, che si integrano anche con il componente Rilevamento per registrare automaticamente i parametri e il commit Git del codice sorgente per la riproducibilità.
Questo articolo descrive il formato di un progetto MLflow e come eseguire un progetto MLflow in remoto nei cluster Azure Databricks usando l'interfaccia della riga di comando di MLflow, che semplifica la scalabilità verticale del codice di data science.
Formato del progetto MLflow
Qualsiasi directory locale o repository Git può essere considerato come un progetto MLflow. Le convenzioni seguenti definiscono un progetto:
- Il nome del progetto è il nome della directory.
- L'ambiente software è specificato in
python_env.yaml
, se presente. Se non è presente alcunpython_env.yaml
file, MLflow usa un ambiente virtualenv contenente solo Python (in particolare, la versione più recente di Python disponibile per virtualenv) durante l'esecuzione del progetto. - Qualsiasi
.py
file o.sh
nel progetto può essere un punto di ingresso, senza parametri dichiarati in modo esplicito. Quando si esegue un comando di questo tipo con un set di parametri, MLflow passa ogni parametro nella riga di comando usando--key <value>
la sintassi.
È possibile specificare altre opzioni aggiungendo un file MLproject, ovvero un file di testo nella sintassi YAML. Un file MLproject di esempio è simile al seguente:
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}"
Per Databricks Runtime 13.0 ML e versioni successive, MLflow Projects non può essere eseguito correttamente all'interno di un cluster del tipo di processo Databricks. Per eseguire la migrazione di progetti MLflow esistenti in Databricks Runtime 13.0 ML e versioni successive, vedere Formato del progetto di processo Spark di MLflow Databricks.
Formato del progetto processo Spark di MLflow Databricks
Il progetto di processo Spark di MLflow Databricks è un nuovo tipo di progetto MLflow introdotto in MLflow 2.14. Questo tipo di progetto supporta l'esecuzione di progetti MLflow dall'interno di un cluster processi Spark e può essere eseguito solo usando il back-end "databricks". Di seguito è riportato un esempio del MLproject
file per questo nuovo tipo di progetto:
name: My Project
databricks_spark_job:
python_file: "train.py" # the file which is the entry point file to execute
parameters: ["param1", "param2"] # a list of parameter strings
python_libraries: # dependencies required by this project
- mlflow==2.4.1 # MLflow dependency is required
- scikit-learn
Il progetto di processo Spark di Databricks non supporta la specifica delle sezioni seguenti nel file MLproject: entry_points
, docker_env
, python_env
o conda_env
. Le dipendenze per il progetto possono essere specificate nelpython_libraries
campo della databricks_spark_job
sezione . Le versioni di Python non possono essere personalizzate con questo tipo di progetto. L'ambiente in esecuzione deve usare l'ambiente di runtime del driver Spark principale per l'esecuzione in cluster di processi che usano Databricks Runtime 13.0 o versione successiva. Analogamente, tutte le dipendenze Python definite come necessarie per il progetto devono essere installate come dipendenze del cluster Databricks. Questo comportamento è diverso dai comportamenti di esecuzione del progetto precedenti in cui le librerie devono essere installate in un ambiente separato.
Eseguire un progetto MLflow
Per eseguire un progetto MLflow in un cluster Azure Databricks nell'area di lavoro predefinita, usare il comando :
mlflow run <uri> -b databricks --backend-config <json-new-cluster-spec>
dove <uri>
è un URI o una cartella del repository Git contenente un progetto MLflow ed <json-new-cluster-spec>
è un documento JSON contenente una struttura new_cluster. L'URI Git deve essere nel formato : https://github.com/<repo>#<project-folder>
.
Una specifica del cluster di esempio è:
{
"spark_version": "7.3.x-scala2.12",
"num_workers": 1,
"node_type_id": "Standard_DS3_v2"
}
Se è necessario installare librerie nel ruolo di lavoro, usare il formato "specifica del cluster". Si noti che i file wheel python devono essere caricati in DBFS e specificati come pypi
dipendenze. Ad esempio:
{
"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"
}
}
]
}
Importante
.egg
le dipendenze e.jar
non sono supportate per i progetti MLflow.- L'esecuzione per i progetti MLflow con ambienti Docker non è supportata.
- È necessario usare una nuova specifica del cluster quando si esegue un progetto MLflow in Databricks. L'esecuzione di progetti su cluster esistenti non è supportata.
Uso di SparkR
Per usare SparkR in un'esecuzione del progetto MLflow, il codice del progetto deve prima installare e importare SparkR come indicato di seguito:
if (file.exists("/databricks/spark/R/pkg")) {
install.packages("/databricks/spark/R/pkg", repos = NULL)
} else {
install.packages("SparkR")
}
library(SparkR)
Il progetto può quindi inizializzare una sessione SparkR e usare SparkR come di consueto:
sparkR.session()
...
Esempio
Questo esempio illustra come creare un esperimento, eseguire il progetto di esercitazione MLflow in un cluster Azure Databricks, visualizzare l'output dell'esecuzione del processo e visualizzare l'esecuzione nell'esperimento.
Requisiti
- Installare MLflow usando
pip install mlflow
. - Installare e configurare l'interfaccia della riga di comando di Databricks. Il meccanismo di autenticazione dell'interfaccia della riga di comando di Databricks è necessario per eseguire processi in un cluster di Azure Databricks.
Passaggio 1: Creare un esperimento
Nell'area di lavoro selezionare Crea > esperimento MLflow.
Nel campo Nome immettere
Tutorial
.Cliccare su Crea. Prendere nota dell'ID esperimento. In questo esempio si tratta di
14622565
.
Passaggio 2: Eseguire il progetto di esercitazione di MLflow
I passaggi seguenti configurano la MLFLOW_TRACKING_URI
variabile di ambiente ed eseguono il progetto, registrano i parametri di training, le metriche e il modello sottoposto a training nell'esperimento annotato nel passaggio precedente:
Impostare la
MLFLOW_TRACKING_URI
variabile di ambiente sull'area di lavoro di Azure Databricks.export MLFLOW_TRACKING_URI=databricks
Eseguire il progetto di esercitazione MLflow ed eseguire il training di un modello di vino. Sostituire
<experiment-id>
con l'ID esperimento annotato nel passaggio precedente.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 ===
Copiare l'URL
https://<databricks-instance>#job/<job-id>/run/1
nell'ultima riga dell'output dell'esecuzione di MLflow.
Passaggio 3: Visualizzare l'esecuzione del processo di Azure Databricks
Aprire l'URL copiato nel passaggio precedente in un browser per visualizzare l'output dell'esecuzione del processo di Azure Databricks:
Passaggio 4: Visualizzare i dettagli dell'esperimento e dell'esecuzione di MLflow
Passare all'esperimento nell'area di lavoro di Azure Databricks.
Fare clic sull'esperimento.
Per visualizzare i dettagli dell'esecuzione, fare clic su un collegamento nella colonna Data.
È possibile visualizzare i log dall'esecuzione facendo clic sul collegamento Log nel campo Output processo.
Risorse
Per alcuni progetti MLflow di esempio, vedere la libreria di app MLflow, che contiene un repository di progetti pronti per l'esecuzione volti a semplificare l'inclusione delle funzionalità di Machine Learning nel codice.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per