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
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto. Wypróbuj bezpłatną lub płatną wersję usługi Azure Machine Learning.
- Obszar roboczy usługi Azure Machine Learning.
- Zestaw AZURE Machine Learning SDK w wersji 2 dla języka Python.
- Interfejs wiersza polecenia usługi Azure Machine Learning w wersji 2.
Ponadto należy wykonać następujące kroki:
- Zainstaluj interfejs wiersza polecenia platformy Azure i rozszerzenie ml do interfejsu wiersza polecenia platformy Azure. Aby uzyskać więcej informacji, zobacz Instalowanie, konfigurowanie i używanie interfejsu wiersza polecenia (wersja 2).
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 custom
mlflow
.
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.
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:
- Parametr
type
; czy model jest elementemmlflow_model
,custom_model
czytriton_model
. - 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.