Interaktív hibakeresés a Visual Studio Code használatával
A KÖVETKEZŐKRE VONATKOZIK:Python SDK azureml v1
Megtudhatja, hogyan végezhet interaktív hibakeresést az Azure Machine Learning-kísérletekben, -folyamatokban és -üzembe helyezésekben a Visual Studio Code (VS Code) és a debugpy használatával.
Kísérletek helyi futtatása és hibakeresése
Az Azure Machine Learning-bővítmény használatával ellenőrizheti, futtathatja és hibakereséssel végezheti el a gépi tanulási kísérleteket, mielőtt elküldené őket a felhőbe.
Előfeltételek
Azure Machine Learning VS Code-bővítmény (előzetes verzió). További információ: Az Azure Machine Learning VS Code-bővítmény beállítása.
Fontos
Az Azure Machine Learning VS Code-bővítmény alapértelmezés szerint a CLI-t (v2) használja. Az útmutató utasításai az 1.0 cli-t használják. Az 1.0-s parancssori felületre való váltáshoz állítsa a
azureML.CLI Compatibility Mode
Visual Studio Code beállítását értékre1.0
. A beállítások Visual Studio Code-ban való módosításáról a felhasználói és munkaterület-beállítások dokumentációjában talál további információt.Fontos
Ez a funkció jelenleg nyilvános előzetes verzióban érhető el. Ez az előzetes verzió szolgáltatói szerződés nélkül érhető el, éles számítási feladatokhoz nem ajánljuk. Előfordulhat, hogy néhány funkció nem támogatott, vagy korlátozott képességekkel rendelkezik.
További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.
-
Docker Desktop Mac és Windows rendszerhez
Docker Engine Linuxhoz.
Megjegyzés
Windows rendszeren konfigurálja a Dockert Linux-tárolók használatára.
Tipp
Windows esetén, bár nem szükséges, erősen ajánlott a Docker használata a Windows Subsystem for Linux (WSL) 2-vel.
Hibakeresési kísérlet helyileg
Fontos
A kísérlet helyi futtatása előtt győződjön meg arról, hogy:
- A Docker fut.
- A
azureML.CLI Compatibility Mode
Visual Studio Code beállítása az előfeltételekben megadott értékre1.0
van állítva
A VS Code-ban nyissa meg az Azure Machine Learning bővítménynézetét.
Bontsa ki a munkaterületet tartalmazó előfizetési csomópontot. Ha még nincs ilyenje, létrehozhat egy Azure Machine Learning-munkaterületet a bővítmény használatával.
Bontsa ki a munkaterület csomópontját.
Kattintson a jobb gombbal a Kísérletek csomópontra, és válassza a Kísérlet létrehozása lehetőséget. Amikor megjelenik a kérdés, adja meg a kísérlet nevét.
Bontsa ki a Kísérletek csomópontot, kattintson a jobb gombbal a futtatni kívánt kísérletre, és válassza a Kísérlet futtatása lehetőséget.
A lehetőségek listájában válassza a Helyi lehetőséget.
Csak Windows rendszeren használja először. Amikor a rendszer kéri a fájlmegosztás engedélyezését, válassza az Igen lehetőséget. Ha engedélyezi a fájlmegosztást, a Docker csatlakoztathatja a szkriptet tartalmazó könyvtárat a tárolóhoz. Emellett lehetővé teszi a Docker számára, hogy a futtatás naplóit és kimeneteit a rendszer egy ideiglenes könyvtárában tárolja.
Válassza az Igen lehetőséget a kísérlet hibakereséséhez. Egyéb esetben a Nem választógombot jelölje be. Ha a nem lehetőséget választja, a program helyileg futtatja a kísérletet a hibakereső csatolása nélkül.
Válassza az Új futtatási konfiguráció létrehozása lehetőséget a futtatási konfiguráció létrehozásához. A futtatási konfiguráció határozza meg a futtatni kívánt szkriptet, a függőségeket és a használt adatkészleteket. Másik lehetőségként, ha már van ilyenje, válassza ki a legördülő listából.
- Válassza ki a környezetet. Az Azure Machine Learning bármelyik válogatott része közül választhat, vagy létrehozhat sajátot.
- Adja meg a futtatni kívánt szkript nevét. Az elérési út a VS Code-ban megnyitott könyvtárhoz viszonyítva van.
- Válassza ki, hogy Azure Machine Learning-adatkészletet szeretne-e használni. Azure Machine Learning-adatkészleteket a bővítmény használatával hozhat létre.
- A hibakereső a kísérletet futtató tárolóhoz való csatlakoztatásához hibakeresésre van szükség. Ha függőségként szeretné hozzáadni a hibakeresőt, válassza a Hibakeresés hozzáadása lehetőséget. Ellenkező esetben válassza a Kihagyás lehetőséget. Ha nem ad hozzá hibakeresési elemet függőségként, az futtatja a kísérletet anélkül, hogy a hibakeresőhöz csatlakozik.
- A szerkesztőben megnyílik egy konfigurációs fájl, amely tartalmazza a futtatási konfigurációs beállításokat. Ha elégedett a beállításokkal, válassza a Kísérlet elküldése lehetőséget. Másik lehetőségként nyissa meg a parancskatalógust (parancskatalógus megtekintése>) a menüsávon, és írja be a
AzureML: Submit experiment
parancsot a szövegmezőbe.
A kísérlet elküldése után létrejön egy Docker-rendszerkép, amely tartalmazza a szkriptet és a futtatási konfigurációban megadott konfigurációkat.
A Docker-rendszerkép buildelési folyamatának megkezdésekor a
60_control_log.txt
fájlstream tartalma a VS Code kimeneti konzoljára kerül.Megjegyzés
A Docker-rendszerkép első létrehozása több percet is igénybe vehet.
A rendszerkép létrehozása után megjelenik egy kérdés, amely elindítja a hibakeresőt. Állítsa be a töréspontokat a szkriptben, és válassza a Hibakereső indítása lehetőséget, amikor készen áll a hibakeresés megkezdésére. Ezzel csatolja a VS Code hibakeresőt a kísérletet futtató tárolóhoz. Másik lehetőségként az Azure Machine Learning bővítményben vigye az egérmutatót az aktuális futtatás csomópontja fölé, és válassza a lejátszás ikont a hibakereső elindításához.
Fontos
Egyetlen kísérlethez nem lehet több hibakeresési munkamenet. Két vagy több kísérlet hibakeresése azonban több VS Code-példány használatával is lehetővé teszi.
Ezen a ponton képesnek kell lennie a kód végiglépésére és hibakeresésére a VS Code használatával.
Ha bármikor megszakítja a futtatás megszakítását, kattintson a jobb gombbal a futtatási csomópontra, és válassza a Futtatás megszakítása lehetőséget.
A távoli kísérletfuttatásokhoz hasonlóan a futtatási csomópontot is kibonthatja a naplók és kimenetek vizsgálatához.
Tipp
A környezetében definiált függőségeket használó Docker-rendszerképeket a rendszer újra felhasználja a futtatások között. Ha azonban egy kísérletet egy új vagy más környezettel futtat, létrejön egy új rendszerkép. Mivel ezeket a lemezképeket a rendszer a helyi tárolóba menti, javasoljuk, hogy távolítsa el a régi vagy nem használt Docker-lemezképeket. A rendszerképek eltávolításához használja a Docker CLI-t vagy a VS Code Docker-bővítményt.
Hibakeresés és hibaelhárítás a gépi tanulási folyamatokban
Egyes esetekben előfordulhat, hogy interaktív hibakeresést kell végeznie az ML-folyamatban használt Python-kódon. A VS Code és a debugpy használatával csatolhatja a kódot a betanítási környezetben futó kódhoz.
Előfeltételek
Azure Machine Learning-munkaterület, amely azure Virtual Network használatára van konfigurálva.
Egy Azure Machine Learning-folyamat , amely Python-szkripteket használ a folyamat lépéseinek részeként. Például egy PythonScriptStep.
Egy Azure Machine Learning Compute-fürt, amely a virtuális hálózaton található, és amelyet a folyamat a betanításhoz használ.
A virtuális hálózaton találhatófejlesztési környezet. A fejlesztési környezet a következők egyike lehet:
- Azure-beli virtuális gép a virtuális hálózaton
- A notebook virtuális gép számítási példánya a virtuális hálózaton
- Olyan ügyfélszámítógép, amely magánhálózati kapcsolattal rendelkezik a virtuális hálózathoz VPN-en vagy ExpressRoute-on keresztül.
Az Azure Virtual Network Azure Machine Learningdel való használatáról további információt a Virtuális hálózatok elkülönítése és az adatvédelem áttekintése című témakörben talál.
Tipp
Bár olyan Azure Machine Learning-erőforrásokkal is dolgozhat, amelyek nem virtuális hálózat mögött találhatók, a virtuális hálózat használata ajánlott.
Működés
Az ML-folyamat lépései Python-szkripteket futtatnak. Ezek a szkriptek a következő műveletek végrehajtására módosulnak:
Naplózza annak a gazdagépnek az IP-címét, amelyen fut. Az IP-cím használatával csatlakoztathatja a hibakeresőt a szkripthez.
Indítsa el a hibakeresési hibakereső összetevőt, és várja meg, amíg a hibakereső csatlakozik.
A fejlesztési környezetből figyelheti a betanítási folyamat által létrehozott naplókat, hogy megtalálja azt az IP-címet, amelyen a szkript fut.
Meg kell adnia a VS Code-nak azt az IP-címet, amelyhez a hibakeresőt egy
launch.json
fájllal csatlakoztatja.Csatolja a hibakeresőt, és interaktívan végiglépked a szkripten.
Python-szkriptek konfigurálása
A hibakeresés engedélyezéséhez végezze el a következő módosításokat az ML-folyamat lépései által használt Python-szkript(ek)ben:
Adja hozzá a következő importálási utasításokat:
import argparse import os import debugpy import socket from azureml.core import Run
Adja hozzá az alábbi argumentumokat. Ezek az argumentumok lehetővé teszik, hogy szükség szerint engedélyezze a hibakeresőt, és beállítsa a hibakereső csatolásának időtúllépését:
parser.add_argument('--remote_debug', action='store_true') parser.add_argument('--remote_debug_connection_timeout', type=int, default=300, help=f'Defines how much time the Azure Machine Learning compute target ' f'will await a connection from a debugger client (VSCODE).') parser.add_argument('--remote_debug_client_ip', type=str, help=f'Defines IP Address of VS Code client') parser.add_argument('--remote_debug_port', type=int, default=5678, help=f'Defines Port of VS Code client')
Adja hozzá a következő utasításokat. Ezek az utasítások betöltik az aktuális futtatási környezetet, hogy naplózhassa annak a csomópontnak az IP-címét, amelyen a kód fut:
global run run = Run.get_context()
Adjon hozzá egy utasítást
if
, amely elindítja a hibakeresést, és megvárja a hibakereső csatolását. Ha az időtúllépés előtt nem csatlakozik hibakereső, a szkript a szokásos módon folytatódik. Győződjön meg arról, hogy a ésPORT
azHOST
értékek alisten
függvényt a sajátjára cserélik.if args.remote_debug: print(f'Timeout for debug connection: {args.remote_debug_connection_timeout}') # Log the IP and port try: ip = args.remote_debug_client_ip except: print("Need to supply IP address for VS Code client") print(f'ip_address: {ip}') debugpy.listen(address=(ip, args.remote_debug_port)) # Wait for the timeout for debugger to attach debugpy.wait_for_client() print(f'Debugger attached = {debugpy.is_client_connected()}')
Az alábbi Python-példa egy egyszerű train.py
fájlt mutat be, amely lehetővé teszi a hibakeresést:
# Copyright (c) Microsoft. All rights reserved.
# Licensed under the MIT license.
import argparse
import os
import debugpy
import socket
from azureml.core import Run
print("In train.py")
print("As a data scientist, this is where I use my training code.")
parser = argparse.ArgumentParser("train")
parser.add_argument("--input_data", type=str, help="input data")
parser.add_argument("--output_train", type=str, help="output_train directory")
# Argument check for remote debugging
parser.add_argument('--remote_debug', action='store_true')
parser.add_argument('--remote_debug_connection_timeout', type=int,
default=300,
help=f'Defines how much time the Azure Machine Learning compute target '
f'will await a connection from a debugger client (VSCODE).')
parser.add_argument('--remote_debug_client_ip', type=str,
help=f'Defines IP Address of VS Code client')
parser.add_argument('--remote_debug_port', type=int,
default=5678,
help=f'Defines Port of VS Code client')
# Get run object, so we can find and log the IP of the host instance
global run
run = Run.get_context()
args = parser.parse_args()
# Start debugger if remote_debug is enabled
if args.remote_debug:
print(f'Timeout for debug connection: {args.remote_debug_connection_timeout}')
# Log the IP and port
ip = socket.gethostbyname(socket.gethostname())
# try:
# ip = args.remote_debug_client_ip
# except:
# print("Need to supply IP address for VS Code client")
print(f'ip_address: {ip}')
debugpy.listen(address=(ip, args.remote_debug_port))
# Wait for the timeout for debugger to attach
debugpy.wait_for_client()
print(f'Debugger attached = {debugpy.is_client_connected()}')
print("Argument 1: %s" % args.input_data)
print("Argument 2: %s" % args.output_train)
if not (args.output_train is None):
os.makedirs(args.output_train, exist_ok=True)
print("%s created" % args.output_train)
Ml-folyamat konfigurálása
A hibakeresés elindításához és a futtatási környezet lekéréséhez szükséges Python-csomagok biztosításához hozzon létre egy környezetet, és állítsa be a következőt pip_packages=['debugpy', 'azureml-sdk==<SDK-VERSION>']
: . Módosítsa az SDK-verziót úgy, hogy megfeleljen a használt verziónak. A következő kódrészlet bemutatja, hogyan hozhat létre környezetet:
# Use a RunConfiguration to specify some additional requirements for this step.
from azureml.core.runconfig import RunConfiguration
from azureml.core.conda_dependencies import CondaDependencies
from azureml.core.runconfig import DEFAULT_CPU_IMAGE
# create a new runconfig object
run_config = RunConfiguration()
# enable Docker
run_config.environment.docker.enabled = True
# set Docker base image to the default CPU-based image
run_config.environment.docker.base_image = DEFAULT_CPU_IMAGE
# use conda_dependencies.yml to create a conda environment in the Docker image for execution
run_config.environment.python.user_managed_dependencies = False
# specify CondaDependencies obj
run_config.environment.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'],
pip_packages=['debugpy', 'azureml-sdk==<SDK-VERSION>'])
A Python-szkriptek konfigurálása szakaszban új argumentumok lettek hozzáadva az ML-folyamat lépései által használt szkriptekhez. Az alábbi kódrészlet bemutatja, hogyan használhatja ezeket az argumentumokat az összetevő hibakeresésének engedélyezéséhez és időtúllépés beállításához. Azt is bemutatja, hogyan használhatja a korábban létrehozott környezetet a beállítással runconfig=run_config
:
# Use RunConfig from a pipeline step
step1 = PythonScriptStep(name="train_step",
script_name="train.py",
arguments=['--remote_debug', '--remote_debug_connection_timeout', 300,'--remote_debug_client_ip','<VS-CODE-CLIENT-IP>','--remote_debug_port',5678],
compute_target=aml_compute,
source_directory=source_directory,
runconfig=run_config,
allow_reuse=False)
A folyamat futtatásakor minden lépés létrehoz egy gyermekfuttatást. Ha a hibakeresés engedélyezve van, a módosított szkript az alábbi szöveghez hasonló adatokat naplóz a 70_driver_log.txt
gyermekfuttatásban:
Timeout for debug connection: 300
ip_address: 10.3.0.5
Mentse az ip_address
értéket. Ezt a következő szakaszban használjuk.
Tipp
Az IP-címet a gyermekfuttatás futtatási naplóiból is megtalálhatja ehhez a folyamatlépéshez. További információ az információk megtekintéséről: Az Azure Machine Learning-kísérletfuttatások és -metrikák monitorozása.
A fejlesztési környezet konfigurálása
Ha hibakeresőt szeretne telepíteni a VS Code fejlesztői környezetére, használja a következő parancsot:
python -m pip install --upgrade debugpy
A hibakereső VS Code-tal való használatáról további információt a Távoli hibakeresés című témakörben talál.
Ha a VS Code-ot úgy szeretné konfigurálni, hogy kommunikáljon a hibakeresőt futtató Azure Machine Learning-számítással, hozzon létre egy új hibakeresési konfigurációt:
A VS Code-ból válassza a Hibakeresés menüt, majd a Konfigurációk megnyitása lehetőséget. Ekkor megnyílik egy launch.json nevű fájl.
A launch.json fájlban keresse meg a elemet tartalmazó
"configurations": [
sort, és szúrja be utána a következő szöveget. Módosítsa a bejegyzést"host": "<IP-ADDRESS>"
az előző szakasz naplóiban visszaadott IP-címre. Módosítsa a"localRoot": "${workspaceFolder}/code/step"
bejegyzést egy helyi könyvtárra, amely a hibakeresés alatt álló szkript egy példányát tartalmazza:{ "name": "Azure Machine Learning Compute: remote debug", "type": "python", "request": "attach", "port": 5678, "host": "<IP-ADDRESS>", "redirectOutput": true, "pathMappings": [ { "localRoot": "${workspaceFolder}/code/step1", "remoteRoot": "." } ] }
Fontos
Ha már vannak más bejegyzések a konfigurációk szakaszban, adjon hozzá egy vesszőt (,) a beszúrt kód után.
Tipp
Az ajánlott eljárás, különösen a folyamatok esetében az, hogy a szkriptek erőforrásait külön könyvtárakban kell tartani, hogy a kód csak az egyes lépésekhez legyen releváns. Ebben a példában a példa értékre
localRoot
hivatkozik/code/step1
.Több szkript hibakeresése esetén különböző könyvtárakban hozzon létre egy külön konfigurációs szakaszt minden szkripthez.
Mentse a launch.json fájlt.
A hibakereső csatlakoztatása
Nyissa meg a VS Code-ot, és nyissa meg a szkript helyi példányát.
Állítson be olyan töréspontokat, ahol le szeretné állítani a szkriptet a csatolás után.
Amíg a gyermekfolyamat futtatja a szkriptet, és az
Timeout for debug connection
megjelenik a naplókban, használja az F5 billentyűt, vagy válassza a Hibakeresés lehetőséget. Amikor a rendszer kéri, válassza ki az Azure Machine Learning Compute: távoli hibakeresési konfigurációt. A hibakeresés ikont az oldalsávon, az Azure Machine Learning: távoli hibakeresési bejegyzést is kiválaszthatja a Hibakeresés legördülő menüből, majd a zöld nyíllal csatolhatja a hibakeresőt.Ezen a ponton a VS Code csatlakozik a számítási csomópont hibakereséséhez, és a korábban beállított töréspontnál áll meg. Most már végiglépkedhet a kódon futás közben, megtekintheti a változókat stb.
Megjegyzés
Ha a napló egy bejegyzést jelenít meg, amely szerint
Debugger attached = False
a , akkor az időtúllépés lejárt, és a szkript a hibakereső nélkül folytatódott. Küldje el újra a folyamatot, és csatlakoztassa a hibakeresőt azTimeout for debug connection
üzenet után és az időtúllépés lejárta előtt.
Üzemelő példányok hibakeresése és hibaelhárítása
Bizonyos esetekben előfordulhat, hogy interaktívan kell hibakeresést végeznie a modell üzembe helyezésében található Python-kódban. Ha például a belépési szkript meghiúsul, és az ok nem határozható meg további naplózással. A VS Code és a hibakereső használatával csatolhatja a Docker-tárolóban futó kódot.
Tipp
Ha felügyelt online végpontokat és üzemelő példányokat használ helyileg, olvassa el a Felügyelt online végpontok helyi hibakeresése a Visual Studio Code-ban (előzetes verzió) című témakört.
Fontos
Ez a hibakeresési módszer nem működik a modell helyi használatakor Model.deploy()
és LocalWebservice.deploy_configuration
üzembe helyezésekor. Ehelyett létre kell hoznia egy képet a Model.package() metódussal.
A helyi webszolgáltatás üzembe helyezéséhez működő Docker-telepítésre van szükség a helyi rendszeren. A Docker használatáról további információt a Docker dokumentációjában talál. Számítási példányok használatakor a Docker már telepítve van.
A fejlesztési környezet konfigurálása
Ha hibakeresést szeretne telepíteni a helyi VS Code fejlesztői környezetében, használja a következő parancsot:
python -m pip install --upgrade debugpy
A hibakereső VS Code-tal való használatáról további információt a Távoli hibakeresés című témakörben talál.
Ha a VS Code-ot a Docker-lemezképpel való kommunikációra szeretné konfigurálni, hozzon létre egy új hibakeresési konfigurációt:
A VS Code-ban válassza a Hibakeresés menüt a Futtatási mérték területen, majd válassza a Konfigurációk megnyitása lehetőséget. Ekkor megnyílik egy launch.json nevű fájl.
A launch.json fájlban keresse meg a "configurations" elemet (a sort, amely tartalmazza
"configurations": [
), és szúrja be a következő szöveget.{ "name": "Azure Machine Learning Deployment: Docker Debug", "type": "python", "request": "attach", "connect": { "port": 5678, "host": "0.0.0.0", }, "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "/var/azureml-app" } ] }
A beszúrás után a launch.json fájlnak a következőhöz hasonlónak kell lennie:
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal" }, { "name": "Azure Machine Learning Deployment: Docker Debug", "type": "python", "request": "attach", "connect": { "port": 5678, "host": "0.0.0.0" }, "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "/var/azureml-app" } ] } ] }
Fontos
Ha már vannak más bejegyzések a konfigurációk szakaszban, adjon hozzá egy vesszőt ( , ) a beszúrt kód után.
Ez a szakasz az 5678-es portot használva kapcsolódik a Docker-tárolóhoz.
Mentse a launch.json fájlt.
Hibakeresést tartalmazó lemezkép létrehozása
Módosítsa a conda környezetet az üzembe helyezéshez, hogy az tartalmazza a hibakeresési elemet. Az alábbi példa bemutatja, hogyan adja hozzá a paramétert
pip_packages
:from azureml.core.conda_dependencies import CondaDependencies # Usually a good idea to choose specific version numbers # so training is made on same packages as scoring myenv = CondaDependencies.create(conda_packages=['numpy==1.15.4', 'scikit-learn==0.19.1', 'pandas==0.23.4'], pip_packages = ['azureml-defaults==1.0.83', 'debugpy']) with open("myenv.yml","w") as f: f.write(myenv.serialize_to_string())
Ha el szeretné indítani a hibakeresést, és megvárni a kapcsolatot, amikor a szolgáltatás elindul, adja hozzá a következőket a
score.py
fájl elejéhez:import debugpy # Allows other computers to attach to debugpy on this IP address and port. debugpy.listen(('0.0.0.0', 5678)) # Wait 30 seconds for a debugger to attach. If none attaches, the script continues as normal. debugpy.wait_for_client() print("Debugger attached...")
Hozzon létre egy lemezképet a környezeti definíció alapján, és kérje le a lemezképet a helyi beállításjegyzékbe.
Megjegyzés
Ez a példa feltételezi, hogy
ws
az Azure Machine Learning-munkaterületre mutat, és ezmodel
az üzembe helyezett modell. Amyenv.yml
fájl az 1. lépésben létrehozott conda függőségeket tartalmazza.from azureml.core.conda_dependencies import CondaDependencies from azureml.core.model import InferenceConfig from azureml.core.environment import Environment myenv = Environment.from_conda_specification(name="env", file_path="myenv.yml") myenv.docker.base_image = None myenv.docker.base_dockerfile = "FROM mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:latest" inference_config = InferenceConfig(entry_script="score.py", environment=myenv) package = Model.package(ws, [model], inference_config) package.wait_for_creation(show_output=True) # Or show_output=False to hide the Docker build logs. package.pull()
A kép létrehozása és letöltése után (ez a folyamat több mint 10 percet is igénybe vehet), a rendszer a következőhöz hasonló üzenetben jeleníti meg a kép elérési útját (beleértve az adattárat, a nevet és a címkét is, amely ebben az esetben a kivonat is).
Status: Downloaded newer image for myregistry.azurecr.io/package@sha256:<image-digest>
A kép helyi használatának megkönnyítése érdekében az alábbi paranccsal adhat hozzá címkét a képhez. Cserélje le
myimagepath
az alábbi parancsot az előző lépés helyértékére.docker tag myimagepath debug:1
A többi lépésben a helyi rendszerképre úgy hivatkozhat, mint
debug:1
a teljes kép elérési útjának értéke helyett.
A szolgáltatás hibakeresése
Tipp
Ha időtúllépést állít be a fájl hibakeresési score.py
kapcsolatához, az időtúllépés lejárta előtt csatlakoztatnia kell a VS Code-ot a hibakeresési munkamenethez. Indítsa el a VS Code-ot, nyissa meg a helyi példányát score.py
, állítson be egy töréspontot, és a szakasz lépéseinek végrehajtása előtt készen álljon a használatra.
További információ a hibakeresésről és a töréspontok beállításáról: Hibakeresés.
Docker-tároló rendszerkép használatával történő elindításához használja a következő parancsot:
docker run -it --name debug -p 8000:5001 -p 5678:5678 -v <my_local_path_to_score.py>:/var/azureml-app/score.py debug:1 /bin/bash
Ez a parancs helyileg csatolja a
score.py
tárolóban lévőhöz. Ezért a szerkesztőben végrehajtott módosítások automatikusan megjelennek a tárolóbanA jobb élmény érdekében egy új VS Code-felülettel léphet be a tárolóba. Válassza ki a
Docker
terjedelmet a VS Code oldalsávjáról, keresse meg a létrehozott helyi tárolót, ebben a dokumentációban a következőtdebug:1
: . Kattintson a jobb gombbal erre a tárolóra, és válassza a lehetőséget"Attach Visual Studio Code"
, majd automatikusan megnyílik egy új VS Code-felület, és ez a felület megjeleníti a létrehozott tároló belsejét.Futtassa a következő parancsot a tárolóban a rendszerhéjban
runsvdir /var/runit
Ezután a következő kimenet jelenik meg a tárolóban lévő rendszerhéjban:
Ha a VS Code-ot a tárolón belüli hibakereséshez szeretné csatolni, nyissa meg a VS Code-ot, és használja az F5 billentyűt, vagy válassza a Hibakeresés lehetőséget. Amikor a rendszer kéri, válassza ki az Azure Machine Learning Üzembe helyezés: Docker hibakeresési konfigurációját. Az oldalsávon a Run extention ( Terjedelem futtatása ) ikont, az Azure Machine Learning Deployment: Docker Debug (Hibakeresés) legördülő menüben található Docker-hibakeresési bejegyzést is kiválaszthatja, majd a zöld nyíllal csatolhatja a hibakeresőt.
Miután kiválasztotta a zöld nyilat, és csatolta a hibakeresőt, a tároló VS Code felületén néhány új információt láthat:
Emellett a fő VS Code-felületen a következőket láthatja:
Most pedig a tárolóhoz csatolt helyi score.py
már leállt azon töréspontoknál, ahol beállította. Ezen a ponton a VS Code a Docker-tárolón belül csatlakozik a hibakeresőhöz, és leállítja a Docker-tárolót a korábban beállított törésponton. Most már végiglépkedhet a kódon futás közben, megtekintheti a változókat stb.
A PYTHON hibakereséséhez a VS Code használatával kapcsolatos további információkért lásd : Python-kód hibakeresése.
A tároló leállítása
A tároló leállításához használja a következő parancsot:
docker stop debug
Következő lépések
Most, hogy beállította a VS Code Remote szolgáltatást, egy számítási példányt használhat távoli számításként a VS Code-ból a kód interaktív hibakereséséhez.
További információ a hibaelhárításról: