Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Server HTTP odvozování služby Azure Machine Learning je balíček Pythonu, který zveřejňuje funkci bodování jako koncový bod HTTP. Zabalí kód serveru Flask a závislosti do jednotného balíčku. Server odvozování je součástí předem připravených imagí Dockeru pro odvozování , které se použijí při nasazení modelu ve službě Azure Machine Learning. Když balíček použijete samostatně, můžete model nasadit místně pro produkční prostředí. Skript pro skórování (entry) můžete také snadno ověřit v místním vývojovém prostředí. Pokud dojde k potížím s bodovacím skriptem, server odvozování vrátí chybu a umístění chyby.
Server pro inferenci můžete také použít k vytvoření ověřovacích bran v rámci kanálu kontinuální integrace a nasazení. Můžete například spustit odvozovací server s kandidátským skriptem a spustit testovací sadu pro místní koncový bod.
Tento článek pomáhá vývojářům, kteří chtějí použít inferenční server k ladění na místní úrovni. V tomto článku se dozvíte, jak používat odvozovaný server s online koncovými body.
Požadavky
- Python 3.10 nebo novější
- Anaconda
Odvozující server běží na operačních systémech Windows a Linux.
Prozkoumejte možnosti místního ladění pro online koncové body
Laděním koncovýchbodůch Pokud chcete ladit koncové body místně, máte několik možností, mezi které patří:
- Server HTTP odvozuje azure Machine Learning.
- Místní koncový bod.
Následující tabulka obsahuje přehled podpory, kterou jednotlivé možnosti nabízejí pro různé scénáře ladění:
| Scénář | Odvozovat server | Místní koncový bod |
|---|---|---|
| Aktualizace místního prostředí Pythonu bez opětovného sestavení image Dockeru | Ano | Ne |
| Aktualizace hodnoticího skriptu | Ano | Ano |
| Aktualizace konfigurací nasazení (nasazení, prostředí, kód, model) | Ne | Ano |
| Integrovat ladicí program Microsoft Visual Studio Code (VS Code) | Ano | Ano |
Tento článek popisuje, jak používat odvozovaný server.
Když běžíte inferenční server místně, můžete se zaměřit na ladění skriptu hodnocení bez obav o konfigurace kontejnerů nasazení.
Lokálně ladit svůj hodnoticí skript.
Pokud chcete ladit bodovací skript místně, máte několik možností pro testování chování serveru odvozování:
- Použijte fiktivní bodovací skript.
- K ladění s balíčkem azureml-inference-server-http použijte VS Code.
- Z úložiště příkladů spusťte skutečný bodovací skript, soubor modelu a soubor prostředí.
Následující části obsahují informace o jednotlivých možnostech.
Použití fiktivního hodnoticího skriptu k otestování chování serveru odvozování
Vytvořte adresář s názvem
server_quickstartpro uložení souborů:mkdir server_quickstart cd server_quickstartAbyste se vyhnuli konfliktům balíčků, vytvořte virtuální prostředí, například
myenva aktivujte ho:python -m venv myenvPoznámka:
V Linuxu
source myenv/bin/activatespusťte příkaz pro aktivaci virtuálního prostředí.Po otestování serveru odvozování spusťte
deactivatepříkaz, který deaktivuje virtuální prostředí Pythonu.azureml-inference-server-httpNainstalujte balíček z informačního kanálu Python Package Index (PyPI):python -m pip install azureml-inference-server-httpVytvořte vstupní skript. Následující příklad vytvoří základní vstupní skript a uloží ho do souboru s názvem
score.py:echo -e 'import time\ndef init(): \n\ttime.sleep(1) \n\ndef run(input_data): \n\treturn {"message":"Hello, World!"}' > score.pyazmlinfsrvPomocí příkazu spusťte server odvozování a nastavtescore.pysoubor jako vstupní skript:azmlinfsrv --entry_script score.pyPoznámka:
Server odvozování je hostovaný na
0.0.0.0, což znamená, že naslouchá na všech IP adresách hostitelského počítače.curlPomocí nástroje odešlete žádost o bodování na server odvozování:curl -p 127.0.0.1:5001/scoreServer odvození publikuje následující odpověď:
{"message": "Hello, World!"}Po dokončení testování ukončete server odvozováním stisknutím kláves Ctrl+C .
Můžete upravit soubor skriptu score.py hodnoticího. Potom můžete změny otestovat pomocí azmlinfsrv --entry_script score.py příkazu a znovu spustit odvozovaný server.
Integrace do VS Code
Ve VS Code můžete k ladění použít rozšíření Pythonu s balíčkem azureml-inference-server-http . VS Code nabízí dva režimy ladění: spuštění a připojení.
Před použitím některého azureml-inference-server-http z režimů nainstalujte balíček spuštěním následujícího příkazu:
python -m pip install azureml-inference-server-http
Poznámka:
Abyste se vyhnuli konfliktům balíčků, nainstalujte server odvození do virtuálního prostředí. K vytvoření virtuálního prostředí můžete použít integrovaný python -m venv příkaz.
Režim spuštění
V režimu spuštění nastavte konfigurační soubor VS Code launch.json a spusťte odvozovací server v nástroji VS Code:
Spusťte VS Code a otevřete složku, která obsahuje
score.pyskript.Pro tento pracovní prostor ve VS Code přidejte do
launch.jsonsouboru následující konfiguraci:{ "version": "0.2.0", "configurations": [ { "name": "Debug score.py", "type": "debugpy", "request": "launch", "module": "azureml_inference_server_http.amlserver", "args": [ "--entry_script", "score.py" ] } ] }Spusťte ladicí relaci ve VS Code výběrem Spustit ladění nebo stisknutím >.
Režim připojení
V případě režimu připojení použijte VS Code s rozšířením Pythonu pro připojení k procesu odvozování serveru:
Poznámka:
Pro Linux nejprve nainstalujte gdb balíček spuštěním sudo apt-get install -y gdb příkazu.
Spusťte VS Code a otevřete složku, která obsahuje
score.pyskript.Pro tento pracovní prostor ve VS Code přidejte do
launch.jsonsouboru následující konfiguraci:{ "version": "0.2.0", "configurations": [ { "name": "Python: Attach using Process ID", "type": "debugpy", "request": "attach", "processId": "${command:pickProcess}", "justMyCode": true } ] }V příkazovém okně spusťte server odvození spuštěním
azmlinfsrv --entry_script score.pypříkazu.Chcete-li zahájit ladicí relaci v aplikaci VS Code, postupujte následovně:
Vyberte Spustit>Spustit ladění nebo vyberte F5.
V příkazovém okně vyhledejte v protokolech ze serveru odvozování ID
azmlinfsrvprocesu:Nezapomeňte najít ID
azmlinfsrvprocesu, nikoligunicornproces.V programu VS Code pro ladění zadejte ID procesu
azmlinfsrv.Pokud nástroj pro výběr procesu VS Code nevidíte, zadejte ID procesu ručně do
processIdpolelaunch.jsonsouboru pro pracovní prostor.
Pro režimy spuštění a připojení můžete nastavit zarážky a ladit skript krok za krokem.
Použití kompletního příkladu
Následující postup spustí server odvozování místně s ukázkovými soubory z ukázkového úložiště služby Azure Machine Learning. Ukázkové soubory zahrnují hodnoticí skript, soubor modelu a soubor prostředí. Další příklady použití těchto ukázkových souborů najdete v tématu Nasazení a určení skóre modelu strojového učení pomocí online koncového bodu.
Naklonujte ukázkové úložiště a přejděte do složky, která obsahuje relevantní ukázkové soubory:
git clone --depth 1 https://github.com/Azure/azureml-examples cd azureml-examples/cli/endpoints/online/model-1/Pomocí conda vytvořte a aktivujte virtuální prostředí:
V tomto příkladu
azureml-inference-server-httpse balíček nainstaluje automaticky. Balíček je součástí závislé knihovnyazureml-defaultsbalíčku, která je uvedena v souboru conda.yaml.Důležité
Balíček
azureml-defaultsje součástí sady Azure Machine Learning SDK verze 1, která je zastaralá. Pro nové projekty nainstalujteazureml-inference-server-httpbalíček přímo místo použitíazureml-defaults.# Create the environment from the YAML file. conda env create --name model-env -f ./environment/conda.yaml # Activate the new environment. conda activate model-envProjděte si bodovací skript, 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()Spusťte server odvozování zadáním hodnoticího skriptu a cesty ke složce modelu.
Během nasazování je proměnná definovaná tak,
AZUREML_MODEL_DIRaby ukládala cestu ke složce modelu. Tuto hodnotu zadáte v parametrumodel_dir. Když se bodovací skript spustí, načte hodnotu zAZUREML_MODEL_DIRproměnné.V tomto případě použijte aktuální adresář ,
./jakomodel_dirhodnotu, protože bodovací skript určuje podadresář jakomodel/sklearn_regression_model.pkl.azmlinfsrv --entry_script ./onlinescoring/score.py --model_dir ./Když se server pro odvozování spustí a úspěšně vyvolá bodovací skript, otevře se ukázkový spouštěcí protokol . V opačném případě se v protokolu zobrazují chybové zprávy.
Otestujte bodovací skript s ukázkovými daty pomocí následujících kroků:
Otevřete další příkazové okno a přejděte do stejného pracovního adresáře, ve které jste příkaz spustili
azmlinfsrv.Pomocí následujícího
curlnástroje odešlete příklad požadavku na server odvozování a obdržíte výsledek vyhodnocování:curl --request POST "127.0.0.1:5001/score" --header "Content-Type:application/json" --data @sample-request.jsonPokud ve skriptu bodování nedojde k žádným problémům, skript vrátí výsledek bodování. Pokud dojde k problémům, můžete aktualizovat bodovací skript a pak server odvozování spustit znovu, aby se aktualizovaný skript otestoval.
Kontrola tras serveru odvození
Server odvozování ve výchozím nastavení naslouchá na portu 5001 následujícími trasami:
| Název | Trasa |
|---|---|
| Sonda živé aktivity | 127.0.0.1:5001/ |
| Skóre | 127.0.0.1:5001/score |
| OpenAPI (swagger) | 127.0.0.1:5001/swagger.json |
Kontrola parametrů serveru odvození
Server odvození přijímá následující parametry:
| Parametr | Požaduje se | Výchozí | Popis |
|---|---|---|---|
entry_script |
Pravdivé | Nevztahuje se | Identifikuje relativní nebo absolutní cestu ke skriptu bodování. |
model_dir |
Nepravda | Nevztahuje se | Identifikuje relativní nebo absolutní cestu k adresáři, který obsahuje model použitý k odvozování. |
port |
Nepravda | 5001 | Určuje obslužný port serveru odvozování. |
worker_count |
Nepravda | 1 | Poskytuje počet pracovních vláken pro zpracování souběžných požadavků. |
appinsights_instrumentation_key |
Nepravda | Nevztahuje se | Poskytuje instrumentační klíč pro instanci Application Insights, ve které se protokoly publikují. |
access_control_allow_origins |
Nepravda | Nevztahuje se | Zapne sdílení prostředků mezi zdroji (CORS) pro zadané zdroje, kde je více zdrojů odděleno čárkou (,), například microsoft.com, bing.com |
Prozkoumání zpracování požadavků na odvození serveru
Následující kroky ukazují, azmlinfsrvjak odvozující server zpracovává příchozí požadavky:
Pythonový obal příkazového řádku obklopuje síťový zásobník inferenčního serveru a používá se k jeho spuštění.
Klient odešle požadavek na server odvození.
Server odvozování odešle požadavek prostřednictvím serveru WSGI (Web Server Gateway Interface), který odešle požadavek do jedné z následujících pracovních aplikací Flask:
- Ve Windows: servírka
- Na Linuxu: gunicorn
Aplikace pracovního procesu Flask zpracovává požadavek, který zahrnuje načtení vstupního skriptu a všech závislostí.
Váš vstupní skript zpracovává požadavek. Vstupní skript provede volání odvozování načteného modelu a vrátí odpověď.
Prozkoumání protokolů serveru odvozování
Existují dva způsoby, jak získat data protokolu pro test odvozovacího serveru:
-
azureml-inference-server-httpSpusťte balíček místně a zobrazte výstup protokolu. - Použijte online koncové body a prohlédněte si logy kontejneru. Protokol pro server odvozování má název Verze serveru <>HTTP pro odvozování ve službě Azure Machine Learning.
Poznámka:
Formát protokolování se od verze 0.8.0 změnil. Pokud váš protokol používá jiný styl, než se čekalo, aktualizujte azureml-inference-server-http balíček na nejnovější verzi.
Zobrazení spouštěcích protokolů
Při spuštění serveru odvozování se v protokolech zobrazí následující počáteční nastavení serveru:
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>
Když například spustíte server odvozování provedením kompletních ukázkových kroků, protokoly obsahují následující informace:
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
Porozumění formátu dat protokolu
Všechny protokoly ze serveru odvozování s výjimkou spouštěcího skriptu obsahují data v následujícím formátu:
<UTC-time> <level> [<process-ID>] <logger-name> - <message>
Každá položka se skládá z následujících součástí:
-
<UTC-time>: Čas zadání položky do protokolu -
<level>: První znak úrovně protokolování pro položku, napříkladEpro CHYBU,Ipro INFORMACE atd. -
<process-ID>: ID procesu přidruženého k položce -
<logger-name>: Název prostředku přidruženého k položce protokolu -
<message>: Obsah zprávy protokolu
V Pythonu je šest úrovní protokolování. Každá úroveň má přiřazenou číselnou hodnotu podle závažnosti:
| Úroveň protokolování | Číselná hodnota |
|---|---|
| KRITICKÝ | 50 |
| CHYBA | 40 |
| VAROVÁNÍ | 30 |
| INFORMACE | 20 |
| Debug | 10 |
| NOTSET | 0 |
Řešení problémů se inference serverem
Následující části obsahují základní tipy pro řešení potíží pro odvozovací server. Informace o řešení potíží s online koncovými body najdete v tématu Řešení potíží s nasazením a vyhodnocováním online koncového bodu.
Kontrola nainstalovaných balíčků
Při řešení problémů s nainstalovanými balíčky postupujte takto:
Shromážděte informace o nainstalovaných balíčcích a verzích pro vaše prostředí Pythonu.
V souboru prostředí zkontrolujte verzi zadaného
azureml-inference-server-httpbalíčku Pythonu. V protokolech spouštění serveru HTTP odvozování služby Azure Machine Learning zkontrolujte verzi zobrazeného serveru odvozování. Ověřte, že se obě verze shodují.V některých případech řešitel závislostí pip nainstaluje neočekávané verze balíků. Možná budete muset spustit
pip, abyste opravovali nainstalované balíčky a verze.Pokud ve vašem prostředí určíte Flask nebo jeho závislosti, odeberte tyto položky.
- Závislé balíčky zahrnují
flask, ,jinja2itsdangerous,werkzeug,markupsafe, aclick. - Balíček
flaskje uveden jako závislost v balíčku inferenčního serveru. Nejlepším přístupem je umožnit serveru pro inferenci instalovat balíčekflask. - Pokud je server odvozování nakonfigurovaný tak, aby podporoval nové verze Flasku, server odvozování automaticky obdrží aktualizace balíčku, jakmile budou k dispozici.
- Závislé balíčky zahrnují
Kontrola verze serveru odvození
Balíček azureml-inference-server-http serveru se publikuje do PyPI. Stránka PyPI obsahuje protokol změn a všechny verze balíčku.
Pokud používáte dřívější verzi balíčku, aktualizujte konfiguraci na nejnovější verzi. Následující tabulka shrnuje stabilní verze, běžné problémy a doporučené úpravy:
| Verze balíčku | Popis | Problém | Rozlišení |
|---|---|---|---|
| 0.4.x | Zabalené ve výcvikových obrázcích datovaných k 20220601 nebo dříve a verzích balíčků azureml-defaults od 0.1.34 do 1.43. Nejnovější stabilní verze je 0.4.13. |
U serverových verzí starších než 0.4.11 může docházet k problémům se závislostmi Flasku, například can't import name Markup from jinja2. |
Pokud je to možné, upgradujte na verzi 0.4.13 nebo 1.4.x. |
| 0.6.x | Předinstalováno v inferenčních obrazech datovaných 20220516 a dřívější. Nejnovější stabilní verze je 0.6.1. |
Nevztahuje se | Nevztahuje se |
| 0.7.x | Podporuje Flask 2. Nejnovější stabilní verze je 0.7.7. | Nevztahuje se | Nevztahuje se |
| 0.8.x | Používá aktualizovaný formát protokolu. Končí podpora pythonu 3.6. | Nevztahuje se | Nevztahuje se |
| 1.0.x | Končí podpora Pythonu 3.7. | Nevztahuje se | Nevztahuje se |
| 1.1.x | Migruje na pydantic verzi 2.0. |
Nevztahuje se | Nevztahuje se |
| 1.2.x | Přidává podporu pro Python 3.11. Aktualizace gunicorn na verzi 22.0.0. Aktualizace werkzeug pro verzi 3.0.3 a novější. |
Nevztahuje se | Nevztahuje se |
| 1.3.x | Přidává podporu pro Python 3.12. Upgraduje certifi na verzi 2024.7.4. Upgraduje flask-cors na verzi 5.0.0. Aktualizuje balíčky gunicorn a pydantic. |
Nevztahuje se | Nevztahuje se |
| 1.4.x | Upgraduje waitress na verzi 3.0.1. Končí podpora pythonu 3.8. Odebere vrstvu kompatibility, která brání upgradu Flasku 2.0 v narušení kódu objektu požadavku. |
Pokud závisíte na vrstvě kompatibility, nemusí kód objektu požadavku fungovat. | Migrujte svůj skript skóre do Flasku 2. |
Kontrola závislostí balíčků
Mezi nejdůležitější závislé balíčky pro azureml-inference-server-http balíček serveru patří:
flaskopencensus-ext-azureinference-schema
Pokud v prostředí Pythonu azureml-defaults zadáte balíček, azureml-inference-server-http je balíček závislým balíčkem. Závislost se nainstaluje automaticky.
Návod
Pokud používáte sadu Azure Machine Learning SDK pro Python v1 a explicitně nezadáte azureml-defaults balíček ve vašem prostředí Pythonu, může sada SDK balíček automaticky přidat. Verze balíčku je však uzamčena vzhledem k verzi sady SDK. Pokud je například verze sady SDK 1.38.0, položka azureml-defaults==1.38.0 je přidána do požadavkům pip prostředí.
TypeError během spouštění serveru odvozování
Při spuštění serveru pro inference můžete narazit na následující TypeError:
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
K této chybě dochází v případě, že máte ve svém prostředí Pythonu nainstalovaný Flask 2, ale azureml-inference-server-http verze balíčku flask 2 nepodporuje. Podpora flask 2 je k dispozici v azureml-inference-server-http balíčku 0.7.0 a novějších verzích a azureml-defaults v balíčku 1.44 a novějších verzích.
Pokud balíček Flask 2 nepoužíváte v imagi Dockeru služby Azure Machine Learning, použijte nejnovější verzi
azureml-inference-server-httpbalíčku neboazureml-defaultsbalíčku.Pokud použijete balíček Flask 2 v Dockerovém obrazu služby Azure Machine Learning, ověřte, že verze sestavení obrazu je
July 2022nebo novější.Verzi image najdete v protokolech kontejneru. Podívejte se například na následující příkazy protokolu:
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 |Datum sestavení obrázku se zobrazí po zápisu
Materialization Build. V předchozím příkladu je verze image20220708, tedy 8. července 2022. Obrázek v tomto příkladu je kompatibilní s Flaskem 2.Pokud v protokolu kontejneru nevidíte podobnou zprávu, vaše image je zastaralá a měla by být aktualizována. Pokud používáte image CUDA (Compute Unified Device Architecture) a nemůžete najít novější image, zkontrolujte v úložišti AzureML-Containers , jestli je vaše image zastaralá. Najdete určené náhrady pro zastaralé obrázky.
Pokud používáte server odvozování s online koncovým bodem, můžete protokoly najít také v nástroji Azure Machine Learning Studio. Na stránce vašeho koncového bodu vyberte kartu Protokoly .
Pokud nasadíte pomocí sady SDK v1 a explicitně nezadáte image v konfiguraci nasazení, server odvozování použije openmpi4.1.0-ubuntu20.04 balíček s verzí, která odpovídá vaší místní sadě nástrojů sady SDK. Nainstalovaná verze ale nemusí být nejnovější dostupnou verzí image.
Pro SDK verze 1.43 nainstaluje inferenční server ve výchozím nastavení verzi balíčku openmpi4.1.0-ubuntu20.04:20220616, ale tato verze balíčku není s SDK 1.43 kompatibilní. Ujistěte se, že pro nasazení používáte nejnovější sadu SDK.
Pokud image nemůžete aktualizovat, můžete se dočasně vyhnout tomuto problému tak, že připnete záznamy azureml-defaults==1.43 nebo záznamy azureml-inference-server-http~=0.4.13 ve vašem souboru prostředí. Tyto položky nasměrují server odvození tak, aby nainstaloval starší verzi s flask 1.0.x.
ImportError nebo ModuleNotFoundError během spouštění inferenčního serveru
Během spouštění serveru pro odvozování můžete narazit na ImportError nebo ModuleNotFoundError u specifických modulů, jako jsou opencensus, jinja2, markupsafe nebo click. Následující příklad ukazuje chybovou zprávu:
ImportError: cannot import name 'Markup' from 'jinja2'
K chybám importu a modulu dochází při použití verze 0.4.10 nebo starších verzí serveru odvozování, které nepřipnou závislost Flask na kompatibilní verzi. Pokud chcete tomuto problému zabránit, nainstalujte novější verzi odvozování serveru.