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.
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.
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>
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.
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. Trybcopy
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.Uruchom operację pakietu.
az ml model package --name $MODEL_NAME --version $MODEL_VERSION --file package-external.yml
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:
Przejdź do usługi Azure Machine Learning Studio.
Wybierz sekcję Środowiska .
Wybierz kartę Środowiska niestandardowe.
Wyszukaj środowisko o nazwie heart-classifier-mlflow-package, czyli nazwę właśnie utworzonego pakietu.
Skopiuj wartość, która znajduje się w polu rejestru kontenerów platformy Azure.
Teraz wdróż ten pakiet w usłudze App Service.
Przejdź do witryny Azure Portal i utwórz nowy zasób usługi App Service.
W kreatorze tworzenia wybierz subskrypcję i grupę zasobów, której używasz.
W sekcji Szczegóły wystąpienia nadaj aplikacji nazwę.
W obszarze Publikowanie wybierz pozycję Kontener platformy Docker.
W polu System operacyjny wybierz pozycję Linux.
Skonfiguruj pozostałą część strony zgodnie z potrzebami i wybierz pozycję Dalej.
Przejdź do karty Docker .
W obszarze Opcje wybierz pozycję Pojedynczy kontener.
W polu Źródło obrazu wybierz pozycję Azure Container Registry.
Skonfiguruj opcje rejestru kontenerów platformy Azure w następujący sposób:
W polu Rejestr wybierz usługę Azure Container Registry skojarzona z obszarem roboczym usługi Azure Machine Learning.
W polu Obraz wybierz obraz znaleziony w kroku 3(e) tego samouczka.
W obszarze Tag wybierz pozycję Latest (Najnowszy).
Skonfiguruj pozostałą część kreatora zgodnie z potrzebami.
Wybierz pozycję Utwórz. Model jest teraz wdrażany w utworzonej usłudze App Service.
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.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] ] } }
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 @-