Udostępnij za pośrednictwem


Wdrażanie pakietów modeli w punktach końcowych online (wersja zapoznawcza)

Pakiet modelu to funkcja w usłudze Azure Machine Learning, która umożliwia zbieranie wszystkich zależności wymaganych do wdrożenia modelu uczenia maszynowego na platformie obsługującej. Tworzenie pakietów przed wdrożeniem modeli zapewnia niezawodne i niezawodne wdrażanie oraz wydajniejszy przepływ pracy metodyki MLOps. Pakiety można przenosić między obszarami roboczymi, a nawet poza usługą Azure Machine Learning. Dowiedz się więcej o pakietach modelu (wersja zapoznawcza)

Ważne

Ta funkcja jest obecnie w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone.

Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

Z tego artykułu dowiesz się, jak spakować model i wdrożyć go w punkcie końcowym online w usłudze Azure Machine Learning.

Wymagania wstępne

Przed wykonaniem kroków opisanych w tym artykule upewnij się, że masz następujące 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. Jeśli go nie masz, wykonaj kroki opisane w artykule How to manage workspaces (Jak zarządzać obszarami roboczymi), aby je utworzyć.

  • Kontrola dostępu na podstawie ról platformy Azure (Azure RBAC): jest używana do udzielania dostępu do operacji w usłudze Azure Machine Learning. Aby wykonać kroki opisane w tym artykule, konto użytkownika musi mieć przypisaną rolę właściciela lub współautora dla obszaru roboczego usługi Azure Machine Learning lub rolę niestandardową. Aby uzyskać więcej informacji, zobacz Zarządzanie dostępem do obszaru roboczego usługi Azure Machine Learning.

Informacje o tym przykładzie

W tym przykładzie spakujesz model typu niestandardowego i wdrożysz go w punkcie końcowym online na potrzeby wnioskowania online.

Przykład w tym artykule jest oparty na przykładach kodu zawartych w repozytorium azureml-examples . Aby uruchomić polecenia lokalnie bez konieczności kopiowania/wklejania kodu YAML i innych plików, najpierw sklonuj repozytorium, a następnie zmień katalogi na folder:

git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli

W tej sekcji użyto przykładu w folderze endpoints/online/deploy-packages/custom-model.

Nawiązywanie połączenia z obszarem roboczym

Połącz się z obszarem roboczym usługi Azure Machine Learning, w którym wykonasz swoją pracę.

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

Pakowanie modelu

Możesz jawnie tworzyć pakiety modelu, aby umożliwić kontrolowanie sposobu wykonywania operacji pakowania. Pakiety modelu można tworzyć, określając następujące elementy:

  • Model do spakowania: każdy pakiet modelu może zawierać tylko jeden model. Usługa Azure Machine Learning nie obsługuje tworzenia pakietów wielu modeli w ramach tego samego pakietu modelu.
  • Środowisko podstawowe: środowiska są używane do wskazywania obrazu podstawowego i w pakietach języka Python zależności potrzebnego modelu. W przypadku modeli MLflow usługa Azure Machine Learning automatycznie generuje środowisko podstawowe. W przypadku modeli niestandardowych należy je określić.
  • Obsługa technologii: stos wnioskowania używany do uruchamiania modelu.

Napiwek

Jeśli model to MLflow, nie musisz ręcznie tworzyć pakietu modelu. Możemy automatycznie spakować przed wdrożeniem. Zobacz Wdrażanie modeli MLflow w punktach końcowych online.

  1. Pakiety modeli wymagają zarejestrowania modelu w obszarze roboczym lub w rejestrze usługi Azure Machine Learning. W tym przykładzie masz już lokalną kopię modelu w repozytorium, więc wystarczy opublikować model w rejestrze w obszarze roboczym. Tę sekcję można pominąć, jeśli model, który próbujesz wdrożyć, jest już zarejestrowany.

    MODEL_NAME='sklearn-regression'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type custom_model
    
  2. Nasz model wymaga uruchomienia następujących pakietów i mamy je określone w pliku conda:

    conda.yaml

    name: model-env
    channels:
      - conda-forge
    dependencies:
      - python=3.9
      - numpy=1.23.5
      - pip=23.0.1
      - scikit-learn=1.2.2
      - scipy=1.10.1
      - xgboost==1.3.3
    

    Uwaga

    Zwróć uwagę, jak w języku YAML conda są wskazywane tylko wymagania modelu. Każdy pakiet wymagany dla serwera wnioskowania zostanie uwzględniony przez operację pakietu.

    Napiwek

    Jeśli model wymaga pakietów hostowanych w prywatnych źródłach danych, możesz skonfigurować pakiet tak, aby zawierał je. Przeczytaj artykuł Package a model that has dependencies in private Python feeds (Pakowanie pakietu modelu, który ma zależności w prywatnych kanałach informacyjnych języka Python).

  3. Utwórz środowisko podstawowe zawierające wymagania dotyczące modelu i obraz podstawowy. W środowisku podstawowym są wskazywane tylko zależności wymagane przez model. W przypadku modeli MLflow środowisko podstawowe jest opcjonalne, w którym przypadku usługa Azure Machine Learning automatycznie je generuje.

    Utwórz podstawową definicję środowiska:

    sklearn-regression-env.yml

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: sklearn-regression-env
    image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04
    conda_file: conda.yaml
    description: An environment for models built with XGBoost and Scikit-learn.
    

    Następnie utwórz środowisko w następujący sposób:

    az ml environment create -f environment/sklearn-regression-env.yml
    
  4. Utwórz specyfikację pakietu:

    package-moe.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    base_environment_source:
        type: environment_asset
        resource_id: azureml:sklearn-regression-env:1
    target_environment: sklearn-regression-online-pkg
    inferencing_server: 
        type: azureml_online
        code_configuration:
          code: src
          scoring_script: score.py
    
  5. Uruchom operację pakietu modelu:

    az ml model package -n $MODEL_NAME -v $MODEL_VERSION --file package-moe.yml
    
  6. Wynikiem operacji pakietu jest środowisko.

Wdrażanie pakietu modelu

Pakiety modeli można wdrażać bezpośrednio w punktach końcowych online w usłudze Azure Machine Learning. Wykonaj następujące kroki, aby wdrożyć pakiet w punkcie końcowym online:

  1. Wybierz nazwę punktu końcowego do hostowania wdrożenia pakietu i utwórz go:

    ENDPOINT_NAME="sklearn-regression-online"
    
    az ml online-endpoint create -n $ENDPOINT_NAME
    
  2. Utwórz wdrożenie przy użyciu pakietu. Zwróć uwagę na to, jak environment skonfigurowano utworzony pakiet.

    deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
    name: with-package
    endpoint_name: hello-packages
    environment: azureml:sklearn-regression-online-pkg@latest
    instance_type: Standard_DS3_v2
    instance_count: 1
    

    Napiwek

    Zwróć uwagę, że w tym przykładzie nie określono modelu ani skryptu oceniania; są one częścią pakietu.

  3. Uruchom wdrożenie:

    az ml online-deployment create -f deployment.yml
    
  4. W tym momencie wdrożenie jest gotowe do użycia. Możesz przetestować, jak działa, tworząc przykładowy plik żądania:

    sample-request.json

    {
        "data": [
            [1,2,3,4,5,6,7,8,9,10], 
            [10,9,8,7,6,5,4,3,2,1]
        ]
    }
    
  5. Wysyłanie żądania do punktu końcowego

    az ml online-endpoint invoke --name $ENDPOINT_NAME --deployment with-package -r sample-request.json
    

Następny krok