Lokalne debugowanie punktów końcowych online w programie Visual Studio Code
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)
Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)
Dowiedz się, jak używać debugera programu Microsoft Visual Studio Code do testowania i debugowania punktów końcowych online lokalnie przed ich wdrożeniem na platformie Azure.
Lokalne punkty końcowe usługi Azure Machine Learning ułatwiają testowanie i debugowanie skryptu oceniania, konfiguracji środowiska, konfiguracji kodu i modelu uczenia maszynowego lokalnie.
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.
Lokalne debugowanie punktów końcowych przed ich wdrożeniem w chmurze może pomóc w przechwyceniu błędów w kodzie i konfiguracji wcześniej. Dostępne są różne opcje debugowania punktów końcowych lokalnie za pomocą programu Visual Studio Code.
- Serwer HTTP wnioskowania usługi Azure Machine Learning
- Lokalny punkt końcowy
Ten przewodnik koncentruje się na lokalnych punktach końcowych.
Poniższa tabela zawiera omówienie scenariuszy, które pomogą Ci wybrać najlepsze rozwiązania.
Scenariusz | Wnioskowanie serwera HTTP | Lokalny punkt końcowy |
---|---|---|
Aktualizowanie lokalnego środowiska języka Python bez ponownego kompilowanie obrazu platformy Docker | Tak | Nie. |
Aktualizowanie skryptu oceniania | Tak | Tak |
Aktualizowanie konfiguracji wdrożenia (wdrożenie, środowisko, kod, model) | Nie. | Tak |
Integracja debugera programu Visual Studio Code | Tak | Tak |
Wymagania wstępne
W tym przewodniku założono, że na komputerze zainstalowano następujące elementy lokalnie.
- Docker
- Visual Studio Code
- Interfejs wiersza polecenia platformy Azure
- Rozszerzenie interfejsu wiersza polecenia platformy Azure ml (wersja 2)
Aby uzyskać więcej informacji, zobacz przewodnik dotyczący przygotowywania systemu do wdrażania punktów końcowych online.
Przykłady w tym artykule są oparte na przykładach kodu zawartych w repozytorium GitHub 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 azureml-examples/cli:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/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.
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Napiwek
Bieżące wartości domyślne można zobaczyć za pomocą az configure -l
polecenia .
Uruchamianie kontenera deweloperskiego
Lokalne punkty końcowe usługi Azure Machine Learning używają kontenerów deweloperskich (kontenerów deweloperskich) platformy Docker i programu Visual Studio Code do kompilowania i konfigurowania lokalnego środowiska debugowania. Dzięki kontenerom deweloperskim możesz korzystać z funkcji programu Visual Studio Code z poziomu kontenera platformy Docker. Aby uzyskać więcej informacji na temat kontenerów deweloperskich, zobacz Tworzenie kontenera deweloperskiego.
Aby debugować punkty końcowe online lokalnie w programie Visual Studio Code, użyj --vscode-debug
flagi podczas tworzenia lub aktualizowania i wdrażania online usługi Azure Machine Learning. Następujące polecenie używa przykładu wdrożenia z repozytorium przykładów:
az ml online-deployment create --file endpoints/online/managed/sample/blue-deployment.yml --local --vscode-debug
Ważne
W Podsystem Windows dla systemu Linux (WSL) należy zaktualizować zmienną środowiskową PATH, aby uwzględnić ścieżkę do pliku wykonywalnego programu Visual Studio Code lub użyć międzyoperamentu WSL. Aby uzyskać więcej informacji, zobacz Współdziałanie systemu Windows z systemem Linux.
Obraz platformy Docker jest kompilowany lokalnie. Wszelkie błędy konfiguracji środowiska lub pliku modelu są wyświetlane na tym etapie procesu.
Uwaga
Przy pierwszym uruchomieniu nowego lub zaktualizowanego kontenera deweloperskiego może upłynąć kilka minut.
Po pomyślnym skompilowanie obrazu kontener deweloperski zostanie otwarty w oknie programu Visual Studio Code.
Do debugowania wdrożeń w kontenerze deweloperskim użyjesz kilku rozszerzeń programu Visual Studio Code. Usługa Azure Machine Learning automatycznie instaluje te rozszerzenia w kontenerze deweloperskim.
Ważne
Przed rozpoczęciem sesji debugowania upewnij się, że rozszerzenia programu Visual Studio Code zakończyły instalowanie w kontenerze deweloperskim.
Rozpocznij sesję debugowania
Po skonfigurowaniu środowiska użyj debugera programu Visual Studio Code, aby przetestować i debugować wdrożenie lokalnie.
Otwórz skrypt oceniania w programie Visual Studio Code.
Napiwek
Skrypt score.py używany przez wdrożony wcześniej punkt końcowy znajduje się w lokalizacji azureml-samples/cli/endpoints/online/managed/sample/score.py w sklonowanym repozytorium. Jednak kroki opisane w tym przewodniku działają z dowolnym skryptem oceniania.
Ustaw punkt przerwania w dowolnym miejscu skryptu oceniania.
- Aby debugować zachowanie uruchamiania, umieść punkty przerwania wewnątrz
init
funkcji. - Aby debugować zachowanie oceniania, umieść punkty przerwania wewnątrz
run
funkcji.
- Aby debugować zachowanie uruchamiania, umieść punkty przerwania wewnątrz
Wybierz widok Zadania programu Visual Studio Code.
Na liście rozwijanej Uruchamianie i debugowanie wybierz pozycję AzureML: Debuguj lokalny punkt końcowy, aby rozpocząć debugowanie punktu końcowego lokalnie.
W sekcji Punkty przerwania widoku Uruchamiania sprawdź, czy:
- Zgłoszone wyjątki są niezaznaczone
- Niechwycone wyjątki są zaznaczone
Wybierz ikonę odtwarzania obok listy rozwijanej Uruchom i Debuguj , aby rozpocząć sesję debugowania.
W tym momencie wszystkie punkty przerwania w
init
funkcji są przechwytywane. Użyj akcji debugowania, aby przejść przez kod. Aby uzyskać więcej informacji na temat akcji debugowania, zobacz przewodnik akcji debugowania.
Aby uzyskać więcej informacji na temat debugera programu Visual Studio Code, zobacz Debugowanie.
Debugowanie punktu końcowego
Teraz, gdy aplikacja jest uruchomiona w debugerze, spróbuj utworzyć przewidywanie w celu debugowania skryptu oceniania.
ml
Użyj polecenia rozszerzeniainvoke
, aby wysłać żądanie do lokalnego punktu końcowego.
az ml online-endpoint invoke --name <ENDPOINT-NAME> --request-file <REQUEST-FILE> --local
W takim przypadku <REQUEST-FILE>
jest to plik JSON zawierający przykłady danych wejściowych dla modelu, który umożliwia przewidywanie podobne do następującego kodu JSON:
{"data": [
[1,2,3,4,5,6,7,8,9,10],
[10,9,8,7,6,5,4,3,2,1]
]}
Napiwek
Identyfikator URI oceniania to adres, w którym punkt końcowy nasłuchuje żądań. Użyj rozszerzenia , ml
aby uzyskać identyfikator URI oceniania.
az ml online-endpoint show --name <ENDPOINT-NAME> --local
Dane wyjściowe powinny wyglądać mniej więcej tak:
{
"auth_mode": "aml_token",
"location": "local",
"name": "my-new-endpoint",
"properties": {},
"provisioning_state": "Succeeded",
"scoring_uri": "http://localhost:5001/score",
"tags": {},
"traffic": {},
"type": "online"
}
Identyfikator URI oceniania można znaleźć we scoring_uri
właściwości .
W tym momencie wszystkie punkty przerwania w run
funkcji są przechwytywane. Użyj akcji debugowania, aby przejść przez kod. Aby uzyskać więcej informacji na temat akcji debugowania, zobacz przewodnik akcji debugowania.
Edytowanie punktu końcowego
Podczas debugowania i rozwiązywania problemów z aplikacją istnieją scenariusze, w których należy zaktualizować skrypt oceniania i konfiguracje.
Aby zastosować zmiany w kodzie:
- Zaktualizuj kod.
- Uruchom ponownie sesję debugowania przy użyciu
Developer: Reload Window
polecenia w palecie poleceń. Aby uzyskać więcej informacji, zobacz dokumentację palety poleceń.
Uwaga
Ponieważ katalog zawierający kod i zasoby punktu końcowego jest instalowany w kontenerze deweloperskim, wszelkie zmiany wprowadzone w kontenerze deweloperskim są synchronizowane z lokalnym systemem plików.
Aby uzyskać bardziej rozbudowane zmiany dotyczące aktualizacji środowiska i konfiguracji punktu końcowego, użyj ml
polecenia rozszerzenia update
. Spowoduje to wyzwolenie pełnej kompilacji obrazu wraz ze zmianami.
az ml online-deployment update --file <DEPLOYMENT-YAML-SPECIFICATION-FILE> --local --vscode-debug
Po skompilowania zaktualizowanego obrazu i uruchomieniu kontenera deweloperskiego użyj debugera programu Visual Studio Code, aby przetestować zaktualizowany punkt końcowy i rozwiązać problem.