Udostępnij za pośrednictwem


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:

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:

  1. W obszarze roboczym w programie Studio wybierz pozycję Modele w obszarze nawigacji po lewej stronie.

  2. 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)
  3. Na pierwszym ekranie Rejestrowanie modelu :

    1. Przejdź do pliku lokalnego, magazynu danych lub danych wyjściowych zadania dla modelu.
    2. Wybierz typ modelu wejściowego: MLflow, Triton lub Nieokreślony.
  4. Na ekranie Ustawienia modelu podaj nazwę i inne opcjonalne ustawienia zarejestrowanego modelu, a następnie wybierz pozycję Dalej.

  5. Na ekranie Przegląd przejrzyj konfigurację, a następnie wybierz pozycję Zarejestruj.

Zrzut ekranu przedstawiający interfejs użytkownika do zarejestrowania modelu.

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.

  1. Zaloguj się do platformy Azure, uruchamiając az login polecenie i postępując zgodnie z monitami.

  2. 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

  1. 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.
    
  2. 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 identyfikatora azureml://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 MLflow runs:/<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.


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

  1. 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_modellub triton_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.0/labels/latest
    
  2. 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.

  1. 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.0/labels/latest
    
  2. 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