Wdrażanie modeli MLflow we wdrożeniach wsadowych
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)
W tym artykule dowiesz się, jak wdrożyć modele MLflow na maszynie azure Edukacja dla obu wnioskowania wsadowego przy użyciu punktów końcowych partii. Podczas wdrażania modeli MLflow w punktach końcowych wsadowych usługa Azure Machine Edukacja:
- Udostępnia podstawowy obraz/wyselekcjonowane środowisko MLflow, które zawiera wymagane zależności do uruchomienia zadania usługi Azure Machine Edukacja Batch.
- Tworzy potok zadania wsadowego ze skryptem oceniania, który może służyć do przetwarzania danych przy użyciu przetwarzania równoległego.
Uwaga
Aby uzyskać więcej informacji na temat obsługiwanych typów plików wejściowych i szczegółowych informacji na temat działania modelu MLflow, zobacz Zagadnienia dotyczące wdrażania w wnioskowaniu wsadowym.
Informacje o tym przykładzie
W tym przykładzie pokazano, jak wdrożyć model MLflow w punkcie końcowym wsadowym w celu wykonywania przewidywań wsadowych. W tym przykładzie użyto modelu MLflow opartego na zestawie danych choroby serca UCI. Baza danych zawiera 76 atrybutów, ale używamy podzestawu 14 z nich. Model próbuje przewidzieć obecność choroby serca u pacjenta. Jest to liczba całkowita z zakresu od 0 (brak obecności) do 1 (obecność).
Model został wytrenowany przy użyciu XGBBoost
klasyfikatora, a wszystkie wymagane wstępne przetwarzanie zostały spakowane jako potok, dzięki czemu ten model będzie gotowym potokiem scikit-learn
, który przechodzi od nieprzetworzonych danych do przewidywań.
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
Pliki dla tego przykładu znajdują się w następujących elementach:
cd endpoints/batch/deploy-models/heart-classifier-mlflow
Postępuj zgodnie z instrukcjami w notesach Jupyter Notebook
Możesz wykonać czynności opisane w tym przykładzie w poniższych notesach. W sklonowanym repozytorium otwórz notes mlflow-for-batch-tabular.ipynb.
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 Edukacja.
Obszar roboczy usługi Azure Machine Learning. Jeśli go nie masz, wykonaj kroki opisane w artykule Manage Azure Machine Edukacja workspaces (Zarządzanie obszarami roboczymi usługi Azure Machine Edukacja), aby je utworzyć.
Upewnij się, że masz następujące uprawnienia w obszarze roboczym:
Tworzenie punktów końcowych i wdrożeń wsadowych lub zarządzanie nimi: użyj roli właściciela, współautora lub niestandardowej, która zezwala na
Microsoft.MachineLearningServices/workspaces/batchEndpoints/*
usługę .Tworzenie wdrożeń usługi ARM w grupie zasobów obszaru roboczego: użyj roli Właściciel, Współautor lub Niestandardowy, która umożliwia
Microsoft.Resources/deployments/write
korzystanie z grupy zasobów, w której wdrożono obszar roboczy.
Aby pracować z usługą Azure Machine Edukacja, należy zainstalować następujące oprogramowanie:
Interfejs wiersza polecenia platformy
ml
Azure i rozszerzenie usługi Azure Machine Edukacja.az extension add -n ml
Uwaga
Wdrożenia składników potoku dla punktów końcowych usługi Batch zostały wprowadzone w wersji 2.7 rozszerzenia dla interfejsu
ml
wiersza polecenia platformy Azure. Użyjaz extension update --name ml
polecenia , aby pobrać ostatnią wersję.
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łączymy się z obszarem roboczym, w którym wykonasz zadania wdrażania.
Przekaż wartości identyfikatora subskrypcji, obszaru roboczego, lokalizacji i grupy zasobów w następującym kodzie:
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Kroki
Wykonaj następujące kroki, aby wdrożyć model MLflow w punkcie końcowym wsadowym na potrzeby uruchamiania wnioskowania wsadowego na nowych danych:
Punkt końcowy usługi Batch może wdrażać tylko zarejestrowane modele. W tym przypadku mamy już lokalną kopię modelu w repozytorium, więc musimy opublikować model tylko 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' az ml model create --name $MODEL_NAME --type "mlflow_model" --path "model"
Przed przejściem do przodu musimy upewnić się, że wdrożenia wsadowe, które zamierzamy utworzyć, mogą być uruchamiane w ramach infrastruktury (obliczeń). Wdrożenia wsadowe mogą być uruchamiane na dowolnej maszynie azure Edukacja obliczeniowych, które już istnieją w obszarze roboczym. Oznacza to, że wiele wdrożeń wsadowych może współużytkować tę samą infrastrukturę obliczeniową. W tym przykładzie będziemy pracować nad klastrem obliczeniowym usługi Azure Machine Edukacja o nazwie
cpu-cluster
. Sprawdźmy, czy obliczenia istnieją w obszarze roboczym lub utwórzmy je w inny sposób.Utwórz klaster obliczeniowy w następujący sposób:
az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5
Teraz nadszedł czas na utworzenie punktu końcowego i wdrożenia wsadowego. Zacznijmy od punktu końcowego. Punkty końcowe wymagają tylko nazwy i opisu do utworzenia. Nazwa punktu końcowego zostanie zakończona identyfikatorem URI skojarzonym z punktem końcowym. W związku z tym nazwy punktów końcowych partii muszą być unikatowe w regionie świadczenia usługi Azure. Na przykład może istnieć tylko jeden punkt końcowy wsadowy o nazwie
mybatchendpoint
w plikuwestus2
.W takim przypadku umieśćmy nazwę punktu końcowego w zmiennej, abyśmy mogli ją łatwo odwołać później.
ENDPOINT_NAME="heart-classifier"
Utwórz punkt końcowy:
Aby utworzyć nowy punkt końcowy, utwórz konfigurację podobną
YAML
do następującej:endpoint.yml
$schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json name: heart-classifier-batch description: A heart condition classifier for batch inference auth_mode: aad_token
Następnie utwórz punkt końcowy za pomocą następującego polecenia:
az ml batch-endpoint create -n $ENDPOINT_NAME -f endpoint.yml
Teraz utwórz wdrożenie. Modele platformy MLflow nie wymagają wskazania środowiska ani skryptu oceniania podczas tworzenia wdrożeń podczas jego tworzenia. Można je jednak określić, jeśli chcesz dostosować sposób wnioskowania wdrożenia.
Aby utworzyć nowe wdrożenie w ramach utworzonego punktu końcowego, utwórz konfigurację podobną
YAML
do poniższej. Możesz sprawdzić pełny schemat YAML punktu końcowego wsadowego pod kątem dodatkowych właściwości.wdrażanie proste/deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json endpoint_name: heart-classifier-batch name: classifier-xgboost-mlflow description: A heart condition classifier based on XGBoost type: model model: azureml:heart-classifier-mlflow@latest compute: azureml:batch-cluster resources: instance_count: 2 settings: max_concurrency_per_instance: 2 mini_batch_size: 2 output_action: append_row output_file_name: predictions.csv retry_settings: max_retries: 3 timeout: 300 error_threshold: -1 logging_level: info
Następnie utwórz wdrożenie za pomocą następującego polecenia:
az ml batch-deployment create --file deployment-simple/deployment.yml --endpoint-name $ENDPOINT_NAME --set-default
Ważne
Skonfiguruj
timeout
we wdrożeniu na podstawie tego, jak długo trwa wnioskowanie modelu w jednej partii. Im większy rozmiar partii, tym dłużej ta wartość musi być. Przemień, którymini_batch_size
wskazuje liczbę plików w partii, a nie liczbę próbek. Podczas pracy z danymi tabelarycznymi każdy plik może zawierać wiele wierszy, co zwiększy czas potrzebny na przetworzenie każdego pliku przez punkt końcowy partii. Użyj wysokich wartości w tych przypadkach, aby uniknąć błędów przekroczenia limitu czasu.Chociaż można wywołać określone wdrożenie wewnątrz punktu końcowego, zazwyczaj należy wywołać sam punkt końcowy i pozwolić punktowi końcowemu zdecydować, które wdrożenie ma być używane. Takie wdrożenie nosi nazwę "domyślnego" wdrożenia. Daje to możliwość zmiany wdrożenia domyślnego, a tym samym zmiany modelu obsługującego wdrożenie bez zmiany umowy z użytkownikiem wywołującym punkt końcowy. Aby zaktualizować wdrożenie domyślne, użyj następującej instrukcji:
DEPLOYMENT_NAME="classifier-xgboost-mlflow" az ml batch-endpoint update --name $ENDPOINT_NAME --set defaults.deployment_name=$DEPLOYMENT_NAME
W tym momencie nasz punkt końcowy wsadowy jest gotowy do użycia.
Testowanie wdrożenia
Na potrzeby testowania punktu końcowego użyjemy próbki danych bez etykiet znajdujących się w tym repozytorium i które mogą być używane z modelem. Punkty końcowe usługi Batch mogą przetwarzać tylko dane znajdujące się w chmurze i dostępne z poziomu obszaru roboczego usługi Azure Machine Edukacja. W tym przykładzie przekażemy go do magazynu danych usługi Azure Machine Edukacja. W szczególności utworzymy zasób danych, który może służyć do wywoływania punktu końcowego na potrzeby oceniania. Należy jednak zauważyć, że punkty końcowe wsadowe akceptują dane, które można umieścić w różnych lokalizacjach.
Najpierw utwórzmy zasób danych. Ten zasób danych składa się z folderu z wieloma plikami CSV, które chcemy przetwarzać równolegle przy użyciu punktów końcowych wsadowych. Możesz pominąć ten krok, ponieważ dane są już zarejestrowane jako zasób danych lub chcesz użyć innego typu danych wejściowych.
a. Utwórz definicję zasobu danych w pliku
YAML
:heart-dataset-unlabeled.yml
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json name: heart-dataset-unlabeled description: An unlabeled dataset for heart classification. type: uri_folder path: data
b. Utwórz zasób danych:
az ml data create -f heart-dataset-unlabeled.yml
Teraz, gdy dane są przekazywane i gotowe do użycia, wywołajmy punkt końcowy:
JOB_NAME = $(az ml batch-endpoint invoke --name $ENDPOINT_NAME --input azureml:heart-dataset-unlabeled@latest --query name -o tsv)
Uwaga
jq
Narzędzie może nie być zainstalowane w każdej instalacji. Instrukcje instalacji można uzyskać w tym linku.Napiwek
Zwróć uwagę, że nie wskazujemy nazwy wdrożenia w operacji wywołania. Dzieje się tak, ponieważ punkt końcowy automatycznie kieruje zadanie do wdrożenia domyślnego. Ponieważ nasz punkt końcowy ma tylko jedno wdrożenie, jest to domyślne. Konkretne wdrożenie można określić, wskazując argument/parametr
deployment_name
.Zadanie wsadowe jest uruchamiane natychmiast po powrocie polecenia. Stan zadania można monitorować do momentu jego zakończenia:
az ml job show -n $JOB_NAME --web
Analizowanie danych wyjściowych
Przewidywania wyjściowe są generowane w predictions.csv
pliku, jak wskazano w konfiguracji wdrożenia. Zadanie generuje nazwane dane wyjściowe o nazwie o nazwie score
, w której znajduje się ten plik. Tylko jeden plik jest generowany na zadanie wsadowe.
Plik jest ustrukturyzowany w następujący sposób:
Istnieje jeden wiersz dla każdego punktu danych, który został wysłany do modelu. W przypadku danych tabelarycznych oznacza to, że plik (
predictions.csv
) zawiera jeden wiersz dla każdego wiersza znajdującego się w każdym przetworzonym pliku. W przypadku innych typów danych (np. obrazów, dźwięku, tekstu) istnieje jeden wiersz dla każdego przetworzonego pliku.W pliku znajdują się następujące kolumny (w kolejności):
row
(opcjonalnie) odpowiedni indeks wiersza w pliku danych wejściowych. Ma to zastosowanie tylko wtedy, gdy dane wejściowe są tabelaryczne. Przewidywania są zwracane w tej samej kolejności, w której są wyświetlane w pliku wejściowym, dzięki czemu można polegać na numerze wiersza w celu dopasowania odpowiedniego przewidywania.prediction
, przewidywanie skojarzone z danymi wejściowymi. Ta wartość jest zwracana "as-is", która została dostarczonapredict().
przez funkcję modelu.file_name
, nazwa pliku, z którego odczytywano dane. W danych tabelarycznych użyj tego pola, aby dowiedzieć się, które przewidywanie należy do danych wejściowych.
Wyniki zadania można pobrać przy użyciu nazwy zadania:
Aby pobrać przewidywania, użyj następującego polecenia:
az ml job download --name $JOB_NAME --output-name score --download-path ./
Po pobraniu pliku można go otworzyć przy użyciu ulubionego narzędzia. Poniższy przykład ładuje przewidywania przy użyciu Pandas
ramki danych.
import pandas as pd
score = pd.read_csv(
"named-outputs/score/predictions.csv", names=["row", "prediction", "file"]
)
Dane wyjściowe wyglądają następująco:
wiersz | Przewidywania | plik |
---|---|---|
0 | 0 | heart-unlabeled-0.csv |
1 | 1 | heart-unlabeled-0.csv |
2 | 0 | heart-unlabeled-0.csv |
... | ... | ... |
307 | 0 | heart-unlabeled-3.csv |
Napiwek
Zwróć uwagę, że w tym przykładzie dane wejściowe były danymi tabelarycznymi w CSV
formacie i istniały 4 różne pliki wejściowe (heart-unlabeled-0.csv, heart-unlabeled-1.csv, heart-unlabeled-2.csv i heart-unlabeled-3.csv).
Zagadnienia dotyczące wdrażania w wnioskowaniu wsadowym
Usługa Azure Machine Edukacja obsługuje wdrażanie modeli MLflow w punktach końcowych wsadowych bez wskazywania skryptu oceniania. Reprezentuje to wygodny sposób wdrażania modeli, które wymagają przetwarzania dużych ilości danych w sposób wsadowy. Usługa Azure Machine Edukacja używa informacji w specyfikacji modelu MLflow do organizowania procesu wnioskowania.
Jak praca jest dystrybuowana dla procesów roboczych
Punkty końcowe usługi Batch dystrybuują pracę na poziomie pliku zarówno dla danych ze strukturą, jak i bez struktury. W związku z tym dla tej funkcji są obsługiwane tylko foldery plików i identyfikatorów URI identyfikatorów URI. Każdy proces roboczy przetwarza partie Mini batch size
plików naraz. W przypadku danych tabelarycznych punkty końcowe wsadowe nie uwzględniają liczby wierszy wewnątrz każdego pliku podczas dystrybucji pracy.
Ostrzeżenie
Zagnieżdżone struktury folderów nie są eksplorowane podczas wnioskowania. Jeśli partycjonujesz dane przy użyciu folderów, pamiętaj o spłaszczeniu struktury wcześniej.
Wdrożenia wsadowe będą wywoływać predict
funkcję modelu MLflow raz na plik. W przypadku plików CSV zawierających wiele wierszy może to narzucić wykorzystanie pamięci w bazowym środowisku obliczeniowym i może zwiększyć czas potrzebny modelowi na ocenę pojedynczego pliku (szczególnie w przypadku kosztownych modeli, takich jak duże modele językowe). Jeśli wystąpi kilka wyjątków poza pamięcią lub wpisów limitu czasu w dziennikach, rozważ podzielenie danych w mniejszych plikach z mniejszymi wierszami lub zaimplementowanie dzielenia na partie na poziomie wiersza wewnątrz skryptu modelu/oceniania.
Obsługa typów plików
Następujące typy danych są obsługiwane w przypadku wnioskowania wsadowego podczas wdrażania modeli MLflow bez środowiska i skryptu oceniania. Jeśli chcesz przetworzyć inny typ pliku lub wykonać wnioskowanie w inny sposób, w jaki punkty końcowe wsadowe domyślnie można utworzyć wdrożenie za pomocą skryptu oceniania, jak wyjaśniono w artykule Używanie modeli MLflow ze skryptem oceniania.
Rozszerzenie pliku | Typ zwracany jako dane wejściowe modelu | Wymaganie dotyczące podpisu |
---|---|---|
.csv , , .parquet .pqt |
pd.DataFrame |
ColSpec . Jeśli nie zostanie podana, wpisywanie kolumn nie jest wymuszane. |
.png , , .jpg , .jpeg , .tiff , , .bmp .gif |
np.ndarray |
TensorSpec . Dane wejściowe są zmieniane tak, aby dopasować kształt tensorów, jeśli jest dostępny. Jeśli podpis nie jest dostępny, wnioskowane są tensory typu np.uint8 . Aby uzyskać dodatkowe wskazówki, zapoznaj się z tematem Zagadnienia dotyczące przetwarzania obrazów modeli MLflow. |
Ostrzeżenie
Należy pamiętać, że każdy nieobsługiwany plik, który może znajdować się w danych wejściowych, spowoduje niepowodzenie zadania. Zostanie wyświetlony wpis błędu w następujący sposób: "ERROR:azureml:Error processing input file: '/mnt/batch/tasks/.../a-given-file.avro". Typ pliku "avro" nie jest obsługiwany."
Wymuszanie podpisu dla modeli MLflow
Typy danych wejściowych są wymuszane przez zadania wdrażania wsadowego podczas odczytywania danych przy użyciu dostępnego podpisu modelu MLflow. Oznacza to, że dane wejściowe powinny być zgodne z typami wskazanymi w podpisie modelu. Jeśli nie można przeanalizować danych zgodnie z oczekiwaniami, zadanie zakończy się niepowodzeniem z komunikatem o błędzie podobnym do następującego: "ERROR:azureml:Error processing input file: '/mnt/batch/tasks/.../a-given-file.csv". Wyjątek: nieprawidłowy literał dla int() z wartością podstawową 10: "wartość".
Napiwek
Podpisy w modelach MLflow są opcjonalne, ale są bardzo zachęcane, ponieważ zapewniają wygodny sposób wczesnego wykrywania problemów ze zgodnością danych. Aby uzyskać więcej informacji na temat rejestrowania modeli z podpisami, przeczytaj Logging models with a custom signature, environment or samples (Modele rejestrowania przy użyciu niestandardowego podpisu, środowiska lub przykładów).
Sygnaturę modelu można sprawdzić, otwierając MLmodel
plik skojarzony z modelem MLflow. Aby uzyskać więcej informacji na temat sposobu działania podpisów w usłudze MLflow, zobacz Podpisy w rozwiązaniu MLflow.
Obsługa smaków
Wdrożenia wsadowe obsługują tylko wdrażanie modeli MLflow o pyfunc
smaku. Jeśli chcesz wdrożyć inny wariant, zobacz Używanie modeli MLflow ze skryptem oceniania.
Dostosowywanie wdrożeń modeli MLflow za pomocą skryptu oceniania
Modele MLflow można wdrożyć w punktach końcowych wsadowych bez wskazania skryptu oceniania w definicji wdrożenia. Można jednak wyrazić zgodę na wskazanie tego pliku (zwykle określanego jako sterownik wsadowy), aby dostosować sposób wykonywania wnioskowania.
Zazwyczaj wybierasz ten przepływ pracy, gdy:
- Musisz przetworzyć typ pliku, który nie jest obsługiwany przez wdrożenia wsadowe MLflow.
- Musisz dostosować sposób uruchamiania modelu, na przykład użyć konkretnej odmiany, aby załadować go za pomocą polecenia
mlflow.<flavor>.load()
. - Należy wykonać przetwarzanie wstępne/pos w procedurze oceniania, gdy nie jest wykonywane przez sam model.
- Dane wyjściowe modelu nie mogą być ładnie reprezentowane w danych tabelarycznych. Na przykład jest to tensor reprezentujący obraz.
- Model nie może przetworzyć każdego pliku jednocześnie z powodu ograniczeń pamięci i musi go odczytać we fragmentach.
Ważne
Jeśli zdecydujesz się wskazać skrypt oceniania dla wdrożenia modelu MLflow, musisz również określić środowisko, w którym zostanie uruchomione wdrożenie.
Kroki
Wykonaj poniższe kroki, aby wdrożyć model MLflow z niestandardowym skryptem oceniania.
Zidentyfikuj folder, w którym znajduje się model MLflow.
a. Przejdź do witryny Azure Machine Edukacja Portal.
b. Przejdź do sekcji Modele.
c. Wybierz model, który próbujesz wdrożyć, i kliknij kartę Artefakty.
d. Zanotuj wyświetlany folder. Ten folder został wskazany podczas rejestrowania modelu.
Utwórz skrypt oceniania. Zwróć uwagę, jak nazwa
model
folderu zidentyfikowana wcześniej została uwzględniona winit()
funkcji.deployment-custom/code/batch_driver.py
# Copyright (c) Microsoft. All rights reserved. # Licensed under the MIT license. import os import glob import mlflow import pandas as pd import logging def init(): global model global model_input_types global model_output_names # AZUREML_MODEL_DIR is an environment variable created during deployment # It is the path to the model folder # Please provide your model's folder name if there's one model_path = glob.glob(os.environ["AZUREML_MODEL_DIR"] + "/*/")[0] # Load the model, it's input types and output names model = mlflow.pyfunc.load(model_path) if model.metadata and model.metadata.signature: if model.metadata.signature.inputs: model_input_types = dict( zip( model.metadata.signature.inputs.input_names(), model.metadata.signature.inputs.pandas_types(), ) ) if model.metadata.signature.outputs: if model.metadata.signature.outputs.has_input_names(): model_output_names = model.metadata.signature.outputs.input_names() elif len(model.metadata.signature.outputs.input_names()) == 1: model_output_names = ["prediction"] else: logging.warning( "Model doesn't contain a signature. Input data types won't be enforced." ) def run(mini_batch): print(f"run method start: {__file__}, run({len(mini_batch)} files)") data = pd.concat( map( lambda fp: pd.read_csv(fp).assign(filename=os.path.basename(fp)), mini_batch ) ) if model_input_types: data = data.astype(model_input_types) # Predict over the input data, minus the column filename which is not part of the model. pred = model.predict(data.drop("filename", axis=1)) if pred is not pd.DataFrame: if not model_output_names: model_output_names = ["pred_col" + str(i) for i in range(pred.shape[1])] pred = pd.DataFrame(pred, columns=model_output_names) return pd.concat([data, pred], axis=1)
Utwórzmy środowisko, w którym można wykonać skrypt oceniania. Ponieważ nasz model to MLflow, wymagania conda są również określone w pakiecie modelu (aby uzyskać więcej informacji na temat modeli MLflow i zawartych w nim plików, zobacz Format MLmodel). Następnie skompilujemy środowisko przy użyciu zależności conda z pliku. Musimy jednak również uwzględnić pakiet
azureml-core
, który jest wymagany dla wdrożeń usługi Batch.Napiwek
Jeśli model jest już zarejestrowany w rejestrze modeli, możesz pobrać/skopiować
conda.yml
plik skojarzony z modelem, przechodząc do pozycji Azure Machine Edukacja studio> Models > Select your model (Wybieranie modelu) z listy > Artifacts (Artefakty). Otwórz folder główny w obszarze nawigacji i wybierzconda.yml
plik na liście. Kliknij pozycję Pobierz lub skopiuj jego zawartość.Ważne
W tym przykładzie użyto środowiska conda określonego w lokalizacji
/heart-classifier-mlflow/environment/conda.yaml
. Ten plik został utworzony przez połączenie oryginalnego pliku zależności MLflow conda i dodanie pakietuazureml-core
. Nie można bezpośrednio użyćconda.yml
pliku z modelu.Definicja środowiska zostanie uwzględniona w definicji wdrożenia jako środowisko anonimowe. W ramach wdrożenia zobaczysz następujące wiersze:
environment: name: batch-mlflow-xgboost image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest conda_file: environment/conda.yaml
Konfigurowanie wdrożenia:
Aby utworzyć nowe wdrożenie w ramach utworzonego punktu końcowego, utwórz konfigurację podobną
YAML
do poniższej. Możesz sprawdzić pełny schemat YAML punktu końcowego wsadowego pod kątem dodatkowych właściwości.wdrożenie niestandardowe/deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json endpoint_name: heart-classifier-batch name: classifier-xgboost-custom description: A heart condition classifier based on XGBoost type: model model: azureml:heart-classifier-mlflow@latest environment: name: batch-mlflow-xgboost image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest conda_file: environment/conda.yaml code_configuration: code: code scoring_script: batch_driver.py compute: azureml:batch-cluster resources: instance_count: 2 settings: max_concurrency_per_instance: 2 mini_batch_size: 2 output_action: append_row output_file_name: predictions.csv retry_settings: max_retries: 3 timeout: 300 error_threshold: -1 logging_level: info
Utwórzmy teraz wdrożenie:
az ml batch-deployment create --file deployment-custom/deployment.yml --endpoint-name $ENDPOINT_NAME
W tym momencie nasz punkt końcowy wsadowy jest gotowy do użycia.
Czyszczenie zasobów
Uruchom następujący kod, aby usunąć punkt końcowy wsadowy i wszystkie podstawowe wdrożenia. Zadania oceniania wsadowego nie zostaną usunięte.
az ml batch-endpoint delete --name $ENDPOINT_NAME --yes