Praca z modelami w usłudze Azure Machine Learning

DOTYCZY:Rozszerzenie uczenia maszynowego platformy Azure w wersji 2 (bieżąca)Zestaw PYTHON SDK azure-ai-ml w wersji 2 (bieżąca)

Usługa Azure Machine Learning umożliwia pracę z różnymi typami modeli. W tym artykule dowiesz się, jak używać usługi Azure Machine Learning do pracy z różnymi typami modeli, takimi jak niestandardowe, MLflow i Triton. Dowiesz się również, jak zarejestrować model z różnych lokalizacji oraz jak używać zestawu SDK usługi Azure Machine Learning, interfejsu użytkownika i interfejsu wiersza polecenia usługi Azure Machine Learning do zarządzania modelami.

Porada

Jeśli masz utworzone zasoby modelu, które korzystają z zestawu SDK/interfejsu wiersza polecenia w wersji 1, nadal możesz ich używać z zestawem SDK/interfejsem wiersza polecenia w wersji 2. Zapewniana jest pełna zgodność z poprzednimi wersjami. Wszystkie modele zarejestrowane w zestawie SDK w wersji 1 mają przypisany typ custom.

Wymagania wstępne

Ponadto należy wykonać następujące kroki:

Obsługiwane ścieżki

Po podaniu modelu, który chcesz zarejestrować, należy określić path parametr wskazujący dane lub lokalizację zadania. Poniżej znajduje się tabela przedstawiająca różne lokalizacje danych obsługiwane w usłudze Azure Machine Learning i przykłady parametru path :

Lokalizacja Przykłady
Ścieżka na komputerze lokalnym mlflow-model/model.pkl
Ścieżka w magazynie danych usługi Azure Machine Learning azureml://datastores/<datastore-name>/paths/<path_on_datastore>
Ścieżka z zadania usługi Azure Machine Learning azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
Ścieżka z zadania MLflow runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
Ścieżka z zasobu modelu w obszarze roboczym usługi Azure Machine Learning azureml:<model-name>:<version>
Ścieżka z zasobu modelu w usłudze Azure Machine Learning Registry azureml://registries/<registry-name>/models/<model-name>/versions/<version>

Obsługiwane tryby

Po uruchomieniu zadania z danymi wejściowymi/wyjściowymi modelu można określić tryb — na przykład niezależnie od tego, czy model ma być instalowany tylko do odczytu, czy pobierany do docelowego obiektu obliczeniowego. W poniższej tabeli przedstawiono możliwe tryby dla różnych kombinacji typów/trybu/wejścia/wyjścia:

Typ Dane wejściowe/wyjściowe upload download ro_mount rw_mount direct
Plik custom Dane wejściowe
custom Folder Dane wejściowe
mlflow Dane wejściowe
Plik custom Dane wyjściowe
custom Folder Dane wyjściowe
mlflow Dane wyjściowe

Postępuj zgodnie z instrukcjami w notesach Jupyter Notebook

Możesz skorzystać z tego przykładu w Jupyter Notebook. W repozytorium azureml-examples otwórz notes: model.ipynb.

Tworzenie modelu w rejestrze modeli

Rejestracja modelu umożliwia przechowywanie i przechowywanie wersji modeli w chmurze platformy Azure w obszarze roboczym. Rejestr modeli ułatwia organizowanie i śledzenie wytrenowanych modeli.

Fragmenty kodu w tej sekcji obejmują następujące zagadnienia:

  • Zarejestruj model jako zasób w usłudze Machine Learning przy użyciu interfejsu wiersza polecenia.
  • Zarejestruj model jako zasób w usłudze Machine Learning przy użyciu zestawu SDK.
  • Zarejestruj model jako zasób w usłudze Machine Learning przy użyciu interfejsu użytkownika.

Te fragmenty kodu używają i custommlflow.

  • custom jest typem odwołującym się do pliku lub folderu modelu trenowanego przy użyciu niestandardowego standardu, który nie jest obecnie obsługiwany przez usługę Azure Machine Learning.
  • mlflow to typ, który odwołuje się do modelu wytrenowanego za pomocą metody mlflow. Wytrenowane modele MLflow znajdują się w folderze zawierającym plik MLmodel , plik modelu , plik zależności conda i plik requirements.txt .

Nawiązywanie połączenia z obszarem roboczym

Najpierw połączmy się z obszarem roboczym usługi Azure Machine Learning, w którym będziemy pracować.

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Rejestrowanie modelu jako elementu zawartości w usłudze Machine Learning przy użyciu interfejsu wiersza polecenia

Użyj poniższych kart, aby wybrać lokalizację modelu.

$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
name: local-file-example
path: mlflow-model/model.pkl
description: Model created from local file.
az ml model create -f <file-name>.yml

Pełny przykład można znaleźć w modelu YAML.

Rejestrowanie modelu jako elementu zawartości w usłudze Machine Learning przy użyciu zestawu SDK

Użyj poniższych kart, aby wybrać lokalizację modelu.

from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes

file_model = Model(
    path="mlflow-model/model.pkl",
    type=AssetTypes.CUSTOM_MODEL,
    name="local-file-example",
    description="Model created from local file.",
)
ml_client.models.create_or_update(file_model)

Rejestrowanie modelu jako elementu zawartości w usłudze Machine Learning przy użyciu interfejsu użytkownika

Aby utworzyć model w usłudze Machine Learning, w interfejsie użytkownika otwórz stronę Modele . Wybierz pozycję Zarejestruj model i wybierz lokalizację modelu. Wypełnij wymagane pola, a następnie wybierz pozycję Zarejestruj.

Zrzut ekranu przedstawiający interfejs użytkownika umożliwiający zarejestrowanie modelu.


Zarządzanie modelami

Zestaw SDK i interfejs wiersza polecenia (wersja 2) umożliwiają również zarządzanie cyklem życia zasobów modelu usługi Azure Machine Learning.

Lista

Wyświetl listę wszystkich modeli w obszarze roboczym:

az ml model list

Wyświetl listę wszystkich wersji modelu pod daną nazwą:

az ml model list --name run-model-example

Pokaż

Pobierz szczegóły określonego modelu:

az ml model show --name run-model-example --version 1

Aktualizacja

Aktualizowanie właściwości modyfikowalnego określonego modelu:

az ml model update --name  run-model-example --version 1 --set description="This is an updated description." --set tags.stage="Prod"

Ważne

Tylko w przypadku modelu description i tags można je zaktualizować. Wszystkie inne właściwości są niezmienne; jeśli musisz zmienić dowolną z tych właściwości, należy utworzyć nową wersję modelu.

Archiwum

Archiwizowanie modelu spowoduje ukrycie go domyślnie przed zapytaniami listy (az ml model list). Nadal możesz odwoływać się do zarchiwizowanego modelu i używać go w przepływach pracy. Możesz zarchiwizować wszystkie wersje modelu lub tylko określoną wersję.

Jeśli nie określisz wersji, wszystkie wersje modelu w ramach tej nazwy zostaną zarchiwizowane. Jeśli utworzysz nową wersję modelu w zarchiwizowanym kontenerze modelu, ta nowa wersja zostanie automatycznie ustawiona jako zarchiwizowana.

Zarchiwizuj wszystkie wersje modelu:

az ml model archive --name run-model-example

Zarchiwizuj określoną wersję modelu:

az ml model archive --name run-model-example --version 1

Używanie modelu do trenowania

Zestaw SDK i interfejs wiersza polecenia (wersja 2) umożliwiają również używanie modelu w zadaniu trenowania jako danych wejściowych lub wyjściowych.

Używanie modelu jako danych wejściowych w zadaniu

Utwórz plik YAML specyfikacji zadania (<file-name>.yml). Określ w inputs sekcji zadania:

  1. Parametr type; czy model jest elementem mlflow_model,custom_model czy triton_model.
  2. Miejsce path , w którym znajdują się dane, może być dowolną ze ścieżek opisanych w sekcji Obsługiwane ścieżki .
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json

# Possible Paths for models:
# AzureML Datastore: azureml://datastores/<datastore-name>/paths/<path_on_datastore>
# MLflow run: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
# Job: azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
# Model Asset: azureml:<my_model>:<version>

command: |
  ls ${{inputs.my_model}}
inputs:
  my_model:
    type: mlflow_model # List of all model types here: https://learn.microsoft.com/azure/machine-learning/reference-yaml-model#yaml-syntax
    path: ../../assets/model/mlflow-model
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest

Następnie uruchom polecenie w interfejsie wiersza polecenia

az ml job create -f <file-name>.yml

Aby zapoznać się z kompletnym przykładem, zobacz repozytorium GitHub modelu.

Używanie modelu jako danych wyjściowych w zadaniu

W zadaniu możesz napisać model do magazynu opartego na chmurze przy użyciu danych wyjściowych.

Utwórz plik YAML specyfikacji zadania (<file-name>.yml), z outputs sekcją wypełniną typem i ścieżką, do której chcesz zapisać dane:

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json

# Possible Paths for Model:
# Local path: mlflow-model/model.pkl
# AzureML Datastore: azureml://datastores/<datastore-name>/paths/<path_on_datastore>
# MLflow run: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
# Job: azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
# Model Asset: azureml:<my_model>:<version>

code: src
command: >-
  python hello-model-as-output.py 
  --input_model ${{inputs.input_model}} 
  --custom_model_output ${{outputs.output_folder}}
inputs:
  input_model: 
    type: mlflow_model # mlflow_model,custom_model, triton_model
    path: ../../assets/model/mlflow-model
outputs:
  output_folder: 
    type: custom_model # mlflow_model,custom_model, triton_model
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest

Następnie utwórz zadanie przy użyciu interfejsu wiersza polecenia:

az ml job create --file <file-name>.yml

Aby zapoznać się z kompletnym przykładem, zobacz repozytorium GitHub modelu.

Następne kroki