Pontozási szkriptek hibakeresése az Azure Machine Learning következtetési HTTP-kiszolgálójával
Az Azure Machine Learning következtetési HTTP-kiszolgáló egy Python-csomag, amely a pontozási függvényt HTTP-végpontként teszi elérhetővé, és a Flask-kiszolgáló kódját és függőségeit egy egyedi csomagba csomagolja. A kiszolgáló szerepel az előre összeállított Docker-rendszerképekben a modell Azure Machine Learningben való üzembe helyezésekor használt következtetés érdekében. Egyedül a csomag használatával helyileg telepítheti a modellt éles környezetben, és egyszerűen ellenőrizheti a pontozási (belépési) szkriptet egy helyi fejlesztési környezetben. Ha probléma van a pontozási szkripttel, a kiszolgáló hibát és a hiba helyét adja vissza.
A kiszolgáló használható érvényesítési kapuk létrehozására is egy folyamatos integrációs és üzembehelyezési folyamatban. Elindíthatja például a kiszolgálót a jelölt szkripttel, és futtathatja a tesztcsomagot a helyi végponton.
Ez a cikk azokat a fejlesztőket támogatja, akik a következtetési kiszolgálóval szeretnének helyi hibakeresést végezni, és ismerteti, hogyan használhatja a következtetési kiszolgálót online végpontokkal Windows rendszeren.
Előfeltételek
Ha az Azure Machine Learning-következtetés HTTP-kiszolgálóját szeretné használni a helyi hibakereséshez, a konfigurációnak tartalmaznia kell a következő összetevőket:
- Python 3.8 vagy újabb
- Anaconda
Az Azure Machine Learning következtetési HTTP-kiszolgáló Windows- és Linux-alapú operációs rendszereken fut.
Az online végpontok helyi hibakeresési lehetőségeinek megismerása
A végpontok helyi hibakeresésével, mielőtt üzembe helyezené a felhőben, korábban észlelheti a kódban és a konfigurációban felmerülő hibákat. A végpontok helyi hibakereséséhez több lehetősége is van, például:
- Az Azure Machine Learning következtetési HTTP-kiszolgálója
- Helyi végpont
Ez a cikk bemutatja, hogyan használható az Azure Machine Learning következtetési HTTP-kiszolgáló windowsos használata.
Az alábbi táblázat áttekintést nyújt azokról a forgatókönyvekről, amelyek segítenek kiválasztani a legjobb lehetőséget:
Eset | Következtetés HTTP-kiszolgáló | Helyi végpont |
---|---|---|
Helyi Python-környezet frissítése Docker-rendszerkép újraépítése nélkül | Igen | Nem |
Pontozási szkript frissítése | Igen | Igen |
Üzembehelyezési konfigurációk frissítése (üzembe helyezés, környezet, kód, modell) | Nem | Igen |
A Microsoft Visual Studio Code (VS Code) hibakeresőjének integrálása | Igen | Igen |
Ha helyileg futtatja a következtetési HTTP-kiszolgálót, a pontozószkript hibakeresésére összpontosíthat anélkül, hogy az üzembe helyezési tároló konfigurációi miatt aggódna.
Az azureml-inference-server-http csomag telepítése
A azureml-inference-server-http
csomag telepítéséhez futtassa a következő parancsot:
python -m pip install azureml-inference-server-http
Feljegyzés
A csomagütközések elkerülése érdekében telepítse a következtetési HTTP-kiszolgálót egy virtuális környezetben.
A parancs segítségével engedélyezheti a pip install virtualenv
virtuális környezeteket a konfigurációhoz.
A pontozási szkript helyi hibakeresése
A pontozószkript helyi hibakereséséhez több lehetősége van a kiszolgáló viselkedésének tesztelésére:
- Próbáljon ki egy hamis pontozási szkriptet.
- A Visual Studio Code használatával hibakeresést végezhet az azureml-inference-server-http csomaggal.
- Futtasson egy tényleges pontozószkriptet, modellfájlt és környezeti fájlt a példák adattárából.
Kiszolgáló viselkedésének tesztelése próbapontozási szkripttel
Hozzon létre egy server_quickstart nevű könyvtárat a fájlok tárolásához:
mkdir server_quickstart cd server_quickstart
A csomagütközések elkerülése érdekében hozzon létre egy virtuális környezetet( például myenv), és aktiválja azt:
python -m virtualenv myenv
Feljegyzés
Linuxon futtassa a
source myenv/bin/activate
parancsot a virtuális környezet aktiválásához.A kiszolgáló tesztelése után futtathatja a parancsot a
deactivate
Python virtuális környezet inaktiválásához.Telepítse a csomagot a
azureml-inference-server-http
pypi-hírcsatornából :python -m pip install azureml-inference-server-http
Hozza létre a bejegyzésszkriptet. Az alábbi példa létrehoz egy alapszintű bejegyzésszkriptet, és egy score.py nevű fájlba menti:
echo -e "import time def init(): \n\t time.sleep(1) \n\n def run(input_data): \n\t return {"message":"Hello, World!"}" > score.py
Indítsa el a kiszolgálót a
azmlinfsrv
paranccsal, és állítsa be a score.py fájlt belépési szkriptként:azmlinfsrv --entry_script score.py
Feljegyzés
A kiszolgáló a 0.0.0.0-s rendszeren van üzemeltetve, ami azt jelenti, hogy az üzemeltető gép összes IP-címét figyeli.
Pontozási kérés küldése a kiszolgálónak a
curl
segédprogrammal:curl -p 127.0.0.1:5001/score
A kiszolgáló a következő választ adja:
{"message": "Hello, World!"}
A tesztelés után válassza a Ctrl + C billentyűkombinációt a kiszolgáló leállításához.
Most módosíthatja a pontozószkriptfájlt (score.py), és tesztelheti a módosításokat a kiszolgáló ismételt futtatásával a azmlinfsrv --entry_script score.py
paranccsal.
Integrálás a Visual Studio Code-tal
Ha a VS Code-ot és a Python-bővítményt szeretné használni az azureml-inference-server-http csomaggal végzett hibakereséshez, használhatja az Indítás és csatolás módot.
Indítási mód esetén állítsa be a launch.json fájlt a VS Code-ban, és indítsa el az Azure Machine Learning következtetési HTTP-kiszolgálóját a VS Code-ban:
Indítsa el a VS Code-ot, és nyissa meg a szkriptet tartalmazó mappát (score.py).
Adja hozzá a következő konfigurációt az adott munkaterület launch.json fájlhoz a VS Code-ban:
launch.json
{ "version": "0.2.0", "configurations": [ { "name": "Debug score.py", "type": "python", "request": "launch", "module": "azureml_inference_server_http.amlserver", "args": [ "--entry_script", "score.py" ] } ] }
Indítsa el a hibakeresési munkamenetet a VS Code-ban a Hibakeresés indítása vagy>az F5 billentyűparancs használatával.
Csatolási mód esetén indítsa el az Azure Machine Learning következtetési HTTP-kiszolgálóját egy parancsablakban, és a VS Code és a Python-bővítmény használatával csatolja a folyamatot:
Feljegyzés
Linux esetén először telepítse a
gdb
csomagot asudo apt-get install -y gdb
parancs futtatásával.Adja hozzá a következő konfigurációt az adott munkaterület launch.json fájlhoz a VS Code-ban:
launch.json
{ "version": "0.2.0", "configurations": [ { "name": "Python: Attach using Process Id", "type": "python", "request": "attach", "processId": "${command:pickProcess}", "justMyCode": true } ] }
A parancsablakban indítsa el a következtetési HTTP-kiszolgálót a
azmlinfsrv --entry_script score.py
parancs használatával.Indítsa el a hibakeresési munkamenetet a VS Code-ban:
Válassza a Hibakeresés indítása lehetőséget>, vagy használja az F5 billentyűparancsot.
A parancsablakban tekintse meg a következtetési kiszolgáló naplóit, és keresse meg a
azmlinfsrv
parancs folyamatazonosítóját (nem a következőtgunicorn
):A VS Code Debuggerben adja meg a parancs folyamatazonosítóját
azmlinfsrv
.Ha nem látja a VS Code folyamatválasztóját, manuálisan is megadhatja a folyamatazonosítót az
processId
adott munkaterület launch.json fájljának mezőjébe.
Mindkét mód esetében beállíthatja a töréspontokat , és lépésről lépésre hibakeresést végezhet a szkriptben.
Végpontok közötti példa használata
Az alábbi eljárás helyileg futtatja a kiszolgálót mintafájlokkal (pontozószkript, modellfájl és környezet) az Azure Machine Learning-példatárból. További példák a mintafájlok használatára: Gépi tanulási modell üzembe helyezése és pontozása online végpont használatával.
Klónozza a mintaadattárat:
git clone --depth 1 https://github.com/Azure/azureml-examples cd azureml-examples/cli/endpoints/online/model-1/
Virtuális környezet létrehozása és aktiválása a Conda használatával:
Ebben a példában a
azureml-inference-server-http
csomag automatikusan telepítve van. A csomag a csomag függő könyvtáraként szerepel aazureml-defaults
conda.yml fájlban:# Create the environment from the YAML file conda env create --name model-env -f ./environment/conda.yml # Activate the new environment conda activate model-env
Tekintse át a pontozási szkriptet:
onlinescoring/score.py
import os import logging import json import numpy import joblib def init(): """ This function is called when the container is initialized/started, typically after create/update of the deployment. You can write the logic here to perform init operations like caching the model in memory """ global model # AZUREML_MODEL_DIR is an environment variable created during deployment. # It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION) # Please provide your model's folder name if there is one model_path = os.path.join( os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl" ) # deserialize the model file back into a sklearn model model = joblib.load(model_path) logging.info("Init complete") def run(raw_data): """ This function is called for every invocation of the endpoint to perform the actual scoring/prediction. In the example we extract the data from the json input and call the scikit-learn model's predict() method and return the result back """ logging.info("model 1: request received") data = json.loads(raw_data)["data"] data = numpy.array(data) result = model.predict(data) logging.info("Request processed") return result.tolist()
Futtassa a következtetési HTTP-kiszolgálót a pontozószkript és a modellfájl megadásával:
A paraméterben
model_dir
megadott modellkönyvtár a változó használatávalAZUREML_MODEL_DIR
van definiálva, és lekéri a pontozási szkriptben.Ebben az esetben az aktuális könyvtárat adja meg./ mert az alkönyvtár a pontozó szkriptben model/sklearn_regression_model.pkl néven van megadva.
azmlinfsrv --entry_script ./onlinescoring/score.py --model_dir ./
Amikor a kiszolgáló elindítja és sikeresen meghívja a pontozási szkriptet, megnyílik a példa indítási naplója . Ellenkező esetben a napló hibaüzeneteket jelenít meg.
A pontozási szkript tesztelése mintaadatokkal:
Nyisson meg egy másik parancsablakot, és váltson ugyanabba a munkakönyvtárba, ahol a parancsot futtatja.
curl
A segédprogrammal példakérést küldhet a kiszolgálónak, és pontozási eredményt kaphat:curl --request POST "127.0.0.1:5001/score" --header "Content-Type:application/json" --data @sample-request.json
Ha a pontozási szkriptben nincsenek problémák, a szkript visszaadja a pontozási eredményt. Ha problémák lépnek fel, megpróbálhatja frissíteni a pontozási szkriptet, és újra elindíthatja a kiszolgálót a frissített szkript teszteléséhez.
Kiszolgálóútvonalak áttekintése
A következtetési HTTP-kiszolgáló alapértelmezés szerint az 5001-es porton figyeli az alábbi útvonalakat:
Név | Útvonal |
---|---|
Élőség-mintavétel | 127.0.0.1:5001/ |
Pontszám | 127.0.0.1:5001/score |
OpenAPI (swagger) | 127.0.0.1:5001/swagger.json |
Kiszolgálóparaméterek áttekintése
A következtetési HTTP-kiszolgáló a következő paramétereket fogadja el:
Paraméter | Kötelező | Alapértelmezett | Leírás |
---|---|---|---|
entry_script |
Igaz | n/a | Azonosítja a pontozó szkript relatív vagy abszolút elérési útját. |
model_dir |
Hamis | n/a | A következtetéshez használt modellt tartalmazó könyvtár relatív vagy abszolút elérési útját azonosítja. |
port |
Hamis | 5001 | A kiszolgáló kiszolgálói portját adja meg. |
worker_count |
Hamis | 0 | Megadja az egyidejű kérések feldolgozásához tartozó feldolgozói szálak számát. |
appinsights_instrumentation_key |
Hamis | n/a | Megadja a rendszerállapotkulcsot az alkalmazáselemzésekhez, ahol a naplók közzé vannak téve. |
access_control_allow_origins |
Hamis | n/a | Engedélyezi a CORS-t a megadott forrásokhoz, ahol több forrás vesszővel (,) van elválasztva, például microsoft.com, bing.com . |
A kiszolgálókérések feldolgozásának megismerése
Az alábbi lépések bemutatják, hogyan kezeli az Azure Machine Learning következtetési HTTP-kiszolgálója (azmlinfsrv
) a bejövő kéréseket:
A Python CLI-burkoló a kiszolgáló hálózati veremén helyezkedik el, és a kiszolgáló elindítására szolgál.
Az ügyfél kérést küld a kiszolgálónak.
A kiszolgáló a kérést a webkiszolgáló átjárófelületén (WSGI) keresztül küldi el, amely elküldi a kérést egy Flask-feldolgozó alkalmazásnak:
A Flask feldolgozó alkalmazás kezeli a kérést, amely magában foglalja a beviteli szkript és a függőségek betöltését is.
A belépési szkript megkapja a kérést. A bejegyzésszkript következtetési hívást indít a betöltött modellre, és választ ad vissza:
A kiszolgálónaplók felfedezése
A következtetési HTTP-kiszolgáló tesztjének naplóadatai kétféleképpen kérhetőek le:
- Futtassa a
azureml-inference-server-http
csomagot helyileg, és tekintse meg a naplók kimenetét. - Online végpontok használata és a tárolónaplók megtekintése. A következtetési kiszolgáló naplójának neve Azure Machine Learning Inferencing HTTP-kiszolgáló <verziója>.
Feljegyzés
A naplózási formátum a 0.8.0-s verzió óta megváltozott. Ha a napló a várttól eltérő stílust használ, frissítse a azureml-inference-server-http
csomagot a legújabb verzióra.
Indítási naplók megtekintése
A kiszolgáló indításakor a naplók az alábbiak szerint jelenítik meg a kezdeti kiszolgálóbeállításokat:
Azure Machine Learning Inferencing HTTP server <version>
Server Settings
---------------
Entry Script Name: <entry_script>
Model Directory: <model_dir>
Worker Count: <worker_count>
Worker Timeout (seconds): None
Server Port: <port>
Application Insights Enabled: false
Application Insights Key: <appinsights_instrumentation_key>
Inferencing HTTP server version: azmlinfsrv/<version>
CORS for the specified origins: <access_control_allow_origins>
Server Routes
---------------
Liveness Probe: GET 127.0.0.1:<port>/
Score: POST 127.0.0.1:<port>/score
<logs>
Ha például a végpontok közötti példát követve indítja el a kiszolgálót, a napló a következőképpen jelenik meg:
Azure Machine Learning Inferencing HTTP server v0.8.0
Server Settings
---------------
Entry Script Name: /home/user-name/azureml-examples/cli/endpoints/online/model-1/onlinescoring/score.py
Model Directory: ./
Worker Count: 1
Worker Timeout (seconds): None
Server Port: 5001
Application Insights Enabled: false
Application Insights Key: None
Inferencing HTTP server version: azmlinfsrv/0.8.0
CORS for the specified origins: None
Server Routes
---------------
Liveness Probe: GET 127.0.0.1:5001/
Score: POST 127.0.0.1:5001/score
2022-12-24 07:37:53,318 I [32726] gunicorn.error - Starting gunicorn 20.1.0
2022-12-24 07:37:53,319 I [32726] gunicorn.error - Listening at: http://0.0.0.0:5001 (32726)
2022-12-24 07:37:53,319 I [32726] gunicorn.error - Using worker: sync
2022-12-24 07:37:53,322 I [32756] gunicorn.error - Booting worker with pid: 32756
Initializing logger
2022-12-24 07:37:53,779 I [32756] azmlinfsrv - Starting up app insights client
2022-12-24 07:37:54,518 I [32756] azmlinfsrv.user_script - Found user script at /home/user-name/azureml-examples/cli/endpoints/online/model-1/onlinescoring/score.py
2022-12-24 07:37:54,518 I [32756] azmlinfsrv.user_script - run() is not decorated. Server will invoke it with the input in JSON string.
2022-12-24 07:37:54,518 I [32756] azmlinfsrv.user_script - Invoking user's init function
2022-12-24 07:37:55,974 I [32756] azmlinfsrv.user_script - Users's init has completed successfully
2022-12-24 07:37:55,976 I [32756] azmlinfsrv.swagger - Swaggers are prepared for the following versions: [2, 3, 3.1].
2022-12-24 07:37:55,977 I [32756] azmlinfsrv - AML_FLASK_ONE_COMPATIBILITY is set, but patching is not necessary.
A naplóadatok formátumának ismertetése
A következtetési HTTP-kiszolgáló összes naplója a indítószkript kivételével az alábbi formátumban jeleníti meg az adatokat:
<UTC Time> | <level> [<pid>] <logger name> - <message>
A bejegyzés a következő összetevőkből áll:
<UTC Time>
: A bejegyzés naplóba való bevitelének időpontja.<pid>
: A bejegyzéshez társított folyamat azonosítója.<level>
: A bejegyzés naplózási szintjének első karaktere( példáulE
HIBA,I
INFORMÁCIÓ stb.).<logger name>
: A naplóbejegyzéshez társított erőforrás neve.<message>
: A naplóüzenet tartalma.
A Pythonban a naplózásnak hat szintje van a súlyosságnak megfelelően hozzárendelt numerikus értékekkel:
Naplózási szint | Számérték |
---|---|
KRITIKUS | 50 |
HIBA | 40 |
FIGYELMEZTETÉS | 30 |
INFÓ | 20 |
DEBUG | 10 |
NOTSET | 0 |
Kiszolgálóproblémák elhárítása
Az alábbi szakaszok alapvető hibaelhárítási tippeket nyújtanak az Azure Machine Learning következtetési HTTP-kiszolgálójához. Az online végpontok hibaelhárításához tekintse meg az online végpontok üzembe helyezésének hibaelhárítását.
Telepített csomagok ellenőrzése
A telepített csomagokkal kapcsolatos problémák megoldásához kövesse az alábbi lépéseket.
Információkat gyűjthet a Python-környezet telepített csomagjairól és verzióiról.
Ellenőrizze, hogy a
azureml-inference-server-http
környezeti fájlban megadott Python-csomag verziója megegyezik-e az indítási naplóban megjelenített Azure Machine Learning-következtetés HTTP-kiszolgáló verziójával.Bizonyos esetekben a pipfüggőség-feloldó nem várt csomagverziókat telepít. Előfordulhat, hogy futtatnia
pip
kell a telepített csomagok és verziók kijavításához.Ha megadja a Flaskot vagy annak függőségeit a környezetben, távolítsa el ezeket az elemeket.
- A függő csomagok a következők:
flask
,jinja2
,itsdangerous
,werkzeug
,markupsafe
ésclick
. flask
függőségként szerepel a kiszolgálócsomagban. A legjobb módszer, ha engedélyezi a következtetési kiszolgáló számára aflask
csomag telepítését.- Ha a következtetési kiszolgáló úgy van konfigurálva, hogy támogassa a Flask új verzióit, a kiszolgáló automatikusan megkapja a csomagfrissítéseket, amint elérhetővé válnak.
- A függő csomagok a következők:
Kiszolgáló verziójának ellenőrzése
A azureml-inference-server-http
kiszolgálócsomag közzé van téve a PyPI-ban. A PyPI-oldal felsorolja a változásnaplót és az összes korábbi verziót.
Ha korábbi csomagverziót használ, frissítse a konfigurációt a legújabb verzióra. Az alábbi táblázat a stabil verziókat, a gyakori problémákat és a javasolt módosításokat foglalja össze:
Csomag verziója | Leírás | Probléma | Feloldás |
---|---|---|---|
0.4.x | Betanítási képekbe csomagolva, dátummal 20220601 vagy korábbi dátummal, valamint azureml-defaults csomagverziókkal.1.34 .1.43 A legújabb stabil verzió a 0.4.13. |
A 0.4.11-nél korábbi kiszolgálóverziók esetében előfordulhat, hogy a Flask függőségi problémái merülnek fel, például"can't import name Markup from jinja2" . |
Ha lehetséges, frissítsen a 0.4.13-es vagy a 0.8.x-es verzióra. |
0.6.x | Előre telepítette a dátummal és a korábbi dátummal megadott 20220516 képek következtetését. A legújabb stabil verzió a 0.6.1. |
N.A. | N.A. |
0.7.x | Támogatja a Flask 2-t. A legújabb stabil verzió a 0.7.7. | N.A. | N.A. |
0.8.x | A naplóformátum megváltozott. A Python 3.6 támogatása véget ért. | N.A. | N.A. |
Csomagfüggőségek ellenőrzése
A kiszolgálócsomag legfontosabb függő csomagjai a azureml-inference-server-http
következők:
flask
opencensus-ext-azure
inference-schema
Ha a csomagot Python-környezetben azureml-defaults
adta meg, a azureml-inference-server-http
csomag függő csomag. A függőség telepítése automatikusan megtörténik.
Tipp.
Ha Python SDK v1-et használ, és nem adja meg explicit módon a csomagot a azureml-defaults
Python-környezetben, előfordulhat, hogy az SDK automatikusan hozzáadja a csomagot. A csomagkezelő verziója azonban az SDK-verzióhoz képest zárolva van. Ha például az SDK verziója, 1.38.0
akkor a rendszer hozzáadja a azureml-defaults==1.38.0
bejegyzést a környezet pipkövetelményeihez.
TypeError a kiszolgáló indításakor
A kiszolgáló indításakor az alábbiakat TypeError
tapasztalhatja:
TypeError: register() takes 3 positional arguments but 4 were given
File "/var/azureml-server/aml_blueprint.py", line 251, in register
super(AMLBlueprint, self).register(app, options, first_registration)
TypeError: register() takes 3 positional arguments but 4 were given
Ez a hiba akkor fordul elő, ha a Flask 2 telepítve van a Python-környezetben, de a azureml-inference-server-http
csomag verziója nem támogatja a Flask 2-t. A Flask 2 támogatása a 0.7.0-s és újabb csomagban, valamint azureml-defaults
az 1.44-es és újabb csomagban azureml-inference-server-http
érhető el.
Ha nem használja a Flask 2 csomagot egy Azure Machine Learning Docker-rendszerképben, használja a
azureml-inference-server-http
csomag legújabbazureml-defaults
verzióját.Ha a Flask 2 csomagot egy Azure Machine Learning Docker-rendszerképben használja, győződjön meg arról, hogy a rendszerkép buildjének verziója 2022 . júliusi vagy újabb.
A rendszerkép verziója a tárolónaplókban található. Példa:
2022-08-22T17:05:02,147738763+00:00 | gunicorn/run | AzureML Container Runtime Information 2022-08-22T17:05:02,161963207+00:00 | gunicorn/run | ############################################### 2022-08-22T17:05:02,168970479+00:00 | gunicorn/run | 2022-08-22T17:05:02,174364834+00:00 | gunicorn/run | 2022-08-22T17:05:02,187280665+00:00 | gunicorn/run | AzureML image information: openmpi4.1.0-ubuntu20.04, Materialization Build:20220708.v2 2022-08-22T17:05:02,188930082+00:00 | gunicorn/run | 2022-08-22T17:05:02,190557998+00:00 | gunicorn/run |
A kép buildelési dátuma a
Materialization Build
jelölés után jelenik meg. Az előző példában a kép verziója20220708
vagy 2022. július 8. A példában szereplő kép kompatibilis a Flask 2-vel.Ha nem lát hasonló üzenetet a tárolónaplóban, a rendszerkép elavult, ezért frissítenie kell. Ha számítási egyesített eszközarchitektúra (CUDA) rendszerképet használ, és nem talál újabb rendszerképet, ellenőrizze, hogy a rendszerkép elavult-e az AzureML-Tárolókban. Az elavult képekhez kijelölt helyettesítőket is megtalálhatja.
Ha a kiszolgálót online végponttal használja, a naplókat az Azure Machine Learning Studio Végpontok lapján található Naplók lapon is megtalálhatja.
Ha az SDK 1-es verziójával telepít, és nem ad meg explicit módon lemezképet az üzembe helyezési konfigurációban, a kiszolgáló a openmpi4.1.0-ubuntu20.04
csomagot a helyi SDK-eszközkészletnek megfelelő verzióval alkalmazza. Előfordulhat azonban, hogy a telepített verzió nem a rendszerkép legújabb elérhető verziója.
Az SDK 1.43-es verziója esetén a kiszolgáló alapértelmezés szerint telepíti a openmpi4.1.0-ubuntu20.04:20220616
csomagverziót, de ez a csomagverzió nem kompatibilis az SDK 1.43-zal. Győződjön meg arról, hogy a legújabb SDK-t használja az üzembe helyezéshez.
Ha nem tudja frissíteni a képet, ideiglenesen elkerülheti a problémát a azureml-defaults==1.43
környezeti fájlban lévő bejegyzések vagy azureml-inference-server-http~=0.4.13
bejegyzések rögzítésével. Ezek a bejegyzések arra utasítják a kiszolgálót, hogy telepítse a régebbi verziót a következővel flask 1.0.x
: .
ImportError vagy ModuleNotFoundError a kiszolgáló indításakor
Előfordulhat, hogy a kiszolgáló indításakor egy ImportError
vagy ModuleNotFoundError
több modullal találkozik, például opencensus
, jinja2
, markupsafe
vagy click
. Az alábbi példa a hibaüzenetet mutatja be:
ImportError: cannot import name 'Markup' from 'jinja2'
Az importálási és modulhibák akkor fordulnak elő, ha a kiszolgáló 0.4.10-es vagy korábbi verzióit használja, amelyek nem rögzítik a Flask-függőséget egy kompatibilis verzióra. A probléma elkerülése érdekében telepítse a kiszolgáló egy későbbi verzióját.
Kapcsolódó tartalom
- Modell üzembe helyezése az Azure Machine Learning használatával
- Előre összeállított Docker-rendszerképek használata következtetéshez