Dela via


Felsöka bedömningsskript med hjälp av HTTP-servern för Azure Machine Learning-slutsatsdragning

HTTP-servern för Azure Machine Learning-slutsatsdragning är ett Python-paket som exponerar din bedömningsfunktion som en HTTP-slutpunkt och omsluter Flask-serverkoden och beroendena i ett enda paket. Slutsatsdragningsservern ingår i de fördefinierade Docker-avbildningarna för slutsatsdragning som används när du distribuerar en modell i Azure Machine Learning. När du använder paketet ensamt kan du distribuera modellen lokalt för produktion. Du kan också enkelt verifiera ditt poängsättningsskript (inmatning) i en lokal utvecklingsmiljö. Om det uppstår ett problem med bedömningsskriptet returnerar slutsatsdragningsservern ett fel och platsen för felet.

Du kan också använda slutsatsdragningsservern för att skapa valideringsportar i en pipeline för kontinuerlig integrering och distribution. Du kan till exempel starta slutsatsdragningsservern med kandidatskriptet och köra testpaketet mot den lokala slutpunkten.

Den här artikeln stöder utvecklare som vill använda slutsatsdragningsservern för att felsöka lokalt. I den här artikeln ser du hur du använder slutsatsdragningsservern med onlineslutpunkter.

Förutsättningar

  • Python 3.8 eller senare
  • Anakonda

Slutsatsdragningsservern körs på Windows- och Linux-baserade operativsystem.

Utforska lokala felsökningsalternativ för onlineslutpunkter

Genom att felsöka slutpunkter lokalt innan du distribuerar till molnet kan du få fel i koden och konfigurationen tidigt. Om du vill felsöka slutpunkter lokalt har du flera alternativ, bland annat:

  • HTTP-servern för Azure Machine Learning-slutsatsdragning.
  • En lokal slutpunkt.

Följande tabell innehåller en översikt över det stöd som varje alternativ erbjuder för olika felsökningsscenarier:

Scenarium Slutsatsdragningsserver Lokal slutpunkt
Uppdatera den lokala Python-miljön utan återskapande av Docker-avbildning Ja Nej
Uppdateringsbedömningsskript Ja Ja
Uppdatera distributionskonfigurationer (distribution, miljö, kod, modell) Nej Ja
Integrera Felsökningsprogram för Microsoft Visual Studio Code (VS Code) Ja Ja

I den här artikeln beskrivs hur du använder slutsatsdragningsservern.

När du kör slutsatsdragningsservern lokalt kan du fokusera på att felsöka ditt bedömningsskript utan att behöva använda konfigurationer av distributionscontainer.

Felsöka ditt bedömningsskript lokalt

Om du vill felsöka ditt bedömningsskript lokalt har du flera alternativ för att testa inferensserverns beteende:

Följande avsnitt innehåller information om varje alternativ.

Använda ett dummy-bedömningsskript för att testa inferensserverbeteende

  1. Skapa en katalog med namnet server_quickstart för att lagra dina filer:

    mkdir server_quickstart
    cd server_quickstart
    
  2. Undvik paketkonflikter genom att skapa en virtuell miljö, till exempel myenv, och aktivera den:

    python -m virtualenv myenv
    

    Kommentar

    I Linux kör du source myenv/bin/activate kommandot för att aktivera den virtuella miljön.

    När du har testat slutsatsdragningsservern kan du köra deactivate kommandot för att inaktivera den virtuella Python-miljön.

  3. azureml-inference-server-http Installera paketet från Python Package Index-feeden (PyPI):

    python -m pip install azureml-inference-server-http
    
  4. Skapa ditt postskript. I följande exempel skapas ett grundläggande startskript och sparas i en fil med namnet score.py.

    echo -e 'import time\ndef init(): \n\ttime.sleep(1) \n\ndef run(input_data): \n\treturn {"message":"Hello, World!"}' > score.py
    
  5. azmlinfsrv Använd kommandot för att starta slutsatsdragningsservern och ange filen score.py som inmatningsskript:

    azmlinfsrv --entry_script score.py
    

    Kommentar

    Slutsatsdragningsservern finns på 0.0.0.0, vilket innebär att den lyssnar på värddatorns alla IP-adresser.

  6. Använd verktyget curl för att skicka en bedömningsbegäran till slutsatsdragningsservern:

    curl -p 127.0.0.1:5001/score
    

    Slutsatsdragningsservern publicerar följande svar:

    {"message": "Hello, World!"}
    
  7. När du är klar med testningen väljer du Ctrl+C för att stoppa slutsatsdragningsservern.

Du kan ändra score.py bedömningsskriptfilen. Sedan kan du testa ändringarna med hjälp azmlinfsrv --entry_script score.py av kommandot för att köra slutsatsdragningsservern igen.

Integrera med VS Code

I VS Code kan du använda Python-tillägget för felsökning med azureml-inference-server-http-paketet . VS Code erbjuder två lägen för felsökning: starta och koppla.

Innan du använder något av lägena azureml-inference-server-http installerar du paketet genom att köra följande kommando:

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

Kommentar

För att undvika paketkonflikter installerar du slutsatsdragningsservern i en virtuell miljö. Du kan använda pip install virtualenv kommandot för att aktivera virtuella miljöer för konfigurationen.

Startläge

För startläge utför du följande steg för att konfigurera VS Code launch.json-konfigurationsfilen och starta slutsatsdragningsservern i VS Code:

  1. Starta VS Code och öppna mappen som innehåller score.py-skriptet.

  2. För arbetsytan i VS Code lägger du till följande konfiguration i filen launch.json:

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Debug score.py",
                "type": "debugpy",
                "request": "launch",
                "module": "azureml_inference_server_http.amlserver",
                "args": [
                    "--entry_script",
                    "score.py"
                ]
            }
        ]
      }
    
  3. Starta felsökningssessionen i VS Code genom att välja Kör>starta felsökning eller genom att välja F5.

Bifoga-läge

För anslutningsläge utför du följande steg för att använda VS Code med Python-tillägget för att ansluta till inferensserverprocessen:

Kommentar

För Linux installerar gdb du först paketet genom att sudo apt-get install -y gdb köra kommandot .

  1. Starta VS Code och öppna mappen som innehåller score.py-skriptet.

  2. För arbetsytan i VS Code lägger du till följande konfiguration i filen launch.json:

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Python: Attach using Process ID",
                "type": "debugpy",
                "request": "attach",
                "processId": "${command:pickProcess}",
                "justMyCode": true
            }
        ]
      }
    
  3. I ett kommandofönster startar du slutsatsdragningsservern genom att azmlinfsrv --entry_script score.py köra kommandot .

  4. Utför följande steg för att starta felsökningssessionen i VS Code:

    1. Välj Kör>starta felsökning eller välj F5.

    2. I kommandofönstret söker du i loggarna från slutsatsdragningsservern för att hitta process-ID:t för azmlinfsrv processen:

      Skärmbild av ett kommandofönster som visar slutsatsdragningsserverloggar. I en logginstruktuering är process-ID för kommandot azmlinfsrv markerat.

      Se till att hitta ID:t för azmlinfsrv processen, inte processen gunicorn .

    3. I VS Code-felsökningsprogrammet anger du processens azmlinfsrv ID.

      Om du inte ser VS Code-processväljaren anger du process-ID:t manuellt i processId fältet för launch.json-filen för arbetsytan.

För start- och anslutningslägen kan du ange brytpunkter och felsöka skriptet steg för steg.

Använda ett exempel från slutpunkt till slutpunkt

Följande procedur kör slutsatsdragningsservern lokalt med exempelfiler från Azure Machine Learning-exempellagringsplatsen. Exempelfilerna innehåller ett bedömningsskript, en modellfil och en miljöfil. Fler exempel på hur du använder dessa exempelfiler finns i Distribuera och poängsätta en maskininlärningsmodell med hjälp av en onlineslutpunkt.

  1. Klona exempellagringsplatsen och gå till mappen som innehåller relevanta exempelfiler:

    git clone --depth 1 https://github.com/Azure/azureml-examples
    cd azureml-examples/cli/endpoints/online/model-1/
    
  2. Använd conda för att skapa och aktivera en virtuell miljö:

    I det här exemplet azureml-inference-server-http installeras paketet automatiskt. Paketet ingår som ett beroende bibliotek för azureml-defaults paketet, som visas i filen conda.yaml.

    # Create the environment from the YAML file.
    conda env create --name model-env -f ./environment/conda.yaml
    # Activate the new environment.
    conda activate model-env
    
  3. Granska bedömningsskriptet 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. Kör slutsatsdragningsservern genom att ange bedömningsskriptet och sökvägen till modellmappen.

    Under distributionen definieras variabeln AZUREML_MODEL_DIR för att lagra sökvägen till modellmappen. Du anger det värdet i parametern model_dir . När bedömningsskriptet körs hämtar det värdet från variabeln AZUREML_MODEL_DIR .

    I det här fallet använder du den aktuella katalogen ./ som värde model_dir, eftersom bedömningsskriptet anger underkatalogen som model/sklearn_regression_model.pkl.

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

    När slutsatsdragningsservern startar och anropar bedömningsskriptet öppnas exempelstartloggen . Annars visas felmeddelanden i loggen.

  5. Testa bedömningsskriptet med exempeldata genom att utföra följande steg:

    1. Öppna ett annat kommandofönster och gå till samma arbetskatalog som du körde azmlinfsrv kommandot i.

    2. Använd följande curl verktyg för att skicka en exempelbegäran till slutsatsdragningsservern och få ett bedömningsresultat:

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

      När det inte finns några problem i ditt bedömningsskript returnerar skriptet poängresultatet. Om det uppstår problem kan du uppdatera bedömningsskriptet och sedan starta slutsatsdragningsservern igen för att testa det uppdaterade skriptet.

Granska inferensservervägar

Slutsatsdragningsservern lyssnar som standard på port 5001 på följande vägar:

Namn Flöde
Liveness-avsökning 127.0.0.1:5001/
Poäng 127.0.0.1:5001/score
OpenAPI (swagger) 127.0.0.1:5001/swagger.json

Granska inferensserverparametrar

Slutsatsdragningsservern accepterar följande parametrar:

Parameter Obligatoriskt Standardvärde Beskrivning
entry_script Sant Ej tillämpligt Identifierar den relativa eller absoluta sökvägen till bedömningsskriptet
model_dir Falsk Ej tillämpligt Identifierar den relativa eller absoluta sökvägen till katalogen som innehåller modellen som används för slutsatsdragning
port Falsk 5001 Anger serverporten för slutsatsdragningsservern
worker_count Falsk 1 Anger antalet arbetstrådar för att bearbeta samtidiga begäranden
appinsights_instrumentation_key Falsk Ej tillämpligt Tillhandahåller instrumentationsnyckeln för instansen av Application Insights där loggarna publiceras
access_control_allow_origins Falsk Ej tillämpligt Aktiverar resursdelning mellan ursprung (CORS) för angivna ursprung, där flera ursprung avgränsas med kommatecken (,), till exempel microsoft.com, bing.com

Utforska bearbetning av inferensserverbegäran

Följande steg visar hur slutsatsdragningsservern, azmlinfsrv, hanterar inkommande begäranden:

  1. En Python CLI-omslutning finns runt slutsatsdragningsserverns nätverksstack och används för att starta slutsatsdragningsservern.

  2. En klient skickar en begäran till slutsatsdragningsservern.

  3. Slutsatsdragningsservern skickar begäran via WSGI-servern (Web Server Gateway Interface), som skickar begäran till något av följande Flask-arbetsprogram:

  4. Flask-arbetsappen hanterar begäran, vilket inkluderar inläsning av inmatningsskriptet och eventuella beroenden.

  5. Ditt postskript tar emot begäran. Inmatningsskriptet gör ett slutsatsdragningsanrop till den inlästa modellen och returnerar ett svar.

Diagram som visar hur slutsatsdragningsservern startar och hur en begäran flödar till en Flask-arbetsapp och sedan till användarkod.

Utforska slutsatsdragningsserverloggar

Det finns två sätt att hämta loggdata för inferensservertestet:

  • azureml-inference-server-http Kör paketet lokalt och visa loggutdata.
  • Använd onlineslutpunkter och visa containerloggarna. Loggen för slutsatsdragningsservern heter Azure Machine Learning Inferencing HTTP-serverversion<>.

Kommentar

Loggningsformatet har ändrats sedan version 0.8.0. Om loggen använder ett annat format än förväntat uppdaterar du azureml-inference-server-http paketet till den senaste versionen.

Visa startloggar

När slutsatsdragningsservern startar visar loggarna följande inledande serverinställningar:

Azure ML Inferencing HTTP server <version>


Server Settings
---------------
Entry Script Name: <entry-script>
Model Directory: <model-directory>
Config File: <configuration-file>
Worker Count: <worker-count>
Worker Timeout (seconds): None
Server Port: <port>
Health Port: <port>
Application Insights Enabled: false
Application Insights Key: <Application-Insights-instrumentation-key>
Inferencing HTTP server version: azmlinfsrv/<version>
CORS for the specified origins: <access-control-allow-origins>
Create dedicated endpoint for health: <health-check-endpoint>


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

<logs>

När du till exempel kör slutsatsdragningsservern genom att följa stegen från slutpunkt till slutpunkt innehåller loggarna följande information:

Azure ML Inferencing HTTP server v1.2.2


Server Settings
---------------
Entry Script Name: /home/user-name/azureml-examples/cli/endpoints/online/model-1/onlinescoring/score.py
Model Directory: ./
Config File: None
Worker Count: 1
Worker Timeout (seconds): None
Server Port: 5001
Health Port: 5001
Application Insights Enabled: false
Application Insights Key: None
Inferencing HTTP server version: azmlinfsrv/1.2.2
CORS for the specified origins: None
Create dedicated endpoint for health: 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,976 I [32756] azmlinfsrv - Scoring timeout is set to 3600000
2022-12-24 07:37:55,976 I [32756] azmlinfsrv - Worker with pid 32756 ready for serving traffic

Förstå loggdataformat

Alla loggar från slutsatsdragningsservern, förutom startskriptet, visar data i följande format:

<UTC-time> <level> [<process-ID>] <logger-name> - <message>

Varje post består av följande komponenter:

  • <UTC-time>: Den tid då posten anges i loggboken
  • <level>: Det första tecknet på loggningsnivån för posten, till exempel E för ERROR, I för INFO och så vidare
  • <process-ID>: ID för processen som är kopplad till inmatningen
  • <logger-name>: Namnet på resursen som är associerad med loggposten
  • <message>: Innehållet i loggmeddelandet

Det finns sex nivåer av loggning i Python. Varje nivå har ett tilldelat numeriskt värde enligt dess allvarlighetsgrad:

Loggningsnivå Numeriskt värde
KRITISK 50
FEL 40
VARNING 30
INFORMATION 20
FELSÖKA 10
NOTSET 0

Felsöka problem med slutsatsdragningsservern

Följande avsnitt innehåller grundläggande felsökningstips för slutsatsdragningsservern. Information om hur du felsöker onlineslutpunkter finns i Felsöka distribution och bedömning av onlineslutpunkter.

Kontrollera installerade paket

Följ de här stegen för att åtgärda problem med installerade paket:

  1. Samla in information om installerade paket och versioner för din Python-miljö.

  2. I miljöfilen kontrollerar du vilken version av azureml-inference-server-http Python-paketet som har angetts. I startloggarna för Azure Machine Learning-slutsatsdragningen för HTTP-servern kontrollerar du vilken version av slutsatsdragningsservern som visas. Bekräfta att de två versionerna matchar.

    I vissa fall installerar pip-beroendelösaren oväntade paketversioner. Du kan behöva köra pip för att korrigera installerade paket och versioner.

  3. Om du anger Flask eller dess beroenden i din miljö tar du bort dessa objekt.

    • Beroende paket inkluderar flask, jinja2, itsdangerous, werkzeug, markupsafeoch click.
    • Paketet flask visas som ett beroende i inferensserverpaketet. Det bästa sättet är att låta slutsatsdragningsservern installera flask paketet.
    • När slutsatsdragningsservern har konfigurerats för att stödja nya versioner av Flask tar slutsatsdragningsservern automatiskt emot paketuppdateringarna när de blir tillgängliga.

Kontrollera inferensserverversionen

Serverpaketet azureml-inference-server-http publiceras till PyPI. På Sidan PyPI visas ändringsloggen och alla versioner av paketet.

Om du använder en tidig paketversion uppdaterar du konfigurationen till den senaste versionen. I följande tabell sammanfattas stabila versioner, vanliga problem och rekommenderade justeringar:

Paketversion Beskrivning Problem Åtgärd
0.4.x Inkluderade i träningsbilder daterade 20220601 eller tidigare och azureml-defaults paketversionerna 0.1.34 till 1.43. Den senaste stabila versionen är 0.4.13. För serverversioner som är tidigare än 0.4.11 kan du stöta på Flask-beroendeproblem, till exempel can't import name Markup from jinja2. Uppgradera till version 0.4.13 eller 1.4.x, den senaste versionen, om möjligt.
0.6.x Förinstallerad i slutsatsdragning av avbildningar daterade 20220516 och tidigare. Den senaste stabila versionen är 0.6.1. Ej tillämpligt Ej tillämpligt
0.7.x Stöder Flask 2. Den senaste stabila versionen är 0.7.7. Ej tillämpligt Ej tillämpligt
0.8.x Använder ett uppdaterat loggformat. Avslutar stödet för Python 3.6. Ej tillämpligt Ej tillämpligt
1.0.x Avslutar stödet för Python 3.7. Ej tillämpligt Ej tillämpligt
1.1.x Migrerar till pydantic 2.0. Ej tillämpligt Ej tillämpligt
1.2.x Lägger till stöd för Python 3.11. Uppdaterar gunicorn till version 22.0.0. Uppdaterar werkzeug till version 3.0.3 och senare versioner. Ej tillämpligt Ej tillämpligt
1.3.x Lägger till stöd för Python 3.12. Uppgraderingar certifi till version 2024.7.4. Uppgraderar flask-cors till version 5.0.0. Uppgraderar paketen gunicorn och pydantic . Ej tillämpligt Ej tillämpligt
1.4.x Uppgraderar waitress till version 3.0.1. Avslutar stödet för Python 3.8. Tar bort kompatibilitetsskiktet som förhindrar att Flask 2.0-uppgraderingen bryter mot objektkoden för begäran. Om du är beroende av kompatibilitetsskiktet kanske din objektkod för begäran inte fungerar. Migrera poängskriptet till Flask 2.

Kontrollera paketberoenden

De mest relevanta beroende paketen azureml-inference-server-http för serverpaketet är:

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

Om du anger azureml-defaults paketet i Python-miljön azureml-inference-server-http är paketet ett beroende paket. Beroendet installeras automatiskt.

Dricks

Om du använder Azure Machine Learning SDK för Python v1 och inte uttryckligen azureml-defaults anger paketet i Python-miljön kan SDK:t automatiskt lägga till paketet. Paketversionen är dock låst i förhållande till SDK-versionen. Om SDK-versionen till exempel är 1.38.0, läggs azureml-defaults==1.38.0-posten till i miljöns pip-krav.

TypeError under start av slutsatsdragningsserver

Du kan stöta på följande TypeError under start av slutsatsdragningsservern:

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

Det här felet uppstår när du har Flask 2 installerat i Python-miljön, men paketversionen azureml-inference-server-http stöder inte Flask 2. Stöd för Flask 2 finns i azureml-inference-server-http 0.7.0-paketet och senare versioner samt azureml-defaults 1.44-paketet och senare versioner.

  • Om du inte använder Flask 2-paketet i en Azure Machine Learning Docker-avbildning använder du den senaste versionen av azureml-inference-server-http paketet eller azureml-defaults .

  • Om du använder Flask 2-paketet i en Azure Machine Learning Docker-avbildning kontrollerar du att byggversionen av avbildningen är July 2022 eller senare.

    Du hittar avbildningsversionen i containerloggarna. Se till exempel följande logginstruktioner:

    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 | 
    

    Kompileringsdatumet för avbildningen visas efter notationen Materialization Build . I det föregående exemplet är bildversionen 20220708, eller 8 juli 2022. Bilden i det här exemplet är kompatibel med Flask 2.

    Om du inte ser något liknande meddelande i containerloggen är avbildningen inaktuell och bör uppdateras. Om du använder en CUDA-avbildning (Compute Unified Device Architecture) och du inte hittar en nyare avbildning kontrollerar du lagringsplatsen AzureML-Containers för att se om avbildningen är inaktuell. Du hittar avsedda ersättningar för inaktuella bilder.

    Om du använder slutsatsdragningsservern med en onlineslutpunkt kan du även hitta loggarna i Azure Machine Learning Studio. På sidan för slutpunkten väljer du fliken Loggar .

Om du distribuerar med SDK v1 och inte uttryckligen anger en avbildning i distributionskonfigurationen tillämpar slutsatsdragningsservern openmpi4.1.0-ubuntu20.04 paketet med en version som matchar din lokala SDK-verktygsuppsättning. Den installerade versionen kanske dock inte är den senaste tillgängliga versionen av avbildningen.

För SDK version 1.43 installerar slutsatsdragningsservern openmpi4.1.0-ubuntu20.04:20220616 paketversionen som standard, men den här paketversionen är inte kompatibel med SDK 1.43. Se till att du använder den senaste SDK:t för distributionen.

Om du inte kan uppdatera avbildningen kan du tillfälligt undvika problemet genom att fästa posterna azureml-defaults==1.43 eller azureml-inference-server-http~=0.4.13 i miljöfilen. Dessa poster instruerar inferensservern att installera den äldre versionen med flask 1.0.x.

ImportError eller ModuleNotFoundError vid start av slutsatsdragningsserver

Du kan stöta på en ImportError eller ModuleNotFoundError på specifika moduler, till exempel opencensus, jinja2, markupsafeeller click, under start av slutsatsdragningsservern. I följande exempel visas felmeddelandet:

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

Import- och modulfel uppstår när du använder version 0.4.10 eller tidigare versioner av slutsatsdragningsservern som inte fäster Flask-beroendet på en kompatibel version. Du kan förhindra problemet genom att installera en senare version av slutsatsdragningsservern.