Udostępnij za pośrednictwem


Pakowanie i wdrażanie modeli poza usługą Azure Machine Learning (wersja zapoznawcza)

Modele poza usługą Azure Machine Learning można wdrażać w trybie online, tworząc pakiety modeli (wersja zapoznawcza). Usługa Azure Machine Learning umożliwia utworzenie pakietu modelu, który zbiera wszystkie zależności wymagane do wdrożenia modelu uczenia maszynowego na platformie obsługującej. Pakiet modelu można przenieść między obszarami roboczymi, a nawet poza usługą Azure Machine Learning. Aby dowiedzieć się więcej o pakietach modeli, zobacz Pakiety modelu do wdrożenia (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 usłudze aplikacja systemu Azure Service.

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

    Uwaga

    Obszary robocze z obsługą łącza prywatnego nie obsługują modeli pakowania na potrzeby wdrażania poza usługą Azure Machine Learning.

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

Przygotowywanie systemu

Wykonaj następujące kroki, aby przygotować system.

  1. 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 tym artykule użyto przykładu w folderze endpoints/online/deploy-with-packages/mlflow-model.

  2. 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>
    
  3. Pakiety wymagają zarejestrowania modelu w obszarze roboczym lub w rejestrze usługi Azure Machine Learning. W tym przykładzie istnieje lokalna kopia modelu w repozytorium, więc wystarczy opublikować model w rejestrze w obszarze roboczym. Ten krok można pominąć, jeśli model, który próbujesz wdrożyć, jest już zarejestrowany.

    MODEL_NAME='heart-classifier-mlflow'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type mlflow_model
    

Wdrażanie pakietu modelu w usłudze aplikacja systemu Azure

W tej sekcji spakujesz wcześniej zarejestrowany model MLflow i wdrożysz go w usłudze aplikacja systemu Azure.

  1. Wdrożenie modelu poza usługą Azure Machine Learning wymaga utworzenia specyfikacji pakietu. Aby utworzyć pakiet całkowicie odłączony od usługi Azure Machine Learning, określ copy tryb w konfiguracji modelu. Tryb copy informuje pakiet o skopiowaniu artefaktów wewnątrz pakietu. Poniższy kod pokazuje, jak określić tryb kopiowania dla konfiguracji modelu:

    Utwórz specyfikację YAML pakietu:

    package-external.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    target_environment: heart-classifier-mlflow-pkg
    inferencing_server: 
        type: azureml_online
    model_configuration:
        mode: copy
    

    Napiwek

    Po określeniu konfiguracji modelu używanej copy dla właściwości trybu gwarantujesz, że wszystkie artefakty modelu zostaną skopiowane wewnątrz wygenerowanego obrazu platformy Docker zamiast pobranego z rejestru modeli usługi Azure Machine Learning, co pozwoli na prawdziwą przenośność poza usługą Azure Machine Learning. Aby uzyskać pełną specyfikację wszystkich opcji tworzenia pakietów, zobacz Tworzenie specyfikacji pakietu.

  2. Uruchom operację pakietu.

    az ml model package --name $MODEL_NAME --version $MODEL_VERSION --file package-external.yml
    
  3. Wynikiem operacji pakietu jest środowisko w usłudze Azure Machine Learning. Zaletą tego środowiska jest to, że każde środowisko ma odpowiedni obraz platformy Docker, którego można użyć we wdrożeniu zewnętrznym. Obrazy są hostowane w usłudze Azure Container Registry. W poniższych krokach pokazano, jak uzyskać nazwę wygenerowanego obrazu:

    1. Przejdź do usługi Azure Machine Learning Studio.

    2. Wybierz sekcję Środowiska .

    3. Wybierz kartę Środowiska niestandardowe.

    4. Wyszukaj środowisko o nazwie heart-classifier-mlflow-package, czyli nazwę właśnie utworzonego pakietu.

    5. Skopiuj wartość, która znajduje się w polu rejestru kontenerów platformy Azure.

    Zrzut ekranu przedstawiający sekcję, w której nazwa obrazu rejestru kontenerów platformy Azure jest wyświetlana w usłudze Azure Machine Learning Studio.

  4. Teraz wdróż ten pakiet w usłudze App Service.

    1. Przejdź do witryny Azure Portal i utwórz nowy zasób usługi App Service.

    2. W kreatorze tworzenia wybierz subskrypcję i grupę zasobów, której używasz.

    3. W sekcji Szczegóły wystąpienia nadaj aplikacji nazwę.

    4. W obszarze Publikowanie wybierz pozycję Kontener platformy Docker.

    5. W polu System operacyjny wybierz pozycję Linux.

      Zrzut ekranu przedstawiający sposób konfigurowania usługi App Service w celu wdrożenia wygenerowanego obrazu kontenera platformy Docker.

    6. Skonfiguruj pozostałą część strony zgodnie z potrzebami i wybierz pozycję Dalej.

    7. Przejdź do karty Docker .

    8. W obszarze Opcje wybierz pozycję Pojedynczy kontener.

    9. W polu Źródło obrazu wybierz pozycję Azure Container Registry.

    10. Skonfiguruj opcje rejestru kontenerów platformy Azure w następujący sposób:

      1. W polu Rejestr wybierz usługę Azure Container Registry skojarzona z obszarem roboczym usługi Azure Machine Learning.

      2. W polu Obraz wybierz obraz znaleziony w kroku 3(e) tego samouczka.

      3. W obszarze Tag wybierz pozycję Latest (Najnowszy).

      Zrzut ekranu przedstawiający sekcję Platformy Docker kreatora, na której jest wskazywany obraz platformy Docker skojarzony z pakietem.

    11. Skonfiguruj pozostałą część kreatora zgodnie z potrzebami.

    12. Wybierz pozycję Utwórz. Model jest teraz wdrażany w utworzonej usłudze App Service.

    13. Sposób wywoływania i uzyskiwania przewidywań zależy od użytego serwera wnioskowania. W tym przykładzie użyto serwera wnioskowania usługi Azure Machine Learning, który tworzy przewidywania w ramach trasy /score. Aby uzyskać więcej informacji na temat formatów i funkcji wejściowych, zobacz szczegóły pakietu azureml-inference-server-http.

    14. Przygotuj ładunek żądania. Format modelu MLflow wdrożonego za pomocą serwera wnioskowania usługi Azure Machine Learning jest następujący:

      sample-request.json

      {
          "input_data": {
              "columns": [
                  "age", "sex", "cp", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal"
              ],
              "index": [1],
              "data": [
                  [1, 1, 4, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
              ]
          }
      }
      
    15. Przetestuj wdrożenie modelu, aby sprawdzić, czy działa.

      cat -A sample-request.json | curl http://heart-classifier-mlflow-pkg.azurewebsites.net/score \
          --request POST \
          --header 'Content-Type: application/json' \
          --data-binary @-
      

Następny krok