Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DOTYCZY:
Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)
Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)
W tym artykule opisano sposób używania serwera wnioskowania NVIDIA Triton w usłudze Azure Machine Learning z punktami końcowymi online.
Triton to wieloramowe oprogramowanie open source zoptymalizowane do wnioskowania. Obsługuje ona popularne struktury uczenia maszynowego, takie jak TensorFlow, ONNX Runtime, PyTorch i NVIDIA TensorRT. Można go używać na potrzeby obciążeń procesora CPU lub procesora GPU.
Istnieją dwa główne podejścia, które można wykonać, aby użyć modeli Triton podczas wdrażania ich w punktach końcowych online: wdrożenie bez kodu lub wdrożenie pełnego kodu (Bring Your Own Container).
- Wdrożenie bez kodu dla modeli Triton jest prostym sposobem ich wdrożenia, ponieważ wystarczy wdrożyć tylko modele Triton.
- Wdrożenie pełnego kodu dla modeli Triton to bardziej zaawansowany sposób ich wdrażania, ponieważ masz pełną kontrolę nad dostosowywaniem konfiguracji dostępnych dla serwera wnioskowania Triton.
W przypadku obu opcji serwer Triton Inference Server wykonuje wnioskowanie na podstawie modelu Triton zdefiniowanego przez firmę NVIDIA. Na przykład modele grupowe mogą być używane w bardziej zaawansowanych scenariuszach.
Triton jest obsługiwany zarówno w zarządzanych punktach końcowych online, jak i w punktach końcowych online platformy Kubernetes.
W tym artykule dowiesz się, jak wdrożyć model przy użyciu wdrożenia bez kodu dla Triton do zarządzanego punktu końcowego online. Informacje dotyczące korzystania z interfejsu wiersza polecenia platformy Azure, zestawu Python SDK w wersji 2 i usługi Azure Machine Learning Studio. Jeśli chcesz dalsze dostosowywanie bezpośrednio przy użyciu konfiguracji serwera Triton Inference Server, zobacz Używanie niestandardowego kontenera do wdrażania modelu i przykład BYOC dla serwera Triton (definicja wdrożenia i kompleksowy skrypt).
Uwaga
Korzystanie z kontenera serwera NVIDIA Triton Inference Server podlega umowie licencyjnej NVIDIA AI Enterprise Software i może być używane przez 90 dni bez subskrypcji produktu enterprise. Aby uzyskać więcej informacji, zobacz NVIDIA AI Enterprise w usłudze Azure Machine Learning.
Wymagania wstępne
Interfejs wiersza polecenia platformy Azure i
mlrozszerzenie interfejsu wiersza polecenia platformy Azure, zainstalowane i skonfigurowane. Aby uzyskać więcej informacji, zobacz Instalowanie i konfigurowanie interfejsu wiersza polecenia (wersja 2).Powłoka Bash lub zgodna powłoka, taka jak powłoka w systemie Linux lub Podsystem Windows dla systemu Linux. Przykłady Azure CLI w tym artykule przyjmują, że używasz tego typu powłoki.
Obszar roboczy usługi Azure Machine Learning. Aby uzyskać instrukcje dotyczące tworzenia obszaru roboczego, zobacz Konfigurowanie.
Działające środowisko języka Python w wersji 3.8 lub nowszej.
Aby oceniać, musisz mieć zainstalowane dodatkowe pakiety języka Python. Można je zainstalować przy użyciu następującego kodu. To na przykład:
- Numpy. Biblioteka do obliczeń numerycznych i tablic.
- Klient serwera wnioskowania Triton. Ułatwia żądania do serwera wnioskowania Triton.
- Poduszka. Biblioteka operacji na obrazach.
- Gevent. Biblioteka sieci używana do nawiązywania połączenia z serwerem Triton.
pip install numpy pip install tritonclient[http] pip install pillow pip install geventDostęp do maszyn wirtualnych serii NCv3 dla subskrypcji platformy Azure.
Ważne
Może być konieczne zażądanie zwiększenia limitu przydziału dla subskrypcji, zanim będzie można użyć tej serii maszyn wirtualnych. Aby uzyskać więcej informacji, zobacz seria NCv3.
Serwer wnioskowania NVIDIA Triton wymaga określonej struktury repozytorium modeli, w której istnieje katalog dla każdego modelu i podkatalogów dla wersji modelu. Zawartość każdego podkatalogu wersji modelu jest określana przez typ modelu i wymagania zaplecza obsługującego model. Aby uzyskać informacje o strukturze wszystkich modeli, zobacz Pliki modelu.
Informacje przedstawione w tym dokumencie są oparte na użyciu modelu przechowywanego w formacie ONNX, więc struktura katalogów repozytorium modeli to
<model-repository>/<model-name>/1/model.onnx. W szczególności ten model wykonuje identyfikację obrazu.
Informacje przedstawione w tym artykule są oparte na przykładach kodu zawartych w repozytorium azureml-examples . Aby uruchomić polecenia lokalnie bez konieczności kopiowania/wklejania kodu YAML i innych plików, sklonuj repozytorium, a następnie zmień katalogi na cli katalog w repozytorium:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples
cd cli
Jeśli nie ustawiono jeszcze ustawień domyślnych dla interfejsu wiersza polecenia platformy Azure, zapisz ustawienia domyślne. Aby uniknąć wielokrotnego przekazywania wartości dla subskrypcji, obszaru roboczego i grupy zasobów, użyj następujących poleceń. Zastąp następujące parametry wartościami dla określonej konfiguracji:
- Zamień wartość
<subscription>na identyfikator swojej subskrypcji platformy Azure. - Zastąp
<workspace>ciąg nazwą obszaru roboczego usługi Azure Machine Learning. - Zastąp element
<resource-group>grupą zasobów platformy Azure zawierającą obszar roboczy. - Zastąp element
<location>regionem platformy Azure zawierającym obszar roboczy.
Napiwek
Bieżące wartości domyślne można zobaczyć za pomocą az configure -l polecenia .
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Definiowanie konfiguracji wdrożenia
DOTYCZY:
Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)
W tej sekcji opisano sposób wdrażania w zarządzanym punkcie końcowym online przy użyciu Azure CLI z rozszerzeniem Machine Learning (wersja 2).
Ważne
W przypadku wdrożenia rozwiązania Triton no-code testowanie za pośrednictwem lokalnych punktów końcowych nie jest obecnie obsługiwane.
Aby uniknąć wpisywania w ścieżce dla wielu poleceń, użyj następującego polecenia, aby ustawić zmienną środowiskową
BASE_PATH. Ta zmienna wskazuje katalog, w którym znajduje się model i skojarzone pliki konfiguracji YAML:BASE_PATH=endpoints/online/triton/single-modelUżyj następującego polecenia, aby ustawić nazwę punktu końcowego, który zostanie utworzony. W tym przykładzie dla punktu końcowego jest tworzona losowa nazwa:
export ENDPOINT_NAME=triton-single-endpt-`echo $RANDOM`Utwórz plik konfiguracji YAML dla punktu końcowego. W poniższym przykładzie skonfigurowana jest nazwa i tryb uwierzytelniania punktu końcowego. Plik używany w następujących poleceniach znajduje się w sklonowanym wcześniej repozytorium azureml-examples:
/cli/endpoints/online/triton/single-model/create-managed-endpoint.ymlcreate-managed-endpoint.yaml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json name: my-endpoint auth_mode: aml_tokenUtwórz plik konfiguracji YAML dla wdrożenia. W poniższym przykładzie skonfigurowano wdrożenie o nazwie
bluedo punktu końcowego zdefiniowanego w poprzednim kroku. Plik używany w poniższych poleceniach znajduje się pod/cli/endpoints/online/triton/single-model/create-managed-deployment.ymlw repozytorium azureml-examples, które sklonowałeś wcześniej.Ważne
Aby wdrożenie Triton no-code-deployment działało, należy ustawić
typenatriton_model:type: triton_model. Aby uzyskać więcej informacji, zobacz Schemat YAML modelu interfejsu wiersza polecenia (wersja 2).To wdrożenie używa maszyny wirtualnej Standard_NC6s_v3. Aby można było użyć tej maszyny wirtualnej, może być konieczne zażądanie zwiększenia limitu przydziału dla subskrypcji. Aby uzyskać więcej informacji, zobacz seria NCv3.
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json name: blue endpoint_name: my-endpoint model: name: sample-densenet-onnx-model version: 1 path: ./models type: triton_model instance_count: 1 instance_type: STANDARD_NC4AS_T4_V3
Wdróż na platformie Azure
DOTYCZY:
Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)
Aby utworzyć punkt końcowy przy użyciu konfiguracji YAML, użyj następującego polecenia:
az ml online-endpoint create -n $ENDPOINT_NAME -f $BASE_PATH/create-managed-endpoint.yamlAby utworzyć wdrożenie przy użyciu konfiguracji YAML, użyj następującego polecenia:
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f $BASE_PATH/create-managed-deployment.yaml --all-traffic
Testowanie punktu końcowego
DOTYCZY:
Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)
Po zakończeniu wdrażania użyj następującego polecenia, aby wysłać żądanie oceniania do wdrożonego punktu końcowego.
Napiwek
Plik /cli/endpoints/online/triton/single-model/triton_densenet_scoring.py w repozytorium azureml-examples jest używany do oceniania. Obraz przekazany do punktu końcowego wymaga wstępnego przetwarzania w celu spełnienia wymagań dotyczących rozmiaru, typu i formatu oraz przetwarzania końcowego w celu wyświetlenia przewidywanej etykiety. Plik triton_densenet_scoring.py używa tritonclient.http biblioteki do komunikowania się z serwerem wnioskowania Triton. Ten plik jest uruchamiany po stronie klienta.
Aby uzyskać identyfikator URI oceniania punktu końcowego, użyj następującego polecenia:
scoring_uri=$(az ml online-endpoint show -n $ENDPOINT_NAME --query scoring_uri -o tsv) scoring_uri=${scoring_uri%/*}Aby uzyskać klucz uwierzytelniania, użyj następującego polecenia:
auth_token=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME --query accessToken -o tsv)Aby ocenić dane za pomocą punktu końcowego, użyj następującego polecenia. Przesyła obraz pawia do punktu końcowego:
python $BASE_PATH/triton_densenet_scoring.py --base_url=$scoring_uri --token=$auth_token --image_path $BASE_PATH/data/peacock.jpgOdpowiedź skryptu jest podobna do następującej odpowiedzi:
Is server ready - True Is model ready - True /azureml-examples/cli/endpoints/online/triton/single-model/densenet_labels.txt 84 : PEACOCK
Usuwanie punktu końcowego i modelu
DOTYCZY:
Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)
Gdy skończysz z punktem końcowym, użyj następującego polecenia, aby go usunąć:
az ml online-endpoint delete -n $ENDPOINT_NAME --yesUżyj następującego polecenia, aby zarchiwizować model:
az ml model archive --name sample-densenet-onnx-model --version 1
Następne kroki
Aby dowiedzieć się więcej, zapoznaj się z następującymi artykułami:
- Wdrażanie modeli za pomocą interfejsu REST
- Tworzenie i używanie zarządzanych punktów końcowych online w programie Studio
- Bezpieczne wdrażanie punktów końcowych online
- Jak automatycznie skalować zarządzane punkty końcowe online
- Wyświetlanie kosztów zarządzanego punktu końcowego online usługi Azure Machine Learning
- Uzyskiwanie dostępu do zasobów platformy Azure z punktu końcowego online przy użyciu tożsamości zarządzanej
- Rozwiązywanie problemów z wdrażaniem i przetwarzaniem wyników punktów końcowych w trybie online