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

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ékre 1.0 van állítva
  1. A VS Code-ban nyissa meg az Azure Machine Learning bővítménynézetét.

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

  3. Bontsa ki a munkaterület csomópontját.

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

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

  6. A lehetőségek listájában válassza a Helyi lehetőséget.

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

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

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

    1. 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.
    2. 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.
    3. 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.
    4. 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.
    5. 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.
  10. 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.

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

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

  2. Indítsa el a hibakeresési hibakereső összetevőt, és várja meg, amíg a hibakereső csatlakozik.

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

  4. Meg kell adnia a VS Code-nak azt az IP-címet, amelyhez a hibakeresőt egy launch.json fájllal csatlakoztatja.

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

  1. Adja hozzá a következő importálási utasításokat:

    import argparse
    import os
    import debugpy
    import socket
    from azureml.core import Run
    
  2. 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')
    
  3. 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()
    
  4. 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 és PORT az HOST értékek a listen 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

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

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

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

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

    3. Mentse a launch.json fájlt.

A hibakereső csatlakoztatása

  1. Nyissa meg a VS Code-ot, és nyissa meg a szkript helyi példányát.

  2. Állítson be olyan töréspontokat, ahol le szeretné állítani a szkriptet a csatolás után.

  3. 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 = Falsea , 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 az Timeout 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

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

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

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

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

    3. Mentse a launch.json fájlt.

Hibakeresést tartalmazó lemezkép létrehozása

  1. 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())
    
  2. 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...")
    
  3. 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 ez model az üzembe helyezett modell. A myenv.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>
    
  4. 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.

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

  2. A 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őt debug: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ó VS Code-felülete

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

    A tároló futtatási konzoljának kimenete

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

    A hibakeresés ikon, a hibakeresés indítása gomb és a konfigurációválasztó

    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:

    A tároló hibakeresője által csatolt információk

    Emellett a fő VS Code-felületen a következőket láthatja:

    A VS Code töréspontja a score.py

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: