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

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.

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

Usługa Azure Machine Edukacja lokalnych punktów końcowych używa kontenerów programistycznych platformy Docker i programu Visual Studio Code (kontenerów deweloperskich) 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 usługi Azure Machine Edukacja online. 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 Edukacja 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.

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

  2. 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.
  3. Wybierz widok Zadania programu Visual Studio Code.

  4. 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ątkiniezaznaczone
    • Niechwycone wyjątkizaznaczone

    Zrzut ekranu przedstawiający sposób konfigurowania profilu debugowania środowiska lokalnego w usłudze Azure Machine Edukacja.

  5. 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:

  1. Zaktualizuj kod.
  2. 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.