Śledzenie modeli uczenia maszynowego za pomocą platformy MLflow i usługi Azure Machine Learning
DOTYCZY: Zestaw SDK języka Python w wersji 1
W tym artykule dowiesz się, jak włączyć śledzenie MLflow w celu połączenia usługi Azure Machine Learning jako zaplecza eksperymentów MLflow .
MLflow to biblioteka typu open source do zarządzania cyklem życia eksperymentów uczenia maszynowego. MLflow Tracking to składnik platformy MLflow, który rejestruje i śledzi metryki przebiegu trenowania i artefakty modelu, niezależnie od środowiska eksperymentu — lokalnie na komputerze, na zdalnym obiekcie docelowym obliczeniowym, maszynie wirtualnej lub klastrze usługi Azure Databricks.
Zobacz MLflow i Azure Machine Learning , aby zapoznać się ze wszystkimi obsługiwanymi funkcjami MLflow i Azure Machine Learning, w tym obsługą projektu MLflow (wersja zapoznawcza) i wdrażaniem modelu.
Napiwek
Jeśli chcesz śledzić eksperymenty uruchomione w usłudze Azure Databricks lub Azure Synapse Analytics, zobacz dedykowane artykuły Track Azure Databricks ML experiments with MLflow and Azure Machine Learning or Track Azure Synapse Analytics ML experiments with MLflow and Azure Machine Learning (Śledzenie eksperymentów usługi Azure Synapse Analytics ML przy użyciu platform MLflow i Azure Machine Learning).
Uwaga
Informacje przedstawione w tym dokumencie są przeznaczone głównie dla analityków danych i deweloperów, którzy chcą monitorować proces trenowania modelu. Jeśli jesteś administratorem zainteresowany monitorowaniem użycia zasobów i zdarzeń z usługi Azure Machine Learning, takich jak limity przydziału, ukończone zadania szkoleniowe lub ukończone wdrożenia modelu, zobacz Monitorowanie usługi Azure Machine Learning.
Wymagania wstępne
Zainstaluj pakiet
mlflow
.- Możesz użyć MLflow Skinny , który jest lekkim pakietem MLflow bez magazynu SQL, serwera, interfejsu użytkownika lub zależności nauki o danych. Jest to zalecane dla użytkowników, którzy potrzebują głównie możliwości śledzenia i rejestrowania bez importowania pełnego zestawu funkcji MLflow, w tym wdrożeń.
Zainstaluj pakiet
azureml-mlflow
.Tworzenie obszaru roboczego usługi Azure Machine Learning.
Zainstaluj i skonfiguruj interfejs wiersza polecenia usługi Azure Machine Learning (wersja 1) i upewnij się, że zainstalowano rozszerzenie ml.
Ważne
Niektóre polecenia interfejsu wiersza polecenia platformy Azure w tym artykule używają
azure-cli-ml
rozszerzenia , lub w wersji 1 dla usługi Azure Machine Learning. Obsługa rozszerzenia w wersji 1 zakończy się 30 września 2025 r. Możesz zainstalować rozszerzenie v1 i używać go do tej daty.Zalecamy przejście do
ml
rozszerzenia , lub w wersji 2 przed 30 września 2025 r. Aby uzyskać więcej informacji na temat rozszerzenia w wersji 2, zobacz Rozszerzenie interfejsu wiersza polecenia usługi Azure Machine Learning i zestaw Python SDK w wersji 2.Instalowanie i konfigurowanie zestawu AZURE Machine Learning SDK dla języka Python.
Śledzenie przebiegów z komputera lokalnego lub zdalnego przetwarzania
Śledzenie przy użyciu biblioteki MLflow z usługą Azure Machine Learning umożliwia przechowywanie zarejestrowanych metryk i przebiegów artefaktów wykonanych na maszynie lokalnej w obszarze roboczym usługi Azure Machine Learning.
Konfigurowanie środowiska śledzenia
Aby śledzić przebieg, który nie jest uruchomiony w środowisku obliczeniowym usługi Azure Machine Learning (od tej pory nazywanym "lokalnymi obliczeniami"), musisz wskazać lokalne zasoby obliczeniowe identyfikatorowi URI śledzenia usługi Azure Machine Learning MLflow.
Uwaga
W przypadku uruchamiania w usłudze Azure Compute (Azure Notebooks, notesy Jupyter Notebooks hostowane w wystąpieniach obliczeniowych platformy Azure lub klastrach obliczeniowych) nie trzeba konfigurować identyfikatora URI śledzenia. Jest ona automatycznie konfigurowana.
- Korzystanie z zestawu Azure Machine Learning SDK
- Używanie zmiennej środowiskowej
- Tworzenie identyfikatora URI śledzenia MLflow
DOTYCZY: Zestaw SDK języka Python w wersji 1
Identyfikator URI śledzenia usługi Azure Machine Learning MLflow można uzyskać przy użyciu zestawu Azure Machine Learning SDK w wersji 1 dla języka Python. Upewnij się, że biblioteka azureml-sdk
jest zainstalowana w używanym klastrze. Poniższy przykład pobiera unikatowy identyfikator URI śledzenia MLFLow skojarzony z obszarem roboczym. Następnie metoda set_tracking_uri()
wskazuje identyfikator URI śledzenia MLflow na ten identyfikator URI.
Za pomocą pliku konfiguracji obszaru roboczego:
from azureml.core import Workspace import mlflow ws = Workspace.from_config() mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())
Napiwek
Plik konfiguracji obszaru roboczego można pobrać, wykonując następujące czynności:
- Przejdź do usługi Azure Machine Learning Studio
- Kliknij prawy róg strony —> pobierz plik konfiguracji.
- Zapisz plik
config.json
w tym samym katalogu, nad którym pracujesz.
Przy użyciu identyfikatora subskrypcji, nazwy grupy zasobów i nazwy obszaru roboczego:
from azureml.core import Workspace import mlflow #Enter details of your Azure Machine Learning workspace subscription_id = '<SUBSCRIPTION_ID>' resource_group = '<RESOURCE_GROUP>' workspace_name = '<AZUREML_WORKSPACE_NAME>' ws = Workspace.get(name=workspace_name, subscription_id=subscription_id, resource_group=resource_group) mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())
Ustawianie nazwy eksperymentu
Wszystkie przebiegi platformy MLflow są rejestrowane w aktywnym eksperymencie. Domyślnie przebiegi są rejestrowane w eksperymencie o nazwie Default
, który jest automatycznie tworzony. Aby skonfigurować eksperyment, na którym chcesz pracować, użyj polecenia mlflow.set_experiment()
MLflow .
experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)
Napiwek
Podczas przesyłania zadań przy użyciu zestawu SDK usługi Azure Machine Learning można ustawić nazwę eksperymentu przy użyciu właściwości experiment_name
podczas przesyłania. Nie trzeba go konfigurować na skry skrycie szkoleniowym.
Uruchamianie przebiegu trenowania
Po ustawieniu nazwy eksperymentu MLflow możesz rozpocząć przebieg trenowania za pomocą polecenia start_run()
. Następnie użyj polecenia log_metric()
, aby aktywować interfejs API rejestrowania platformy MLflow i rozpocząć rejestrowanie metryk przebiegu trenowania.
import os
from random import random
with mlflow.start_run() as mlflow_run:
mlflow.log_param("hello_param", "world")
mlflow.log_metric("hello_metric", random())
os.system(f"echo 'hello world' > helloworld.txt")
mlflow.log_artifact("helloworld.txt")
Aby uzyskać szczegółowe informacje na temat rejestrowania metryk, parametrów i artefaktów w przebiegu przy użyciu biblioteki MLflow, zobacz Jak rejestrować i wyświetlać metryki.
Śledzenie przebiegów uruchomionych w usłudze Azure Machine Learning
DOTYCZY: Zestaw SDK języka Python w wersji 1
Zdalne przebiegi (zadania) umożliwiają trenowanie modeli w bardziej niezawodny i powtarzalny sposób. Mogą również korzystać z bardziej zaawansowanych obliczeń, takich jak klastry obliczeniowe usługi Machine Learning. Aby dowiedzieć się więcej o różnych opcjach obliczeniowych, zobacz Use compute targets for model training (Używanie docelowych obiektów obliczeniowych na potrzeby trenowania modelu).
Podczas przesyłania przebiegów usługa Azure Machine Learning automatycznie konfiguruje rozwiązanie MLflow do pracy z obszarem roboczym, w którym działa przebieg. Oznacza to, że nie ma potrzeby konfigurowania identyfikatora URI śledzenia MLflow. Ponadto eksperymenty są automatycznie nazwane na podstawie szczegółów przesyłania eksperymentu.
Ważne
Podczas przesyłania zadań szkoleniowych do usługi Azure Machine Learning nie musisz konfigurować identyfikatora URI śledzenia MLflow w logice trenowania, ponieważ jest już skonfigurowany. Nie musisz konfigurować nazwy eksperymentu w swojej procedurze treningowej.
Tworzenie procedury trenowania
Najpierw należy utworzyć src
podkatalog i utworzyć plik z kodem treningowym train.py
w pliku w podkatalogu src
. Cały kod trenowania przejdzie do podkatalogu src
, w tym train.py
.
Kod szkoleniowy jest pobierany z tego przykładu MLflow w repozytorium przykładu usługi Azure Machine Learning.
Skopiuj ten kod do pliku:
# imports
import os
import mlflow
from random import random
# define functions
def main():
mlflow.log_param("hello_param", "world")
mlflow.log_metric("hello_metric", random())
os.system(f"echo 'hello world' > helloworld.txt")
mlflow.log_artifact("helloworld.txt")
# run functions
if __name__ == "__main__":
# run main function
main()
Konfigurowanie eksperymentu
Aby przesłać eksperyment do usługi Azure Machine Learning, musisz użyć języka Python. W notesie lub pliku języka Python skonfiguruj środowisko obliczeniowe i środowisko uruchamiania trenowania przy użyciu Environment
klasy .
from azureml.core import Environment
from azureml.core.conda_dependencies import CondaDependencies
env = Environment(name="mlflow-env")
# Specify conda dependencies with scikit-learn and temporary pointers to mlflow extensions
cd = CondaDependencies.create(
conda_packages=["scikit-learn", "matplotlib"],
pip_packages=["azureml-mlflow", "pandas", "numpy"]
)
env.python.conda_dependencies = cd
Następnie skonstruuj ScriptRunConfig
obliczenia zdalne jako docelowy obiekt obliczeniowy.
from azureml.core import ScriptRunConfig
src = ScriptRunConfig(source_directory="src",
script=training_script,
compute_target="<COMPUTE_NAME>",
environment=env)
W przypadku tej konfiguracji uruchamiania obliczeniowego i trenowania użyj Experiment.submit()
metody , aby przesłać przebieg. Ta metoda automatycznie ustawia identyfikator URI śledzenia MLflow i kieruje rejestrowanie z biblioteki MLflow do obszaru roboczego.
from azureml.core import Experiment
from azureml.core import Workspace
ws = Workspace.from_config()
experiment_name = "experiment_with_mlflow"
exp = Experiment(workspace=ws, name=experiment_name)
run = exp.submit(src)
Wyświetlanie metryk i artefaktów w obszarze roboczym
Metryki i artefakty z rejestrowania MLflow są śledzone w obszarze roboczym. Aby wyświetlić je w dowolnym momencie, przejdź do obszaru roboczego i znajdź eksperyment według nazwy w obszarze roboczym w usłudze Azure Machine Learning Studio. Możesz też uruchomić poniższy kod.
Pobieranie metryki uruchamiania przy użyciu biblioteki MLflow get_run().
from mlflow.tracking import MlflowClient
# Use MlFlow to retrieve the run that was just completed
client = MlflowClient()
run_id = mlflow_run.info.run_id
finished_mlflow_run = MlflowClient().get_run(run_id)
metrics = finished_mlflow_run.data.metrics
tags = finished_mlflow_run.data.tags
params = finished_mlflow_run.data.params
print(metrics,tags,params)
Aby wyświetlić artefakty przebiegu, możesz użyć MlFlowClient.list_artifacts()
client.list_artifacts(run_id)
Aby pobrać artefakt do bieżącego katalogu, możesz użyć MLFlowClient.download_artifacts()
client.download_artifacts(run_id, "helloworld.txt", ".")
Aby uzyskać więcej informacji na temat pobierania informacji z eksperymentów i przebiegów w usłudze Azure Machine Learning przy użyciu widoku MLflow Zarządzanie eksperymentami i przebiegami za pomocą platformy MLflow.
Porównanie i wykonywanie zapytań
Porównaj i wykonaj zapytanie dotyczące wszystkich przebiegów platformy MLflow w obszarze roboczym usługi Azure Machine Learning przy użyciu następującego kodu. Dowiedz się więcej o sposobie wykonywania zapytań za pomocą biblioteki MLflow.
from mlflow.entities import ViewType
all_experiments = [exp.experiment_id for exp in MlflowClient().list_experiments()]
query = "metrics.hello_metric > 0"
runs = mlflow.search_runs(experiment_ids=all_experiments, filter_string=query, run_view_type=ViewType.ALL)
runs.head(10)
Automatyczne rejestrowanie
Dzięki usłudze Azure Machine Learning i MLFlow użytkownicy mogą rejestrować metryki, parametry modelu i artefakty modelu automatycznie podczas trenowania modelu. Obsługiwane są różne popularne biblioteki uczenia maszynowego.
Aby włączyć automatyczne rejestrowanie , wstaw następujący kod przed kodem treningowym:
mlflow.autolog()
Dowiedz się więcej o automatycznym rejestrowaniu za pomocą biblioteki MLflow.
Zarządzanie modelami
Zarejestruj i śledź modele w rejestrze modeli usługi Azure Machine Learning, który obsługuje rejestr modeli MLflow. Modele usługi Azure Machine Learning są dopasowane do schematu modelu MLflow, co ułatwia eksportowanie i importowanie tych modeli w różnych przepływach pracy. Metadane związane z platformą MLflow, takie jak identyfikator przebiegu, są również śledzone przy użyciu zarejestrowanego modelu w celu śledzenia. Użytkownicy mogą przesyłać przebiegi szkoleniowe, rejestrować i wdrażać modele utworzone na podstawie przebiegów platformy MLflow.
Jeśli chcesz wdrożyć i zarejestrować model gotowy do produkcji w jednym kroku, zobacz Wdrażanie i rejestrowanie modeli MLflow.
Aby zarejestrować i wyświetlić model z przebiegu, wykonaj następujące kroki:
Po zakończeniu przebiegu wywołaj metodę
register_model()
.# the model folder produced from a run is registered. This includes the MLmodel file, model.pkl and the conda.yaml. model_path = "model" model_uri = 'runs:/{}/{}'.format(run_id, model_path) mlflow.register_model(model_uri,"registered_model_name")
Wyświetl zarejestrowany model w obszarze roboczym za pomocą usługi Azure Machine Learning Studio.
W poniższym przykładzie zarejestrowany model
my-model
ma oznaczone metadane śledzenia MLflow.Wybierz kartę Artefakty , aby wyświetlić wszystkie pliki modelu, które są zgodne ze schematem modelu MLflow (conda.yaml, MLmodel, model.pkl).
Wybierz pozycję MLmodel, aby wyświetlić plik MLmodel wygenerowany przez przebieg.
Czyszczenie zasobów
Jeśli nie planujesz używania zarejestrowanych metryk i artefaktów w obszarze roboczym, możliwość ich usunięcia indywidualnie jest obecnie niedostępna. Zamiast tego usuń grupę zasobów zawierającą konto magazynu i obszar roboczy, aby nie ponosić żadnych opłat:
W witrynie Azure Portal na końcu z lewej strony wybierz pozycję Grupy zasobów.
Wybierz utworzoną grupę zasobów z listy.
Wybierz pozycję Usuń grupę zasobów.
Wpisz nazwę grupy zasobów. Następnie wybierz Usuń.
Przykładowe notesy
Notesy MLflow z usługą Azure Machine Learning pokazują i rozszerzają koncepcje przedstawione w tym artykule. Zobacz również repozytorium oparte na społeczności, AzureML-Examples.
Następne kroki
- Wdrażanie modeli za pomocą biblioteki MLflow.
- Monitorowanie modeli produkcyjnych pod kątem dryfu danych.
- Śledzenie przebiegów usługi Azure Databricks za pomocą biblioteki MLflow.
- Zarządzanie modelami.