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 érvényesítheti, futtathatja és hibakeresésre használhatja 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 parancssori felületet használják. Az 1.0 parancssori felületre való váltáshoz állítsa a
azureML.CLI Compatibility Mode
Visual Studio Code beállítását a következőre1.0
: . A Visual Studio Code beállításainak módosításáról további információt a felhasználói és munkaterület-beállítások dokumentációjában talál.Fontos
Ez a funkció jelenleg nyilvános előzetes verzióban érhető el. Ez az előzetes verzió szolgáltatásszintű szerződés nélkül érhető el, és éles számítási feladatokhoz nem javasoljuk. 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 Machez és Windowshoz
Docker Engine for Linux.
Feljegyzés
Windows rendszeren konfigurálja a Dockert Linux-tárolók használatára.
Tipp.
Windows esetén, bár nem kötelező, erősen ajánlott a Docker használata Linuxos Windows-alrendszer (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-ban a beállítás az előfeltételekben megadott módon van beállítva1.0
A VS Code-ban nyissa meg az Azure Machine Learning bővítmény nézetet.
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, adjon nevet a kísérletnek.
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 beállítások listájában válassza a Helyi lehetőséget.
Csak windowsos első használat esetén. 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 nemet választ, 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örnyezetét. Választhat bármelyik Azure Machine Learning-válogatott közül, vagy létrehozhatja sajátját.
- Adja meg a futtatni kívánt szkript nevét. Az elérési út a VS Code-ban megnyitott könyvtárhoz képest van.
- Válassza ki, hogy Azure Machine Learning-adatkészletet szeretne-e használni. A bővítmény használatával Azure Machine Learning-adatkészleteket hozhat létre.
- Debugpy szükséges ahhoz, hogy a hibakeresőt a kísérletét futtató tárolóhoz csatolja. 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, futtatja a kísérletet anélkül, hogy a hibakeresőhöz csatlakozik.
- Megnyílik a szerkesztőben a futtatási konfigurációs beállításokat tartalmazó konfigurációs fájl. 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.
Amikor megkezdődik a Docker-rendszerkép-létrehozási folyamat, a
60_control_log.txt
fájlstream tartalma a VS Code kimeneti konzoljára kerül.Feljegyzé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 üzenet, 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ésre. Ezzel csatolja a VS Code hibakeresőt a kísérletét futtató tárolóhoz. Másik lehetőségként az Azure Machine Learning bővítményben mutasson 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. Több VS Code-példány használatával azonban hibakeresést végezhet két vagy több kísérletben.
Ezen a ponton képesnek kell lennie arra, hogy a VS Code használatával végiglépkedjen a kódon, és hibakeresést végezzen.
Ha bármikor megszakítja a futtatásokat, 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 kibonthatja a futtatási csomópontot a naplók és kimenetek vizsgálatához.
Tipp.
A környezetében definiált függőségeket használó Docker-rendszerképek újra felhasználhatók 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 képeket a rendszer a helyi tárolóba menti, javasoljuk, hogy távolítsa el a régi vagy a 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-beli virtuális hálózat 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ői környezet. A fejlesztési környezet az alábbiak egyike lehet:
- Azure-beli virtuális gép a virtuális hálózaton
- 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 és az Azure Machine Learning használatával 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 állnak virtuális hálózat mögött, a virtuális hálózat használata ajánlott.
Hogyan működik?
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 összetevőt, és várja meg, amíg egy hibakereső csatlakozik.
A fejlesztési környezetből figyelheti a betanítási folyamat által létrehozott naplókat, hogy megkeresse 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ájl használatával 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á a következő 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 olyan utasítást
if
, amely elindítja a hibakeresést, és várja a hibakereső csatolását. Ha az időtúllépés előtt egyetlen hibakereső sem csatlakozik, a szkript a szokásos módon folytatódik. Ügyeljen arra, hogy a függvénytPORT
listen
cseréljeHOST
le a saját értékére.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 indí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 az 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 következő 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 a gyermekfuttatás következő 70_driver_log.txt
szövegéhez hasonló adatokat naplóz:
Timeout for debug connection: 300
ip_address: 10.3.0.5
Mentse az ip_address
értéket. A következő szakaszban használatos.
Tipp.
Az IP-címet a gyermekfuttatás futtatási naplóiból is megtalálhatja ehhez a folyamatlépéshez. Az információk megtekintéséről további információt az Azure Machine Learning-kísérletfuttatások és metrikák monitorozása című témakörben talál.
A fejlesztési környezet konfigurálása
Ha hibakeresést szeretne telepíteni a 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 ú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. Megnyílik egy launch.json nevű fájl.
A launch.json fájlban keresse meg a vonalat,
"configurations": [
é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 tartalmazza a hibakeresés alatt álló szkript másolatát:{ "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
localRoot
példa értékre hivatkozik/code/step1
.Ha több szkript hibakeresését végzi, 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ítsa be azokat a 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ésben 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.
Feljegyzés
Ha a napló egy bejegyzést jelenít meg,
Debugger attached = False
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, majd az időtúllépés lejárta előtt.
Központi telepítések 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 extra naplózással. A VS Code és a hibakereső használatával csatolhatja a Docker-tárolóban futó kódot.
Tipp.
Ha helyileg felügyelt online végpontokat és üzemelő példányokat használ, tekintse meg a felügyelt online végpontok helyi hibakeresését a Visual Studio Code-ban (előzetes verzió).
Fontos
Ez a hibakeresési módszer nem működik 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ával kapcsolatos további információkért tekintse meg a Docker dokumentációját. Számítási példányok használatakor a Docker már telepítve van.
A fejlesztési környezet konfigurálása
A hibakeresés helyi VS Code-fejlesztési környezetben való telepítéséhez 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ás terjedelmében, majd válassza a Konfigurációk megnyitása lehetőséget. Megnyílik egy launch.json nevű fájl.
A launch.json fájlban keresse meg a "konfigurációk" elemet (a sort, amely tartalmazza
"configurations": [
), és szúrja be a következő szöveget utána.{ "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 porton keresztül csatlakozik a Docker-tárolóhoz.
Mentse a launch.json fájlt.
Debugpy-t tartalmazó rendszerkép létrehozása
Módosítsa az üzembe helyezés conda-környezetét úgy, hogy az tartalmazza a hibakeresést. Az alábbi példa azt mutatja be, hogy a paraméterrel adja hozzá:
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())
A hibakeresés elindításához és a szolgáltatás indításakor várja meg a kapcsolatot, adja hozzá a következőket a
score.py
fájl tetejére: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örnyezetdefiníció alapján, és kérje le a lemezképet a helyi beállításjegyzékbe.
Feljegyzé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 rendszerkép létrehozása és letöltése után (ez a folyamat több mint 10 percet is igénybe vehet), a rendszerkép elérési útja (az adattárat, a nevet és a címkét is tartalmazza, amely ebben az esetben a kivonata is) végül az alábbihoz hasonló üzenetben jelenik meg:
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 hozzáadhat egy 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ésnél a teljes kép elérési útja helyett a helyi rendszerképre
debug:1
is hivatkozhat.
A szolgáltatás hibakeresése
Tipp.
Ha időtúllépést állít be a hibakeresési kapcsolathoz a score.py
fájlban, 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ányt score.py
, állítson be egy töréspontot, és tegye készen arra, hogy továbblépjen, mielőtt a szakasz lépéseit követené.
A hibakereséssel és a töréspontok beállításával kapcsolatos további információkért lásd a hibakeresést.
Docker-tároló rendszerkép használatával való 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 annakdebug: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.A tárolón belül futtassa a következő parancsot 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 Deployment: Docker Debug konfigurációját. Az oldalsávon a Run extention ikont is kiválaszthatja, az Azure Machine Learning Deployment: Docker Debug entry elemét a Hibakeresés legördülő menüből, 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ó jelenik meg:
Emellett a fő VS Code-felületen az alábbiak láthatók:
Most pedig a tárolóhoz csatolt helyi score.py
hely már leállt a beállított töréspontoknál. Ezen a ponton a VS Code csatlakozik a Docker-tárolón belüli hibakereséshez, és leállítja a Docker-tárolót a korábban beállított töréspontnál. 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 a Python-kód hibakeresését ismertető témakört.
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: