Megosztás a következőn keresztül:


Pontozási szkriptek hibakeresése az Azure Machine Learning következtetési HTTP-kiszolgálójával

Az Azure Machine Learning következtetési HTTP-kiszolgáló egy Python-csomag, amely a pontozási függvényt HTTP-végpontként teszi elérhetővé, és a Flask-kiszolgáló kódját és függőségeit egy egyedi csomagba csomagolja. A kiszolgáló szerepel az előre összeállított Docker-rendszerképekben a modell Azure Machine Learningben való üzembe helyezésekor használt következtetés érdekében. Egyedül a csomag használatával helyileg telepítheti a modellt éles környezetben, és egyszerűen ellenőrizheti a pontozási (belépési) szkriptet egy helyi fejlesztési környezetben. Ha probléma van a pontozási szkripttel, a kiszolgáló hibát és a hiba helyét adja vissza.

A kiszolgáló használható érvényesítési kapuk létrehozására is egy folyamatos integrációs és üzembehelyezési folyamatban. Elindíthatja például a kiszolgálót a jelölt szkripttel, és futtathatja a tesztcsomagot a helyi végponton.

Ez a cikk azokat a fejlesztőket támogatja, akik a következtetési kiszolgálóval szeretnének helyi hibakeresést végezni, és ismerteti, hogyan használhatja a következtetési kiszolgálót online végpontokkal Windows rendszeren.

Előfeltételek

Ha az Azure Machine Learning-következtetés HTTP-kiszolgálóját szeretné használni a helyi hibakereséshez, a konfigurációnak tartalmaznia kell a következő összetevőket:

  • Python 3.8 vagy újabb
  • Anaconda

Az Azure Machine Learning következtetési HTTP-kiszolgáló Windows- és Linux-alapú operációs rendszereken fut.

Az online végpontok helyi hibakeresési lehetőségeinek megismerása

A végpontok helyi hibakeresésével, mielőtt üzembe helyezené a felhőben, korábban észlelheti a kódban és a konfigurációban felmerülő hibákat. A végpontok helyi hibakereséséhez több lehetősége is van, például:

  • Az Azure Machine Learning következtetési HTTP-kiszolgálója
  • Helyi végpont

Ez a cikk bemutatja, hogyan használható az Azure Machine Learning következtetési HTTP-kiszolgáló windowsos használata.

Az alábbi táblázat áttekintést nyújt azokról a forgatókönyvekről, amelyek segítenek kiválasztani a legjobb lehetőséget:

Eset Következtetés HTTP-kiszolgáló Helyi végpont
Helyi Python-környezet frissítése Docker-rendszerkép újraépítése nélkül Igen Nem
Pontozási szkript frissítése Igen Igen
Üzembehelyezési konfigurációk frissítése (üzembe helyezés, környezet, kód, modell) Nem Igen
A Microsoft Visual Studio Code (VS Code) hibakeresőjének integrálása Igen Igen

Ha helyileg futtatja a következtetési HTTP-kiszolgálót, a pontozószkript hibakeresésére összpontosíthat anélkül, hogy az üzembe helyezési tároló konfigurációi miatt aggódna.

Az azureml-inference-server-http csomag telepítése

A azureml-inference-server-http csomag telepítéséhez futtassa a következő parancsot:

python -m pip install azureml-inference-server-http

Feljegyzés

A csomagütközések elkerülése érdekében telepítse a következtetési HTTP-kiszolgálót egy virtuális környezetben. A parancs segítségével engedélyezheti a pip install virtualenv virtuális környezeteket a konfigurációhoz.

A pontozási szkript helyi hibakeresése

A pontozószkript helyi hibakereséséhez több lehetősége van a kiszolgáló viselkedésének tesztelésére:

  • Próbáljon ki egy hamis pontozási szkriptet.
  • A Visual Studio Code használatával hibakeresést végezhet az azureml-inference-server-http csomaggal.
  • Futtasson egy tényleges pontozószkriptet, modellfájlt és környezeti fájlt a példák adattárából.

Kiszolgáló viselkedésének tesztelése próbapontozási szkripttel

  1. Hozzon létre egy server_quickstart nevű könyvtárat a fájlok tárolásához:

    mkdir server_quickstart
    cd server_quickstart
    
  2. A csomagütközések elkerülése érdekében hozzon létre egy virtuális környezetet( például myenv), és aktiválja azt:

    python -m virtualenv myenv
    

    Feljegyzés

    Linuxon futtassa a source myenv/bin/activate parancsot a virtuális környezet aktiválásához.

    A kiszolgáló tesztelése után futtathatja a parancsot a deactivate Python virtuális környezet inaktiválásához.

  3. Telepítse a csomagot a azureml-inference-server-http pypi-hírcsatornából :

    python -m pip install azureml-inference-server-http
    
  4. Hozza létre a bejegyzésszkriptet. Az alábbi példa létrehoz egy alapszintű bejegyzésszkriptet, és egy score.py nevű fájlba menti:

    echo -e "import time def init(): \n\t time.sleep(1) \n\n def run(input_data): \n\t return {"message":"Hello, World!"}" > score.py
    
  5. Indítsa el a kiszolgálót a azmlinfsrv paranccsal, és állítsa be a score.py fájlt belépési szkriptként:

    azmlinfsrv --entry_script score.py
    

    Feljegyzés

    A kiszolgáló a 0.0.0.0-s rendszeren van üzemeltetve, ami azt jelenti, hogy az üzemeltető gép összes IP-címét figyeli.

  6. Pontozási kérés küldése a kiszolgálónak a curl segédprogrammal:

    curl -p 127.0.0.1:5001/score
    

    A kiszolgáló a következő választ adja:

    {"message": "Hello, World!"}
    
  7. A tesztelés után válassza a Ctrl + C billentyűkombinációt a kiszolgáló leállításához.

Most módosíthatja a pontozószkriptfájlt (score.py), és tesztelheti a módosításokat a kiszolgáló ismételt futtatásával a azmlinfsrv --entry_script score.py paranccsal.

Integrálás a Visual Studio Code-tal

Ha a VS Code-ot és a Python-bővítményt szeretné használni az azureml-inference-server-http csomaggal végzett hibakereséshez, használhatja az Indítás és csatolás módot.

  • Indítási mód esetén állítsa be a launch.json fájlt a VS Code-ban, és indítsa el az Azure Machine Learning következtetési HTTP-kiszolgálóját a VS Code-ban:

    1. Indítsa el a VS Code-ot, és nyissa meg a szkriptet tartalmazó mappát (score.py).

    2. Adja hozzá a következő konfigurációt az adott munkaterület launch.json fájlhoz a VS Code-ban:

      launch.json

      {
          "version": "0.2.0",
          "configurations": [
              {
                  "name": "Debug score.py",
                  "type": "python",
                  "request": "launch",
                  "module": "azureml_inference_server_http.amlserver",
                  "args": [
                      "--entry_script",
                      "score.py"
                  ]
              }
          ]
        }
      
    3. Indítsa el a hibakeresési munkamenetet a VS Code-ban a Hibakeresés indítása vagy>az F5 billentyűparancs használatával.

  • Csatolási mód esetén indítsa el az Azure Machine Learning következtetési HTTP-kiszolgálóját egy parancsablakban, és a VS Code és a Python-bővítmény használatával csatolja a folyamatot:

    Feljegyzés

    Linux esetén először telepítse a gdb csomagot a sudo apt-get install -y gdb parancs futtatásával.

    1. Adja hozzá a következő konfigurációt az adott munkaterület launch.json fájlhoz a VS Code-ban:

      launch.json

      {
          "version": "0.2.0",
          "configurations": [
              {
                  "name": "Python: Attach using Process Id",
                  "type": "python",
                  "request": "attach",
                  "processId": "${command:pickProcess}",
                  "justMyCode": true
              }
          ]
        }
      
    2. A parancsablakban indítsa el a következtetési HTTP-kiszolgálót a azmlinfsrv --entry_script score.py parancs használatával.

    3. Indítsa el a hibakeresési munkamenetet a VS Code-ban:

      1. Válassza a Hibakeresés indítása lehetőséget>, vagy használja az F5 billentyűparancsot.

      2. A parancsablakban tekintse meg a következtetési kiszolgáló naplóit, és keresse meg a azmlinfsrv parancs folyamatazonosítóját (nem a következőt gunicorn):

        Képernyőkép egy parancsablakról, amely a következtetési HTTP-kiszolgáló naplóit és a kiemelt azmlinfsrv parancs folyamatazonosítóját jeleníti meg.

      3. A VS Code Debuggerben adja meg a parancs folyamatazonosítóját azmlinfsrv .

        Ha nem látja a VS Code folyamatválasztóját, manuálisan is megadhatja a folyamatazonosítót az processId adott munkaterület launch.json fájljának mezőjébe.

Mindkét mód esetében beállíthatja a töréspontokat , és lépésről lépésre hibakeresést végezhet a szkriptben.

Végpontok közötti példa használata

Az alábbi eljárás helyileg futtatja a kiszolgálót mintafájlokkal (pontozószkript, modellfájl és környezet) az Azure Machine Learning-példatárból. További példák a mintafájlok használatára: Gépi tanulási modell üzembe helyezése és pontozása online végpont használatával.

  1. Klónozza a mintaadattárat:

    git clone --depth 1 https://github.com/Azure/azureml-examples
    cd azureml-examples/cli/endpoints/online/model-1/
    
  2. Virtuális környezet létrehozása és aktiválása a Conda használatával:

    Ebben a példában a azureml-inference-server-http csomag automatikusan telepítve van. A csomag a csomag függő könyvtáraként szerepel a azureml-defaults conda.yml fájlban:

    # Create the environment from the YAML file
    conda env create --name model-env -f ./environment/conda.yml
    # Activate the new environment
    conda activate model-env
    
  3. Tekintse át a pontozási szkriptet:

    onlinescoring/score.py

    import os
    import logging
    import json
    import numpy
    import joblib
    
    
    def init():
        """
        This function is called when the container is initialized/started, typically after create/update of the deployment.
        You can write the logic here to perform init operations like caching the model in memory
        """
        global model
        # AZUREML_MODEL_DIR is an environment variable created during deployment.
        # It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION)
        # Please provide your model's folder name if there is one
        model_path = os.path.join(
            os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl"
        )
        # deserialize the model file back into a sklearn model
        model = joblib.load(model_path)
        logging.info("Init complete")
    
    
    def run(raw_data):
        """
        This function is called for every invocation of the endpoint to perform the actual scoring/prediction.
        In the example we extract the data from the json input and call the scikit-learn model's predict()
        method and return the result back
        """
        logging.info("model 1: request received")
        data = json.loads(raw_data)["data"]
        data = numpy.array(data)
        result = model.predict(data)
        logging.info("Request processed")
        return result.tolist()
    
  4. Futtassa a következtetési HTTP-kiszolgálót a pontozószkript és a modellfájl megadásával:

    A paraméterben model_dir megadott modellkönyvtár a változó használatával AZUREML_MODEL_DIR van definiálva, és lekéri a pontozási szkriptben.

    Ebben az esetben az aktuális könyvtárat adja meg./ mert az alkönyvtár a pontozó szkriptben model/sklearn_regression_model.pkl néven van megadva.

    azmlinfsrv --entry_script ./onlinescoring/score.py --model_dir ./
    

    Amikor a kiszolgáló elindítja és sikeresen meghívja a pontozási szkriptet, megnyílik a példa indítási naplója . Ellenkező esetben a napló hibaüzeneteket jelenít meg.

  5. A pontozási szkript tesztelése mintaadatokkal:

    Nyisson meg egy másik parancsablakot, és váltson ugyanabba a munkakönyvtárba, ahol a parancsot futtatja.

    curl A segédprogrammal példakérést küldhet a kiszolgálónak, és pontozási eredményt kaphat:

    curl --request POST "127.0.0.1:5001/score" --header "Content-Type:application/json" --data @sample-request.json
    

    Ha a pontozási szkriptben nincsenek problémák, a szkript visszaadja a pontozási eredményt. Ha problémák lépnek fel, megpróbálhatja frissíteni a pontozási szkriptet, és újra elindíthatja a kiszolgálót a frissített szkript teszteléséhez.

Kiszolgálóútvonalak áttekintése

A következtetési HTTP-kiszolgáló alapértelmezés szerint az 5001-es porton figyeli az alábbi útvonalakat:

Név Útvonal
Élőség-mintavétel 127.0.0.1:5001/
Pontszám 127.0.0.1:5001/score
OpenAPI (swagger) 127.0.0.1:5001/swagger.json

Kiszolgálóparaméterek áttekintése

A következtetési HTTP-kiszolgáló a következő paramétereket fogadja el:

Paraméter Kötelező Alapértelmezett Leírás
entry_script Igaz n/a Azonosítja a pontozó szkript relatív vagy abszolút elérési útját.
model_dir Hamis n/a A következtetéshez használt modellt tartalmazó könyvtár relatív vagy abszolút elérési útját azonosítja.
port Hamis 5001 A kiszolgáló kiszolgálói portját adja meg.
worker_count Hamis 0 Megadja az egyidejű kérések feldolgozásához tartozó feldolgozói szálak számát.
appinsights_instrumentation_key Hamis n/a Megadja a rendszerállapotkulcsot az alkalmazáselemzésekhez, ahol a naplók közzé vannak téve.
access_control_allow_origins Hamis n/a Engedélyezi a CORS-t a megadott forrásokhoz, ahol több forrás vesszővel (,) van elválasztva, például microsoft.com, bing.com.

A kiszolgálókérések feldolgozásának megismerése

Az alábbi lépések bemutatják, hogyan kezeli az Azure Machine Learning következtetési HTTP-kiszolgálója (azmlinfsrv) a bejövő kéréseket:

  1. A Python CLI-burkoló a kiszolgáló hálózati veremén helyezkedik el, és a kiszolgáló elindítására szolgál.

  2. Az ügyfél kérést küld a kiszolgálónak.

  3. A kiszolgáló a kérést a webkiszolgáló átjárófelületén (WSGI) keresztül küldi el, amely elküldi a kérést egy Flask-feldolgozó alkalmazásnak:

  4. A Flask feldolgozó alkalmazás kezeli a kérést, amely magában foglalja a beviteli szkript és a függőségek betöltését is.

  5. A belépési szkript megkapja a kérést. A bejegyzésszkript következtetési hívást indít a betöltött modellre, és választ ad vissza:

Diagram, amely bemutatja, hogy a következtetési HTTP-kiszolgáló hogyan dolgozza fel a bejövő kéréseket.

A kiszolgálónaplók felfedezése

A következtetési HTTP-kiszolgáló tesztjének naplóadatai kétféleképpen kérhetőek le:

  • Futtassa a azureml-inference-server-http csomagot helyileg, és tekintse meg a naplók kimenetét.
  • Online végpontok használata és a tárolónaplók megtekintése. A következtetési kiszolgáló naplójának neve Azure Machine Learning Inferencing HTTP-kiszolgáló <verziója>.

Feljegyzés

A naplózási formátum a 0.8.0-s verzió óta megváltozott. Ha a napló a várttól eltérő stílust használ, frissítse a azureml-inference-server-http csomagot a legújabb verzióra.

Indítási naplók megtekintése

A kiszolgáló indításakor a naplók az alábbiak szerint jelenítik meg a kezdeti kiszolgálóbeállításokat:

Azure Machine Learning Inferencing HTTP server <version>

Server Settings
---------------
Entry Script Name: <entry_script>
Model Directory: <model_dir>
Worker Count: <worker_count>
Worker Timeout (seconds): None
Server Port: <port>
Application Insights Enabled: false
Application Insights Key: <appinsights_instrumentation_key>
Inferencing HTTP server version: azmlinfsrv/<version>
CORS for the specified origins: <access_control_allow_origins>

Server Routes
---------------
Liveness Probe: GET   127.0.0.1:<port>/
Score:          POST  127.0.0.1:<port>/score

<logs>

Ha például a végpontok közötti példát követve indítja el a kiszolgálót, a napló a következőképpen jelenik meg:

Azure Machine Learning Inferencing HTTP server v0.8.0

Server Settings
---------------
Entry Script Name: /home/user-name/azureml-examples/cli/endpoints/online/model-1/onlinescoring/score.py
Model Directory: ./
Worker Count: 1
Worker Timeout (seconds): None
Server Port: 5001
Application Insights Enabled: false
Application Insights Key: None
Inferencing HTTP server version: azmlinfsrv/0.8.0
CORS for the specified origins: None

Server Routes
---------------
Liveness Probe: GET   127.0.0.1:5001/
Score:          POST  127.0.0.1:5001/score

2022-12-24 07:37:53,318 I [32726] gunicorn.error - Starting gunicorn 20.1.0
2022-12-24 07:37:53,319 I [32726] gunicorn.error - Listening at: http://0.0.0.0:5001 (32726)
2022-12-24 07:37:53,319 I [32726] gunicorn.error - Using worker: sync
2022-12-24 07:37:53,322 I [32756] gunicorn.error - Booting worker with pid: 32756
Initializing logger
2022-12-24 07:37:53,779 I [32756] azmlinfsrv - Starting up app insights client
2022-12-24 07:37:54,518 I [32756] azmlinfsrv.user_script - Found user script at /home/user-name/azureml-examples/cli/endpoints/online/model-1/onlinescoring/score.py
2022-12-24 07:37:54,518 I [32756] azmlinfsrv.user_script - run() is not decorated. Server will invoke it with the input in JSON string.
2022-12-24 07:37:54,518 I [32756] azmlinfsrv.user_script - Invoking user's init function
2022-12-24 07:37:55,974 I [32756] azmlinfsrv.user_script - Users's init has completed successfully
2022-12-24 07:37:55,976 I [32756] azmlinfsrv.swagger - Swaggers are prepared for the following versions: [2, 3, 3.1].
2022-12-24 07:37:55,977 I [32756] azmlinfsrv - AML_FLASK_ONE_COMPATIBILITY is set, but patching is not necessary.

A naplóadatok formátumának ismertetése

A következtetési HTTP-kiszolgáló összes naplója a indítószkript kivételével az alábbi formátumban jeleníti meg az adatokat:

<UTC Time> | <level> [<pid>] <logger name> - <message>

A bejegyzés a következő összetevőkből áll:

  • <UTC Time>: A bejegyzés naplóba való bevitelének időpontja.
  • <pid>: A bejegyzéshez társított folyamat azonosítója.
  • <level>: A bejegyzés naplózási szintjének első karaktere( például E HIBA, I INFORMÁCIÓ stb.).
  • <logger name>: A naplóbejegyzéshez társított erőforrás neve.
  • <message>: A naplóüzenet tartalma.

A Pythonban a naplózásnak hat szintje van a súlyosságnak megfelelően hozzárendelt numerikus értékekkel:

Naplózási szint Számérték
KRITIKUS 50
HIBA 40
FIGYELMEZTETÉS 30
INFÓ 20
DEBUG 10
NOTSET 0

Kiszolgálóproblémák elhárítása

Az alábbi szakaszok alapvető hibaelhárítási tippeket nyújtanak az Azure Machine Learning következtetési HTTP-kiszolgálójához. Az online végpontok hibaelhárításához tekintse meg az online végpontok üzembe helyezésének hibaelhárítását.

Telepített csomagok ellenőrzése

A telepített csomagokkal kapcsolatos problémák megoldásához kövesse az alábbi lépéseket.

  1. Információkat gyűjthet a Python-környezet telepített csomagjairól és verzióiról.

  2. Ellenőrizze, hogy a azureml-inference-server-http környezeti fájlban megadott Python-csomag verziója megegyezik-e az indítási naplóban megjelenített Azure Machine Learning-következtetés HTTP-kiszolgáló verziójával.

    Bizonyos esetekben a pipfüggőség-feloldó nem várt csomagverziókat telepít. Előfordulhat, hogy futtatnia pip kell a telepített csomagok és verziók kijavításához.

  3. Ha megadja a Flaskot vagy annak függőségeit a környezetben, távolítsa el ezeket az elemeket.

    • A függő csomagok a következők: flask, jinja2, itsdangerous, werkzeug, markupsafeés click.
    • flask függőségként szerepel a kiszolgálócsomagban. A legjobb módszer, ha engedélyezi a következtetési kiszolgáló számára a flask csomag telepítését.
    • Ha a következtetési kiszolgáló úgy van konfigurálva, hogy támogassa a Flask új verzióit, a kiszolgáló automatikusan megkapja a csomagfrissítéseket, amint elérhetővé válnak.

Kiszolgáló verziójának ellenőrzése

A azureml-inference-server-http kiszolgálócsomag közzé van téve a PyPI-ban. A PyPI-oldal felsorolja a változásnaplót és az összes korábbi verziót.

Ha korábbi csomagverziót használ, frissítse a konfigurációt a legújabb verzióra. Az alábbi táblázat a stabil verziókat, a gyakori problémákat és a javasolt módosításokat foglalja össze:

Csomag verziója Leírás Probléma Feloldás
0.4.x Betanítási képekbe csomagolva, dátummal 20220601 vagy korábbi dátummal, valamint azureml-defaults csomagverziókkal.1.34.1.43 A legújabb stabil verzió a 0.4.13. A 0.4.11-nél korábbi kiszolgálóverziók esetében előfordulhat, hogy a Flask függőségi problémái merülnek fel, például"can't import name Markup from jinja2". Ha lehetséges, frissítsen a 0.4.13-es vagy a 0.8.x-es verzióra.
0.6.x Előre telepítette a dátummal és a korábbi dátummal megadott 20220516 képek következtetését. A legújabb stabil verzió a 0.6.1. N.A. N.A.
0.7.x Támogatja a Flask 2-t. A legújabb stabil verzió a 0.7.7. N.A. N.A.
0.8.x A naplóformátum megváltozott. A Python 3.6 támogatása véget ért. N.A. N.A.

Csomagfüggőségek ellenőrzése

A kiszolgálócsomag legfontosabb függő csomagjai a azureml-inference-server-http következők:

  • flask
  • opencensus-ext-azure
  • inference-schema

Ha a csomagot Python-környezetben azureml-defaults adta meg, a azureml-inference-server-http csomag függő csomag. A függőség telepítése automatikusan megtörténik.

Tipp.

Ha Python SDK v1-et használ, és nem adja meg explicit módon a csomagot a azureml-defaults Python-környezetben, előfordulhat, hogy az SDK automatikusan hozzáadja a csomagot. A csomagkezelő verziója azonban az SDK-verzióhoz képest zárolva van. Ha például az SDK verziója, 1.38.0akkor a rendszer hozzáadja a azureml-defaults==1.38.0 bejegyzést a környezet pipkövetelményeihez.

TypeError a kiszolgáló indításakor

A kiszolgáló indításakor az alábbiakat TypeError tapasztalhatja:

TypeError: register() takes 3 positional arguments but 4 were given

  File "/var/azureml-server/aml_blueprint.py", line 251, in register

    super(AMLBlueprint, self).register(app, options, first_registration)

TypeError: register() takes 3 positional arguments but 4 were given

Ez a hiba akkor fordul elő, ha a Flask 2 telepítve van a Python-környezetben, de a azureml-inference-server-http csomag verziója nem támogatja a Flask 2-t. A Flask 2 támogatása a 0.7.0-s és újabb csomagban, valamint azureml-defaults az 1.44-es és újabb csomagban azureml-inference-server-http érhető el.

  • Ha nem használja a Flask 2 csomagot egy Azure Machine Learning Docker-rendszerképben, használja a azureml-inference-server-http csomag legújabb azureml-defaults verzióját.

  • Ha a Flask 2 csomagot egy Azure Machine Learning Docker-rendszerképben használja, győződjön meg arról, hogy a rendszerkép buildjének verziója 2022 . júliusi vagy újabb.

    A rendszerkép verziója a tárolónaplókban található. Példa:

    2022-08-22T17:05:02,147738763+00:00 | gunicorn/run | AzureML Container Runtime Information
    2022-08-22T17:05:02,161963207+00:00 | gunicorn/run | ###############################################
    2022-08-22T17:05:02,168970479+00:00 | gunicorn/run | 
    2022-08-22T17:05:02,174364834+00:00 | gunicorn/run | 
    2022-08-22T17:05:02,187280665+00:00 | gunicorn/run | AzureML image information: openmpi4.1.0-ubuntu20.04, Materialization Build:20220708.v2
    2022-08-22T17:05:02,188930082+00:00 | gunicorn/run | 
    2022-08-22T17:05:02,190557998+00:00 | gunicorn/run | 
    

    A kép buildelési dátuma a Materialization Build jelölés után jelenik meg. Az előző példában a kép verziója 20220708 vagy 2022. július 8. A példában szereplő kép kompatibilis a Flask 2-vel.

    Ha nem lát hasonló üzenetet a tárolónaplóban, a rendszerkép elavult, ezért frissítenie kell. Ha számítási egyesített eszközarchitektúra (CUDA) rendszerképet használ, és nem talál újabb rendszerképet, ellenőrizze, hogy a rendszerkép elavult-e az AzureML-Tárolókban. Az elavult képekhez kijelölt helyettesítőket is megtalálhatja.

    Ha a kiszolgálót online végponttal használja, a naplókat az Azure Machine Learning Studio Végpontok lapján található Naplók lapon is megtalálhatja.

Ha az SDK 1-es verziójával telepít, és nem ad meg explicit módon lemezképet az üzembe helyezési konfigurációban, a kiszolgáló a openmpi4.1.0-ubuntu20.04 csomagot a helyi SDK-eszközkészletnek megfelelő verzióval alkalmazza. Előfordulhat azonban, hogy a telepített verzió nem a rendszerkép legújabb elérhető verziója.

Az SDK 1.43-es verziója esetén a kiszolgáló alapértelmezés szerint telepíti a openmpi4.1.0-ubuntu20.04:20220616 csomagverziót, de ez a csomagverzió nem kompatibilis az SDK 1.43-zal. Győződjön meg arról, hogy a legújabb SDK-t használja az üzembe helyezéshez.

Ha nem tudja frissíteni a képet, ideiglenesen elkerülheti a problémát a azureml-defaults==1.43 környezeti fájlban lévő bejegyzések vagy azureml-inference-server-http~=0.4.13 bejegyzések rögzítésével. Ezek a bejegyzések arra utasítják a kiszolgálót, hogy telepítse a régebbi verziót a következővel flask 1.0.x: .

ImportError vagy ModuleNotFoundError a kiszolgáló indításakor

Előfordulhat, hogy a kiszolgáló indításakor egy ImportError vagy ModuleNotFoundError több modullal találkozik, például opencensus, jinja2, markupsafevagy click. Az alábbi példa a hibaüzenetet mutatja be:

ImportError: cannot import name 'Markup' from 'jinja2'

Az importálási és modulhibák akkor fordulnak elő, ha a kiszolgáló 0.4.10-es vagy korábbi verzióit használja, amelyek nem rögzítik a Flask-függőséget egy kompatibilis verzióra. A probléma elkerülése érdekében telepítse a kiszolgáló egy későbbi verzióját.