Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
- Använd ett dummybedömningsskript.
- Använd VS Code för att felsöka med azureml-inference-server-http-paketet .
- Kör ett faktiskt bedömningsskript, en modellfil och en miljöfil från exempellagringsplatsen.
Följande avsnitt innehåller information om varje alternativ.
Använda ett dummy-bedömningsskript för att testa inferensserverbeteende
- Skapa en katalog med namnet server_quickstart för att lagra dina filer: - mkdir server_quickstart cd server_quickstart
- 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/activatekommandot för att aktivera den virtuella miljön.- När du har testat slutsatsdragningsservern kan du köra - deactivatekommandot för att inaktivera den virtuella Python-miljön.
- azureml-inference-server-httpInstallera paketet från Python Package Index-feeden (PyPI):- python -m pip install azureml-inference-server-http
- 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
- azmlinfsrvAnvä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. 
- Använd verktyget - curlfö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!"}
- 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:
- Starta VS Code och öppna mappen som innehåller score.py-skriptet. 
- 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" ] } ] }
- 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 .
- Starta VS Code och öppna mappen som innehåller score.py-skriptet. 
- 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 } ] }
- I ett kommandofönster startar du slutsatsdragningsservern genom att - azmlinfsrv --entry_script score.pyköra kommandot .
- Utför följande steg för att starta felsökningssessionen i VS Code: - Välj Kör>starta felsökning eller välj F5. 
- I kommandofönstret söker du i loggarna från slutsatsdragningsservern för att hitta process-ID:t för - azmlinfsrvprocessen:- Se till att hitta ID:t för - azmlinfsrvprocessen, inte processen- gunicorn.
- I VS Code-felsökningsprogrammet anger du processens - azmlinfsrvID.- Om du inte ser VS Code-processväljaren anger du process-ID:t manuellt i - processIdfä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.
- 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/
- Använd conda för att skapa och aktivera en virtuell miljö: - I det här exemplet - azureml-inference-server-httpinstalleras paketet automatiskt. Paketet ingår som ett beroende bibliotek för- azureml-defaultspaketet, 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
- 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()
- Kör slutsatsdragningsservern genom att ange bedömningsskriptet och sökvägen till modellmappen. - Under distributionen definieras variabeln - AZUREML_MODEL_DIRfö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. 
- Testa bedömningsskriptet med exempeldata genom att utföra följande steg: - Öppna ett annat kommandofönster och gå till samma arbetskatalog som du körde - azmlinfsrvkommandot i.
- Använd följande - curlverktyg 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:
- En Python CLI-omslutning finns runt slutsatsdragningsserverns nätverksstack och används för att starta slutsatsdragningsservern. 
- En klient skickar en begäran till slutsatsdragningsservern. 
- Slutsatsdragningsservern skickar begäran via WSGI-servern (Web Server Gateway Interface), som skickar begäran till något av följande Flask-arbetsprogram: 
- Flask-arbetsappen hanterar begäran, vilket inkluderar inläsning av inmatningsskriptet och eventuella beroenden. 
- Ditt postskript tar emot begäran. Inmatningsskriptet gör ett slutsatsdragningsanrop till den inlästa modellen och returnerar ett svar. 
Utforska slutsatsdragningsserverloggar
Det finns två sätt att hämta loggdata för inferensservertestet:
- 
              azureml-inference-server-httpKö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 exempelEför ERROR,Ifö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:
- Samla in information om installerade paket och versioner för din Python-miljö. 
- I miljöfilen kontrollerar du vilken version av - azureml-inference-server-httpPython-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 - pipför att korrigera installerade paket och versioner.
- Om du anger Flask eller dess beroenden i din miljö tar du bort dessa objekt. - Beroende paket inkluderar flask,jinja2,itsdangerous,werkzeug,markupsafeochclick.
- Paketet flaskvisas som ett beroende i inferensserverpaketet. Det bästa sättet är att låta slutsatsdragningsservern installeraflaskpaketet.
- 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.
 
- Beroende paket inkluderar 
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 20220601eller tidigare ochazureml-defaultspaketversionerna 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 20220516och 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 pydantic2.0. | Ej tillämpligt | Ej tillämpligt | 
| 1.2.x | Lägger till stöd för Python 3.11. Uppdaterar gunicorntill version 22.0.0. Uppdaterarwerkzeugtill 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 certifitill version 2024.7.4. Uppgraderarflask-corstill version 5.0.0. Uppgraderar paketengunicornochpydantic. | Ej tillämpligt | Ej tillämpligt | 
| 1.4.x | Uppgraderar waitresstill 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-httppaketet 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 2022eller 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.
 
              
              