Delen via


Fouten opsporen in scorescripts met Azure Machine Learning-deductie-HTTP-server

De HTTP-server van Azure Machine Learning-deductie is een Python-pakket dat uw scorefunctie beschikbaar maakt als een HTTP-eindpunt en de Flask-servercode en afhankelijkheden verpakt in een enkel pakket. De server is opgenomen in de vooraf gemaakte Docker-installatiekopieën voor deductie die worden gebruikt bij het implementeren van een model met Azure Machine Learning. Met behulp van het pakket kunt u het model lokaal implementeren voor productie en eenvoudig uw scorescript (invoerscript) valideren in een lokale ontwikkelomgeving. Als er een probleem is met het scorescript, retourneert de server een fout en de locatie van de fout.

De server kan ook worden gebruikt om validatiepoorten te maken in een pijplijn voor continue integratie en implementatie. U kunt bijvoorbeeld de server starten met het kandidaatscript en de testsuite uitvoeren op het lokale eindpunt.

Dit artikel ondersteunt ontwikkelaars die de deductieserver willen gebruiken om lokaal fouten op te sporen en beschrijft hoe u de deductieserver gebruikt met online-eindpunten in Windows.

Vereisten

Als u de HTTP-server voor deductie van Azure Machine Learning wilt gebruiken voor lokale foutopsporing, moet uw configuratie de volgende onderdelen bevatten:

  • Python 3.8 of hoger
  • Anaconda

De AZURE Machine Learning-deductie-HTTP-server wordt uitgevoerd op Windows- en Linux-besturingssystemen.

Opties voor lokale foutopsporing voor online-eindpunten verkennen

Door lokaal fouten in eindpunten op te sporen voordat u in de cloud implementeert, kunt u eerder fouten in uw code en configuratie opsporen. Als u lokaal fouten wilt opsporen in eindpunten, hebt u verschillende opties, waaronder:

  • De HTTP-server voor deductie van Azure Machine Learning
  • Een lokaal eindpunt

In dit artikel wordt beschreven hoe u kunt werken met de HTTP-server voor Azure Machine Learning-deductie in Windows.

De volgende tabel bevat een overzicht van scenario's om u te helpen de beste optie te kiezen:

Scenario HTTP-server voor deductie Lokaal eindpunt
Lokale Python-omgeving bijwerken zonder opnieuw opbouwen van Docker-installatiekopieën Ja Nr.
Scorescript bijwerken Ja Ja
Implementatieconfiguraties bijwerken (implementatie, omgeving, code, model) Nr. Ja
Foutopsporingsprogramma van Microsoft Visual Studio Code (VS Code) integreren Ja Ja

Wanneer u de HTTP-deductieserver lokaal uitvoert, kunt u zich richten op het opsporen van fouten in uw scorescript zonder dat u zich zorgen hoeft te maken over implementatiecontainerconfiguraties.

Azureml-inference-server-http-pakket installeren

Voer de volgende opdracht uit om het azureml-inference-server-http pakket te installeren:

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

Notitie

Installeer de HTTP-deductieserver in een virtuele omgeving om pakketconflicten te voorkomen. U kunt de pip install virtualenv opdracht gebruiken om virtuele omgevingen in te schakelen voor uw configuratie.

Fouten opsporen in uw scorescript lokaal

Als u lokaal fouten wilt opsporen in uw scorescript, hebt u verschillende opties voor het testen van het servergedrag:

Servergedrag testen met dummy scorescript

  1. Maak een map met de naam server_quickstart om uw bestanden op te slaan:

    mkdir server_quickstart
    cd server_quickstart
    
  2. Als u pakketconflicten wilt voorkomen, maakt u een virtuele omgeving, zoals myenv, en activeert u deze:

    python -m virtualenv myenv
    

    Notitie

    Voer in Linux de source myenv/bin/activate opdracht uit om de virtuele omgeving te activeren.

    Nadat u de server hebt getest, kunt u de deactivate opdracht uitvoeren om de virtuele Python-omgeving te deactiveren.

  3. Installeer het azureml-inference-server-http pakket vanuit de pypi-feed :

    python -m pip install azureml-inference-server-http
    
  4. Maak het invoerscript. In het volgende voorbeeld wordt een basisinvoerscript gemaakt en opgeslagen in een bestand met de naam score.py:

    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. Start de server met de azmlinfsrv opdracht en stel het score.py-bestand in als het invoerscript:

    azmlinfsrv --entry_script score.py
    

    Notitie

    De server wordt gehost op 0.0.0.0.0, wat betekent dat deze luistert naar alle IP-adressen van de hostingcomputer.

  6. Verzend een scoreaanvraag naar de server met behulp van het curl hulpprogramma:

    curl -p 127.0.0.1:5001/score
    

    De server plaatst het volgende antwoord:

    {"message": "Hello, World!"}
    
  7. Nadat u de server hebt getest, selecteert u Ctrl+ C om de server te beëindigen.

U kunt nu het scorescriptbestand (score.py) wijzigen en uw wijzigingen testen door de server opnieuw uit te voeren met de azmlinfsrv --entry_script score.py opdracht.

Integreren met Visual Studio Code

Als u VS Code en de Python-extensie wilt gebruiken voor foutopsporing met het pakket azureml-inference-server-http , kunt u de modi Launch en Attach gebruiken.

  • Voor de startmodus stelt u het launch.json-bestand in VS Code in en start u de HTTP-server van Azure Machine Learning-deductie in VS Code:

    1. Start VS Code en open de map met het script (score.py).

    2. Voeg de volgende configuratie toe aan het launch.json-bestand voor die werkruimte in VS Code:

      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. Start de foutopsporingssessie in VS Code door Foutopsporing> uitvoeren te selecteren of gebruik de sneltoets F5.

  • Voor de bijlagemodus start u de HTTP-server van Deductie van Azure Machine Learning in een opdrachtvenster en gebruikt u VS Code met de Python-extensie om aan het proces te koppelen:

    Notitie

    Voor Linux installeert u eerst het gdb pakket door de opdracht uit te sudo apt-get install -y gdb voeren.

    1. Voeg de volgende configuratie toe aan het launch.json-bestand voor die werkruimte in VS Code:

      launch.json

      {
          "version": "0.2.0",
          "configurations": [
              {
                  "name": "Python: Attach using Process Id",
                  "type": "python",
                  "request": "attach",
                  "processId": "${command:pickProcess}",
                  "justMyCode": true
              }
          ]
        }
      
    2. Start in een opdrachtvenster de deductie-HTTP-server met behulp van de azmlinfsrv --entry_script score.py opdracht.

    3. Start de foutopsporingssessie in VS Code:

      1. >Selecteer Foutopsporing uitvoeren of gebruik de sneltoets F5.

      2. Bekijk in het opdrachtvenster de logboeken van de deductieserver en zoek de proces-id van de azmlinfsrv opdracht (niet de gunicorn):

        Schermopname van een opdrachtvenster met logboeken van de deductie-HTTP-server en de proces-id van de azmlinfsrv-opdracht gemarkeerd.

      3. Voer in het FOUTopsporingsprogramma van VS Code de proces-id van de azmlinfsrv opdracht in.

        Als u de VS Code-proceskiezer niet ziet, kunt u de proces-id handmatig invoeren in het processId veld van het launch.json-bestand voor die werkruimte.

Voor beide modi kunt u onderbrekingspunten instellen en stapsgewijs fouten in het script opsporen.

Een end-to-end-voorbeeld gebruiken

Met de volgende procedure wordt de server lokaal uitgevoerd met voorbeeldbestanden (scorescript, modelbestand en omgeving) vanuit de Azure Machine Learning-voorbeeldopslagplaats. Zie Een machine learning-model implementeren en beoordelen met behulp van een online-eindpunt voor meer voorbeelden van het gebruik van deze voorbeeldbestanden.

  1. Kloon de voorbeeldopslagplaats:

    git clone --depth 1 https://github.com/Azure/azureml-examples
    cd azureml-examples/cli/endpoints/online/model-1/
    
  2. Een virtuele omgeving maken en activeren met conda:

    In dit voorbeeld wordt het azureml-inference-server-http pakket automatisch geïnstalleerd. Het pakket is opgenomen als een afhankelijke bibliotheek van het azureml-defaults pakket in het bestand conda.yml :

    # 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. Controleer uw scorescript:

    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. Voer de HTTP-deductieserver uit door het scorescript en modelbestand op te geven:

    De modelmap die in de model_dir parameter is opgegeven, wordt gedefinieerd met behulp van de AZUREML_MODEL_DIR variabele en opgehaald in het scorescript.

    In dit geval geeft u de huidige map op./ omdat de submap is opgegeven in het scorescript als model/sklearn_regression_model.pkl.

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

    Wanneer de server wordt gestart en het scorescript is aangeroepen, wordt het voorbeeld van het opstartlogboek geopend. Anders worden in het logboek foutberichten weergegeven.

  5. Test het scorescript met voorbeeldgegevens:

    Open een ander opdrachtvenster en ga naar dezelfde werkmap waarin u de opdracht uitvoert.

    Gebruik het curl hulpprogramma om een voorbeeldaanvraag naar de server te verzenden en een scoreresultaat te ontvangen:

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

    Wanneer er geen problemen zijn met het scorescript, retourneert het script het scoreresultaat. Als er problemen optreden, kunt u proberen het scorescript bij te werken en de server opnieuw te starten om het bijgewerkte script te testen.

Serverroutes controleren

De deductie HTTP-server luistert standaard op poort 5001 op de volgende routes:

Naam Route
Levenheidstest 127.0.0.1:5001/
Score 127.0.0.1:5001/score
OpenAPI (swagger) 127.0.0.1:5001/swagger.json

Serverparameters controleren

De deductie-HTTP-server accepteert de volgende parameters:

Parameter Vereist Default Omschrijving
entry_script Waar N.v.t. Identificeert het relatieve of absolute pad naar het scorescript.
model_dir Onwaar N.v.t. Identificeert het relatieve of absolute pad naar de map die het model bevat dat wordt gebruikt voor deductie.
port Onwaar 5001 Hiermee geeft u de serverpoort van de server.
worker_count Onwaar 1 Biedt het aantal werkrolthreads voor het verwerken van gelijktijdige aanvragen.
appinsights_instrumentation_key Onwaar N.v.t. Biedt de instrumentatiesleutel voor de application insights waar de logboeken worden gepubliceerd.
access_control_allow_origins Onwaar N.v.t. Hiermee schakelt u CORS in voor de opgegeven oorsprongen, waarbij meerdere oorsprongen worden gescheiden door een komma (,), zoals microsoft.com, bing.com.

Verwerking van serveraanvragen verkennen

In de volgende stappen ziet u hoe de HTTP-server voor azure Machine Learning-deductie (azmlinfsrv) binnenkomende aanvragen verwerkt:

  1. Een Python CLI-wrapper bevindt zich rond de netwerkstack van de server en wordt gebruikt om de server te starten.

  2. Een client verzendt een aanvraag naar de server.

  3. De server verzendt de aanvraag via de WSGI-server (Web Server Gateway Interface), die de aanvraag verzendt naar een Flask-werktoepassing:

  4. De Flask-werkrol-app verwerkt de aanvraag, waaronder het laden van het invoerscript en eventuele afhankelijkheden.

  5. Uw invoerscript ontvangt de aanvraag. Het invoerscript maakt een deductieaanroep naar het geladen model en retourneert een antwoord:

Diagram dat laat zien hoe de deductie HTTP-server binnenkomende aanvragen verwerkt.

Serverlogboeken verkennen

Er zijn twee manieren om logboekgegevens te verkrijgen voor de HTTP-servertest voor deductie:

  • Voer het azureml-inference-server-http pakket lokaal uit en bekijk de logboekuitvoer.
  • Gebruik online-eindpunten en bekijk de containerlogboeken. Het logboek voor de deductieserver heeft de naam Azure Machine Learning Inferencing HTTP-serverversie><.

Notitie

De indeling voor logboekregistratie is gewijzigd sinds versie 0.8.0. Als uw logboek een andere stijl gebruikt dan verwacht, werkt u het azureml-inference-server-http pakket bij naar de nieuwste versie.

Opstartlogboeken weergeven

Wanneer de server wordt gestart, worden in de logboeken de eerste serverinstellingen als volgt weergegeven:

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>

Wanneer u bijvoorbeeld de server start door het end-to-end-voorbeeld te volgen, wordt het logboek als volgt weergegeven:

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.

Informatie over de indeling van logboekgegevens

Alle logboeken van de deductie-HTTP-server, met uitzondering van het startprogrammascript, bevatten gegevens in de volgende indeling:

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

De vermelding bestaat uit de volgende onderdelen:

  • <UTC Time>: Tijdstip waarop de vermelding is ingevoerd in het logboek.
  • <pid>: id van het proces dat is gekoppeld aan de vermelding.
  • <level>: Het eerste teken van het logboekregistratieniveau voor de vermelding, zoals E voor ERROR, I voor INFO, enzovoort.
  • <logger name>: Naam van de resource die is gekoppeld aan de logboekvermelding.
  • <message>: Inhoud van het logboekbericht.

Er zijn zes niveaus van logboekregistratie in Python met toegewezen numerieke waarden op basis van ernst:

Niveau van logboekregistratie Numerieke waarde
KRITISCH 50
FOUT 40
WAARSCHUWING 30
INFO 20
DEBUG 10
NOTSET 0

Serverproblemen oplossen

De volgende secties bevatten basistips voor probleemoplossing voor HTTP-server voor Azure Machine Learning-deductie. Zie Problemen met online-eindpunten oplossen om problemen met online-eindpunten op te lossen.

Geïnstalleerde pakketten controleren

Volg deze stappen om problemen met geïnstalleerde pakketten op te lossen.

  1. Verzamel informatie over geïnstalleerde pakketten en versies voor uw Python-omgeving.

  2. Controleer of de azureml-inference-server-http python-pakketversie die is opgegeven in het omgevingsbestand overeenkomt met de HTTP-serverversie van Azure Machine Learning die wordt weergegeven in het opstartlogboek.

    In sommige gevallen installeert de pip-afhankelijkheidsoplossing onverwachte pakketversies. Mogelijk moet u de geïnstalleerde pakketten en versies corrigeren pip .

  3. Als u flask of de bijbehorende afhankelijkheden in uw omgeving opgeeft, verwijdert u deze items.

    • Afhankelijke pakketten zijn onder andere , , , , en clickmarkupsafe. werkzeugitsdangerousjinja2flask
    • flask wordt vermeld als een afhankelijkheid in het serverpakket. De beste methode is om de deductieserver toe te staan het flask pakket te installeren.
    • Wanneer de deductieserver is geconfigureerd ter ondersteuning van nieuwe versies van Flask, ontvangt de server automatisch de pakketupdates zodra deze beschikbaar komen.

Serverversie controleren

Het azureml-inference-server-http serverpakket wordt gepubliceerd naar PyPI. De PyPI-pagina bevat het wijzigingenlogboek en alle vorige versies.

Als u een eerdere pakketversie gebruikt, werkt u uw configuratie bij naar de nieuwste versie. De volgende tabel bevat een overzicht van stabiele versies, veelvoorkomende problemen en aanbevolen aanpassingen:

Versie van het pakket Beschrijving Verzenden Oplossing
0.4.x Gebundeld in trainingsafbeeldingen die zijn gedateerd 20220601 of eerder en azureml-defaults pakketversies .1.34 via 1.43. De nieuwste stabiele versie is 0.4.13. Voor serverversies ouder dan 0.4.11 kunnen Flask-afhankelijkheidsproblemen optreden, zoals "can't import name Markup from jinja2". Voer een upgrade uit naar versie 0.4.13 of 0.8.x, indien mogelijk de nieuwste versie.
0.6.x Vooraf geïnstalleerd in deductie-installatiekopieën die zijn gedateerd 20220516 en eerder. De nieuwste stabiele versie is 0.6.1. N.v.t. N.v.t.
0.7.x Ondersteunt Flask 2. De nieuwste stabiele versie is 0.7.7. N.v.t. N.v.t.
0.8.x De logboekindeling is gewijzigd. Ondersteuning voor Python 3.6 is beëindigd. N.v.t. N.v.t.

Pakketafhankelijkheden controleren

De meest relevante afhankelijke pakketten voor het azureml-inference-server-http serverpakket zijn:

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

Als u het azureml-defaults pakket in uw Python-omgeving hebt opgegeven, is het azureml-inference-server-http pakket een afhankelijk pakket. De afhankelijkheid wordt automatisch geïnstalleerd.

Tip

Als u Python SDK v1 gebruikt en het azureml-defaults pakket niet expliciet opgeeft in uw Python-omgeving, kan de SDK het pakket automatisch toevoegen. De packager-versie is echter vergrendeld ten opzichte van de SDK-versie. Als de SDK-versie bijvoorbeeld is 1.38.0, wordt de azureml-defaults==1.38.0 vermelding toegevoegd aan de pip-vereisten van de omgeving.

TypeError tijdens het opstarten van de server

U kunt het volgende TypeError tegenkomen tijdens het opstarten van de server:

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

Deze fout treedt op wanneer Flask 2 is geïnstalleerd in uw Python-omgeving, maar de azureml-inference-server-http pakketversie biedt geen ondersteuning voor Flask 2. Ondersteuning voor Flask 2 is beschikbaar in azureml-inference-server-http pakketversie 0.7.0 en hoger en azureml-defaults pakketversie 1.44 en hoger.

  • Als u het Flask 2-pakket niet gebruikt in een Azure Machine Learning Docker-installatiekopieën, gebruikt u de nieuwste versie van het azureml-inference-server-http of azureml-defaults pakket.

  • Als u het Flask 2-pakket in een Azure Machine Learning Docker-installatiekopieën gebruikt, controleert u of de buildversie van de installatiekopieën juli 2022 of hoger is.

    U vindt de versie van de installatiekopieën in de containerlogboeken. Voorbeeld:

    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 | 
    

    De builddatum van de installatiekopieën wordt na de Materialization Build notatie weergegeven. In het voorgaande voorbeeld is 20220708 de versie van de installatiekopieën 8 juli 2022. De afbeelding in dit voorbeeld is compatibel met Flask 2.

    Als u geen vergelijkbaar bericht in het containerlogboek ziet, is uw installatiekopieën verouderd en moeten ze worden bijgewerkt. Als u een CUDA-installatiekopie (Compute Unified Device Architecture) gebruikt en u geen nieuwere installatiekopie kunt vinden, controleert u of uw installatiekopie is afgeschaft in AzureML-Containers. U vindt aangewezen vervangingen voor afgeschafte installatiekopieën.

    Als u de server gebruikt met een online-eindpunt, kunt u de logboeken ook vinden op de pagina Logboeken op de pagina Eindpunten in Azure Machine Learning-studio.

Als u implementeert met SDK v1 en geen installatiekopieën expliciet opgeeft in uw implementatieconfiguratie, past de server het openmpi4.1.0-ubuntu20.04 pakket toe met een versie die overeenkomt met uw lokale SDK-toolset. De geïnstalleerde versie is echter mogelijk niet de meest recente beschikbare versie van de installatiekopieën.

Voor SDK-versie 1.43 installeert de server standaard de openmpi4.1.0-ubuntu20.04:20220616 pakketversie, maar deze pakketversie is niet compatibel met SDK 1.43. Zorg ervoor dat u de nieuwste SDK voor uw implementatie gebruikt.

Als u de installatiekopieën niet kunt bijwerken, kunt u het probleem tijdelijk voorkomen door de azureml-defaults==1.43 vermeldingen in azureml-inference-server-http~=0.4.13 uw omgevingsbestand vast te maken. Met deze vermeldingen wordt de server om de oudere versie met flask 1.0.x.

ImportError of ModuleNotFoundError tijdens het opstarten van de server

Tijdens het opstarten van de server kunt u een ImportError of ModuleNotFoundError meer specifieke modules tegenkomen, zoals opencensus, jinja2, markupsafeof click. In het volgende voorbeeld ziet u het foutbericht:

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

De import- en modulefouten treden op wanneer u versie 0.4.10 of eerdere versies van de server gebruikt die de Flask-afhankelijkheid niet vastmaken aan een compatibele versie. Installeer een latere versie van de server om het probleem te voorkomen.