Praca z zarejestrowanymi modelami w usłudze Azure Machine Learning
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)
Z tego artykułu dowiesz się, jak rejestrować modele i pracować z nimi w usłudze Azure Machine Learning przy użyciu:
- Interfejs użytkownika usługi Azure Machine Learning Studio.
- Interfejs wiersza polecenia usługi Azure Machine Learning w wersji 2.
- Zestaw SDK usługi Azure Machine Learning w wersji 2 języka Python.
Dowiedz się, jak odbywa się:
- Utwórz zarejestrowane modele w rejestrze modeli na podstawie plików lokalnych, magazynów danych lub danych wyjściowych zadania.
- Praca z różnymi typami modeli, takimi jak niestandardowe, MLflow i Triton.
- Używaj modeli jako danych wejściowych lub wyjściowych w zadaniach szkoleniowych.
- Zarządzanie cyklem życia zasobów modelu.
Rejestracja modelu
Rejestracja modelu umożliwia przechowywanie i przechowywanie wersji modeli w obszarze roboczym w chmurze platformy Azure. Rejestr modeli ułatwia organizowanie i śledzenie wytrenowanych modeli. Modele można rejestrować jako zasoby w usłudze Azure Machine Learning przy użyciu interfejsu wiersza polecenia platformy Azure, zestawu SDK języka Python lub interfejsu użytkownika usługi Machine Learning Studio.
Obsługiwane ścieżki
Aby zarejestrować model, należy określić ścieżkę wskazującą dane lub lokalizację zadania. W poniższej tabeli przedstawiono różne lokalizacje danych obsługiwane przez usługę Azure Machine Learning oraz składnię parametru path
:
Lokalizacja | Składnia |
---|---|
Komputer lokalny | <model-folder>/<model-filename> |
Magazyn danych usługi Azure Machine Learning | azureml://datastores/<datastore-name>/paths/<path_on_datastore> |
Zadanie usługi Azure Machine Learning | azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location> |
Zadanie MLflow | runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location> |
Zasób modelu w obszarze roboczym usługi Machine Learning | azureml:<model-name>:<version> |
Zasób modelu w rejestrze usługi Machine Learning | azureml://registries/<registry-name>/models/<model-name>/versions/<version> |
Obsługiwane tryby
W przypadku używania modeli dla danych wejściowych lub wyjściowych można określić jeden z następujących trybów. Można na przykład określić, czy model powinien być zainstalowany tylko do odczytu, czy pobrany do docelowego obiektu obliczeniowego.
ro_mount
: Zainstaluj dane w docelowym obiekcie obliczeniowym jako tylko do odczytu.rw_mount
: Odczyt-zapis zainstaluj dane.download
: pobierz dane do docelowego obiektu obliczeniowego.upload
: przekaż dane z docelowego obiektu obliczeniowego.direct
: przekaż identyfikator URI jako ciąg.
W poniższej tabeli przedstawiono dostępne opcje trybu dla różnych danych wejściowych i wyjściowych typu modelu.
Typ | upload |
download |
ro_mount |
rw_mount |
direct |
---|---|---|---|---|---|
custom dane wejściowe pliku |
|||||
custom dane wejściowe folderu |
✓ | ✓ | ✓ | ||
mlflow wkład |
✓ | ✓ | |||
custom dane wyjściowe pliku |
✓ | ✓ | ✓ | ||
custom dane wyjściowe folderu |
✓ | ✓ | ✓ | ||
mlflow wyjście |
✓ | ✓ | ✓ |
Wymagania wstępne
- Subskrypcja platformy Azure z bezpłatną lub płatną wersją usługi Azure Machine Learning. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
- Obszar roboczy usługi Azure Machine Learning.
Aby uruchomić przykłady kodu w tym artykule i pracować z interfejsem wiersza polecenia usługi Azure Machine Learning w wersji 2 lub zestawem SDK usługi Azure Machine Learning w wersji 2 języka Python, potrzebne są również następujące elementy:
Zainstalowany interfejs wiersza polecenia platformy Azure w wersji 2.38.0 lub nowszej.
W wersji 2 zainstalowanego
ml
rozszerzenia, uruchamiając następujące polecenie. Aby uzyskać więcej informacji, zobacz Instalowanie, konfigurowanie i używanie interfejsu wiersza polecenia (wersja 2).az extension add -n ml
Uwaga
Wersja 2 zapewnia pełną zgodność z poprzednimi wersjami. Zasoby modelu można nadal używać z zestawu SDK lub interfejsu wiersza polecenia w wersji 1. Wszystkie modele zarejestrowane w interfejsie wiersza polecenia lub zestawie SDK w wersji 1 mają przypisany typ custom
.
Rejestrowanie modelu przy użyciu interfejsu użytkownika programu Studio
Aby zarejestrować model przy użyciu interfejsu użytkownika usługi Azure Machine Learning Studio:
W obszarze roboczym w programie Studio wybierz pozycję Modele w obszarze nawigacji po lewej stronie.
Na stronie Lista modeli wybierz pozycję Zarejestruj i wybierz jedną z następujących lokalizacji z listy rozwijanej:
- Z plików lokalnych
- Z danych wyjściowych zadania
- Z magazynu danych
- Z plików lokalnych (na podstawie struktury)
Na pierwszym ekranie Rejestrowanie modelu :
- Przejdź do pliku lokalnego, magazynu danych lub danych wyjściowych zadania dla modelu.
- Wybierz typ modelu wejściowego: MLflow, Triton lub Nieokreślony.
Na ekranie Ustawienia modelu podaj nazwę i inne opcjonalne ustawienia zarejestrowanego modelu, a następnie wybierz pozycję Dalej.
Na ekranie Przegląd przejrzyj konfigurację, a następnie wybierz pozycję Zarejestruj.
Rejestrowanie modelu przy użyciu interfejsu wiersza polecenia platformy Azure lub zestawu SDK języka Python
Poniższe fragmenty kodu obejmują sposób rejestrowania modelu jako elementu zawartości w usłudze Azure Machine Learning przy użyciu interfejsu wiersza polecenia platformy Azure lub zestawu SDK języka Python. Te fragmenty kodu używają custom
typów modeli i mlflow
.
custom
Typ odnosi się do pliku lub folderu modelu przeszkolonego przy użyciu niestandardowego standardu, który obecnie nie obsługuje usługi Azure Machine Learning.mlflow
typ odnosi się do modelu trenowanego za pomocą biblioteki MLflow. Wytrenowane modele MLflow znajdują się w folderze zawierającym plik MLmodel , plik modelu , plik zależności conda i plik requirements.txt .
Napiwek
Możesz skorzystać z poniższych przykładów w języku Python, uruchamiając notes model.ipynb w repozytorium azureml-examples .
Nawiązywanie połączenia z obszarem roboczym
Obszar roboczy jest zasobem najwyższego poziomu dla usługi Azure Machine Learning, który udostępnia scentralizowane miejsce do pracy z wszystkimi tworzonymi podczas korzystania usługi Azure Machine Learning artefaktami. W tej sekcji połączysz się z obszarem roboczym usługi Azure Machine Learning, aby utworzyć zarejestrowany model.
Zaloguj się do platformy Azure, uruchamiając
az login
polecenie i postępując zgodnie z monitami.W poniższych poleceniach zastąp
<subscription-id>
symbole zastępcze ,<workspace-name>
,<resource-group>
i<location>
wartościami środowiska.az account set --subscription <subscription-id> az configure --defaults workspace=<workspace-name> group=<resource-group> location=<location>
Tworzenie zarejestrowanego modelu
Możesz utworzyć zarejestrowany model na podstawie modelu, który jest:
- Znajduje się na komputerze lokalnym.
- Znajduje się w magazynie danych usługi Azure Machine Learning.
- Dane wyjściowe z zadania usługi Azure Machine Learning.
Lokalny plik lub folder
Utwórz nazwę pliku <>YAML.yml. W pliku podaj nazwę zarejestrowanego modelu, ścieżkę do lokalnego pliku modelu i opis. Na przykład:
$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json name: local-file-example path: mlflow-model/model.pkl description: Model created from local file.
Uruchom następujące polecenie, używając nazwy pliku YAML:
az ml model create -f <file-name>.yml
Aby zapoznać się z kompletnym przykładem, zobacz model YAML.
Magazyn danych
Model można utworzyć na podstawie ścieżki chmury przy użyciu dowolnego z obsługiwanych formatów identyfikatora URI.
W poniższym przykładzie użyto schematu skróconego azureml
do wskazywania ścieżki w magazynie danych przy użyciu składni azureml://datastores/<datastore-name>/paths/<path_on_datastore>
.
az ml model create --name my-model --version 1 --path azureml://datastores/myblobstore/paths/models/cifar10/cifar.pt
Pełny przykład można znaleźć w dokumentacji interfejsu wiersza polecenia.
Dane wyjściowe zadania
Jeśli dane modelu pochodzą z danych wyjściowych zadania, masz dwie opcje określania ścieżki modelu. Możesz użyć formatu URI platformy MLflow runs:
lub formatu identyfikatora azureml://jobs
URI.
Uwaga
Zastrzeżone słowo kluczowe artefaktów reprezentuje dane wyjściowe z domyślnej lokalizacji artefaktu.
Przebiegi MLflow: format identyfikatora URI
Ta opcja jest zoptymalizowana pod kątem użytkowników MLflow, którzy prawdopodobnie znają już format identyfikatora URI MLflow
runs:
. Ta opcja tworzy model na podstawie artefaktów w domyślnej lokalizacji artefaktu, w której znajdują się wszystkie modele i artefakty zarejestrowane przez platformę MLflow. Ta opcja określa również pochodzenie między zarejestrowanym modelem a uruchomieniem, z których pochodzi model.Format:
runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
Przykład:
az ml model create --name my-registered-model --version 1 --path runs:/my_run_0000000000/model/ --type mlflow_model
format identyfikatora URI azureml://jobs
Opcja identyfikatora
azureml://jobs
URI odwołania umożliwia zarejestrowanie modelu z artefaktów w dowolnych ścieżkach wyjściowych zadania. Ten format jest zgodny z formatem identyfikatoraazureml://datastores
URI odwołania, a także obsługuje odwoływanie się do artefaktów z nazwanych danych wyjściowych innych niż domyślna lokalizacja artefaktu.Jeśli model nie został bezpośrednio zarejestrowany w skrygcie trenowania przy użyciu biblioteki MLflow, możesz użyć tej opcji, aby ustanowić pochodzenie między zarejestrowanym modelem a zadaniem, z którego został wytrenowany.
Format:
azureml://jobs/<run-id>/outputs/<output-name>/paths/<path-to-model>
- Domyślna lokalizacja artefaktu:
azureml://jobs/<run-id>/outputs/artifacts/paths/<path-to-model>/
. Ta lokalizacja jest odpowiednikiem biblioteki MLflowruns:/<run-id>/<model>
. - Nazwany folder wyjściowy:
azureml://jobs/<run-id>/outputs/<named-output-folder>
- Określony plik w nazwanym folderze wyjściowym:
azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-filename>
- Określona ścieżka folderu w nazwanym folderze wyjściowym:
azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-folder-name>
Przykład:
Zapisz model z nazwanego folderu wyjściowego:
az ml model create --name run-model-example --version 1 --path azureml://jobs/my_run_0000000000/outputs/artifacts/paths/model/
Pełny przykład można znaleźć w dokumentacji interfejsu wiersza polecenia.
- Domyślna lokalizacja artefaktu:
Używanie modeli do trenowania
Interfejs wiersza polecenia platformy Azure w wersji 2 i zestaw SDK języka Python umożliwiają również używanie modeli jako danych wejściowych lub wyjściowych w zadaniach szkoleniowych.
Używanie modelu jako danych wejściowych w zadaniu treningowym
Utwórz plik YAML specyfikacji zadania, <nazwę> pliku.yml.
inputs
W sekcji zadania określ:- Model
type
, który może byćmlflow_model
,custom_model
lubtriton_model
. - Miejsce
path
, w którym znajduje się model, który może być dowolną ścieżką wymienioną w komentarzu w poniższym przykładzie.
$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.5/labels/latest
- Model
Uruchom następujące polecenie, zastępując nazwę pliku YAML.
az ml job create -f <file-name>.yml
Pełny przykład można znaleźć w repozytorium GitHub modelu.
Pisanie modelu jako danych wyjściowych zadania
Zadanie może zapisywać model w magazynie opartym na chmurze przy użyciu danych wyjściowych.
Utwórz specyfikację pliku YAML <>specyfikacji zadania.yml. Wypełnij sekcję typem
outputs
i ścieżką modelu wyjściowego.$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.5/labels/latest
Utwórz zadanie przy użyciu interfejsu wiersza polecenia:
az ml job create --file <file-name>.yml
Pełny przykład można znaleźć w repozytorium GitHub modelu.
Zarządzanie modelami
Interfejs wiersza polecenia platformy Azure i zestaw SDK języka Python umożliwiają również zarządzanie cyklem życia zasobów modelu usługi Azure Machine Learning.
List
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ż
Uzyskaj szczegóły określonego modelu:
az ml model show --name run-model-example --version 1
Zaktualizuj
Zaktualizuj modyfikowalne właściwości określonego modelu:
Ważne
Tylko w przypadku modeli description
i tags
można je aktualizować. Wszystkie inne właściwości są niezmienne i jeśli trzeba je zmienić, należy utworzyć nową wersję modelu.
az ml model update --name run-model-example --version 1 --set description="This is an updated description." --set tags.stage="Prod"
Archiwizuj
Archiwizowanie modelu powoduje ukrycie go przed zapytaniami listy, takimi jak az ml model list
domyślnie. Możesz nadal odwoływać się do zarchiwizowanego modelu w przepływach pracy i używać go.
Można zarchiwizować wszystkie wersje lub tylko określone wersje modelu. Jeśli nie określisz wersji, wszystkie wersje modelu zostaną zarchiwizowane. Jeśli tworzysz nową wersję modelu w zarchiwizowanym kontenerze modelu, nowa wersja zostanie również 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
Powiązana zawartość
- Udostępnianie modeli, składników i środowisk między obszarami roboczymi za pomocą rejestrów
- Biblioteka klienta pakietu Azure Machine Learning dla języka Python — wersja 1.16.1
- Rozszerzenie interfejsu wiersza polecenia platformy Azure ml
- Przepływ uczenia maszynowego i usługa Azure Machine Learning
- Wdrażanie modeli MLflow w punktach końcowych online