Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De HTTP-server van Azure Machine Learning-deductie is een Python-pakket dat uw scorefunctie beschikbaar maakt als een HTTP-eindpunt en de Flask-servercode en afhankelijkheden verpakt in een enkel pakket. De deductieserver is opgenomen in de vooraf gemaakte Docker-installatiekopieën voor deductie die worden gebruikt bij het implementeren van een model in Azure Machine Learning. Wanneer u het pakket alleen gebruikt, kunt u het model lokaal implementeren voor productie. U kunt uw scorescript (invoerscript) ook eenvoudig valideren in een lokale ontwikkelomgeving. Als er een probleem is met het scorescript, retourneert de deductieserver een fout en de locatie van de fout.
U kunt de deductieserver ook gebruiken om validatiepoorten te maken in een pijplijn voor continue integratie en implementatie. U kunt bijvoorbeeld de deductieserver starten met het kandidaatscript en de testsuite uitvoeren op het lokale eindpunt.
Dit artikel ondersteunt ontwikkelaars die de deductieserver willen gebruiken om lokaal fouten op te sporen. In dit artikel ziet u hoe u de deductieserver gebruikt met online-eindpunten.
Vereisten
- Python 3.8 of hoger
- Anaconda
De deductieserver wordt uitgevoerd op Windows- en Linux-besturingssystemen.
Opties voor lokale foutopsporing voor online-eindpunten verkennen
Door lokaal fouten in eindpunten op te sporen voordat u in de cloud implementeert, kunt u fouten in uw code en configuratie vroegtijdig opsporen. Als u lokaal fouten wilt opsporen in eindpunten, hebt u verschillende opties, waaronder:
- De HTTP-server voor deductie van Azure Machine Learning.
- Een lokaal eindpunt.
De volgende tabel bevat een overzicht van de ondersteuning die elke optie biedt voor verschillende foutopsporingsscenario's:
| Scenariobeschrijving | Inferentieserver | Lokaal eindpunt |
|---|---|---|
| Lokale Python-omgeving bijwerken zonder opnieuw opbouwen van Docker-installatiekopieën | Ja | Nr. |
| Scorescript bijwerken | Ja | Ja |
| Implementatieconfiguraties bijwerken (implementatie, omgeving, code, model) | Nr. | Ja |
| Foutopsporingsprogramma van Microsoft Visual Studio Code (VS Code) integreren | Ja | Ja |
In dit artikel wordt beschreven hoe u de deductieserver gebruikt.
Wanneer u de deductieserver lokaal uitvoert, kunt u zich richten op het opsporen van fouten in uw scorescript zonder dat u zich zorgen hoeft te maken over implementatiecontainerconfiguraties.
Fouten opsporen in uw scorescript lokaal
Als u lokaal fouten in uw scorescript wilt opsporen, hebt u verschillende opties voor het testen van het gedrag van de deductieserver:
- Gebruik een dummy score script.
- Gebruik VS Code om fouten op te sporen met het pakket azureml-inference-server-http .
- Voer een daadwerkelijk scorescript, modelbestand en omgevingsbestand uit vanuit de voorbeeldenopslagplaats.
De volgende secties bevatten informatie over elke optie.
Een dummy-scorescript gebruiken om het gedrag van de deductieserver te testen
Maak een map met de naam server_quickstart om uw bestanden op te slaan:
mkdir server_quickstart cd server_quickstartAls u pakketconflicten wilt voorkomen, maakt u een virtuele omgeving, zoals
myenv, en activeert u deze:python -m virtualenv myenvNotitie
Voer in Linux de
source myenv/bin/activateopdracht uit om de virtuele omgeving te activeren.Nadat u de deductieserver hebt getest, kunt u de
deactivateopdracht uitvoeren om de virtuele Python-omgeving te deactiveren.Installeer het
azureml-inference-server-httppakket vanuit de PyPI-feed (Python Package Index):python -m pip install azureml-inference-server-httpMaak het invoerscript. In het volgende voorbeeld wordt een eenvoudig invoerscript gemaakt en opgeslagen in een bestand met de naam score.py:
echo -e 'import time\ndef init(): \n\ttime.sleep(1) \n\ndef run(input_data): \n\treturn {"message":"Hello, World!"}' > score.pyGebruik de
azmlinfsrvopdracht om de deductieserver te starten en het score.py-bestand in te stellen als het invoerscript:azmlinfsrv --entry_script score.pyNotitie
De deductieserver wordt gehost op 0.0.0.0, wat betekent dat deze luistert naar alle IP-adressen van de hostingmachine.
Gebruik het
curlhulpprogramma om een scoreaanvraag naar de deductieserver te verzenden:curl -p 127.0.0.1:5001/scoreDe deductieserver plaatst het volgende antwoord:
{"message": "Hello, World!"}Wanneer u klaar bent met testen, selecteert u Ctrl+C om de deductieserver te stoppen.
U kunt het score.py scorescriptbestand wijzigen. Vervolgens kunt u uw wijzigingen testen met behulp van de azmlinfsrv --entry_script score.py opdracht om de deductieserver opnieuw uit te voeren.
Integreren met VS Code
In VS Code kunt u de Python-extensie gebruiken voor foutopsporing met het azureml-inference-server-http-pakket . VS Code biedt twee modi voor foutopsporing: starten en koppelen.
Voordat u een van beide modi gebruikt, installeert u het azureml-inference-server-http pakket door de volgende opdracht uit te voeren:
python -m pip install azureml-inference-server-http
Notitie
Installeer de deductieserver in een virtuele omgeving om pakketconflicten te voorkomen. U kunt de pip install virtualenv opdracht gebruiken om virtuele omgevingen in te schakelen voor uw configuratie.
Startmodus
Voer voor de startmodus de volgende stappen uit om het VS Code-launch.json-configuratiebestand in te stellen en de deductieserver in VS Code te starten:
Start VS Code en open de map met het score.py script.
Voeg voor die werkruimte in VS Code de volgende configuratie toe aan het launch.json-bestand:
{ "version": "0.2.0", "configurations": [ { "name": "Debug score.py", "type": "debugpy", "request": "launch", "module": "azureml_inference_server_http.amlserver", "args": [ "--entry_script", "score.py" ] } ] }Start de foutopsporingssessie in VS Code door Uitvoeren>Start Foutopsporing te selecteren of door F5 te selecteren.
Koppelmodus
Voer voor de bijlagemodus de volgende stappen uit om VS Code te gebruiken met de Python-extensie om te koppelen aan het deductieserverproces:
Notitie
Voor Linux installeert u eerst het gdb pakket door de opdracht uit te sudo apt-get install -y gdb voeren.
Start VS Code en open de map met het score.py script.
Voeg voor die werkruimte in VS Code de volgende configuratie toe aan het launch.json-bestand:
{ "version": "0.2.0", "configurations": [ { "name": "Python: Attach using Process ID", "type": "debugpy", "request": "attach", "processId": "${command:pickProcess}", "justMyCode": true } ] }Start de deductieserver in een opdrachtvenster door de opdracht uit te
azmlinfsrv --entry_script score.pyvoeren.Voer de volgende stappen uit om de foutopsporingssessie in VS Code te starten:
Selecteer Uitvoeren>Start foutopsporing of selecteer F5.
Zoek in het opdrachtvenster de logboeken van de deductieserver om de proces-id van het
azmlinfsrvproces te vinden:Zorg ervoor dat u de id van het
azmlinfsrvproces zoekt, niet hetgunicornproces.Voer in het foutopsporingsprogramma van VS Code de id van het
azmlinfsrvproces in.Als u de VS Code-proceskiezer niet ziet, voert u handmatig de proces-id in het
processIdveld van het launch.json-bestand voor de werkruimte in.
Voor het starten en koppelen van modi kunt u onderbrekingspunten instellen en fouten in het script stapsgewijs opsporen.
Een end-to-end-voorbeeld gebruiken
Met de volgende procedure wordt de deductieserver lokaal uitgevoerd met voorbeeldbestanden uit de voorbeeldopslagplaats van Azure Machine Learning. De voorbeeldbestanden bevatten een scorescript, een modelbestand en een omgevingsbestand. Zie Een machine learning-model implementeren en beoordelen met behulp van een online-eindpunt voor meer voorbeelden van het gebruik van deze voorbeeldbestanden.
Kloon de voorbeeldopslagplaats en ga naar de map met de relevante voorbeeldbestanden:
git clone --depth 1 https://github.com/Azure/azureml-examples cd azureml-examples/cli/endpoints/online/model-1/Gebruik Conda om een virtuele omgeving te maken en te activeren:
In dit voorbeeld wordt het
azureml-inference-server-httppakket automatisch geïnstalleerd. Het pakket is opgenomen als een afhankelijke bibliotheek van hetazureml-defaultspakket, dat wordt vermeld in het conda.yaml-bestand.# Create the environment from the YAML file. conda env create --name model-env -f ./environment/conda.yaml # Activate the new environment. conda activate model-envControleer het scorescript, onlinescoring/score.py:
import os import logging import json import numpy import joblib def init(): """ This function is called when the container is initialized/started, typically after create/update of the deployment. You can write the logic here to perform init operations like caching the model in memory """ global model # AZUREML_MODEL_DIR is an environment variable created during deployment. # It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION) # Please provide your model's folder name if there is one model_path = os.path.join( os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl" ) # deserialize the model file back into a sklearn model model = joblib.load(model_path) logging.info("Init complete") def run(raw_data): """ This function is called for every invocation of the endpoint to perform the actual scoring/prediction. In the example we extract the data from the json input and call the scikit-learn model's predict() method and return the result back """ logging.info("model 1: request received") data = json.loads(raw_data)["data"] data = numpy.array(data) result = model.predict(data) logging.info("Request processed") return result.tolist()Start de inferentieserver door het scorescript en het pad naar de modelmap op te geven.
Tijdens de implementatie wordt de
AZUREML_MODEL_DIRvariabele gedefinieerd om het pad naar de modelmap op te slaan. U geeft die waarde op in demodel_dirparameter. Wanneer het scorescript wordt uitgevoerd, wordt de waarde opgehaald uit deAZUREML_MODEL_DIRvariabele.In dit geval gebruikt u de huidige map,
./als demodel_dirwaarde, omdat het scorescript de submap opgeeft alsmodel/sklearn_regression_model.pkl.azmlinfsrv --entry_script ./onlinescoring/score.py --model_dir ./Wanneer de inferenceserver wordt gestart en met succes het score-script aanroept, wordt het opstartlogboek van het voorbeeld geopend. Anders worden in het logboek foutberichten weergegeven.
Test het scorescript met voorbeeldgegevens door de volgende stappen uit te voeren:
Open een ander opdrachtvenster en ga naar dezelfde werkmap waarin u de
azmlinfsrvopdracht hebt uitgevoerd.Gebruik het volgende
curlhulpprogramma om een voorbeeldaanvraag naar de deductieserver te verzenden en een scoreresultaat te ontvangen:curl --request POST "127.0.0.1:5001/score" --header "Content-Type:application/json" --data @sample-request.jsonWanneer er geen problemen zijn met het scorescript, retourneert het script het scoreresultaat. Als er problemen optreden, kunt u het scorescript bijwerken en de deductieserver opnieuw starten om het bijgewerkte script te testen.
Inferenceserverroutes beoordelen
De deductieserver luistert standaard op poort 5001 op de volgende routes:
| Naam | Route |
|---|---|
| Levendigheidscontrole | 127.0.0.1:5001/ |
| Score | 127.0.0.1:5001/score |
| OpenAPI (swagger) | 127.0.0.1:5001/swagger.json |
Serverparameters voor deductie controleren
De deductieserver accepteert de volgende parameters:
| Kenmerk | Vereist | Verstek | Omschrijving |
|---|---|---|---|
entry_script |
Waar | N.v.t. | Identificeert het relatieve of absolute pad naar het scorescript |
model_dir |
Onwaar | N.v.t. | Identificeert het relatieve of absolute pad naar de map waarin het model wordt opgeslagen dat gebruikt wordt voor inferentie. |
port |
Onwaar | 5001 | Geeft de poort op van de inference-server |
worker_count |
Onwaar | 1 | Biedt het aantal werkdraad aan voor het verwerken van gelijktijdige aanvragen |
appinsights_instrumentation_key |
Onwaar | N.v.t. | Biedt de instrumentatiesleutel voor het exemplaar van Application Insights waarin de logbestanden worden gepubliceerd |
access_control_allow_origins |
Onwaar | N.v.t. | Hiermee schakelt u CORS (Cross-Origin Resource Sharing) in voor de opgegeven oorsprongen, waarbij meerdere oorsprongen worden gescheiden door een komma (,), zoals microsoft.com, bing.com |
Verwerking van de deductieserveraanvragen verkennen
De volgende stappen laten zien hoe de deductieserver, azmlinfsrvbinnenkomende aanvragen verwerkt:
Een Python CLI-wrapper bevindt zich rond de netwerkstack van de deductieserver en wordt gebruikt om de deductieserver te starten.
Een client verzendt een aanvraag naar de deductieserver.
De deductieserver verzendt de aanvraag via de WSGI-server (Web Server Gateway Interface), die de aanvraag verzendt naar een van de volgende Flask-werktoepassingen:
- In Windows: serveerster
- Op Linux: gunicorn
De Flask-werkrol-app verwerkt de aanvraag, waaronder het laden van het invoerscript en eventuele afhankelijkheden.
Uw invoerscript ontvangt de aanvraag. Het invoerscript maakt een deductieaanroep naar het geladen model en retourneert een antwoord.
Deductieserverlogboeken verkennen
Er zijn twee manieren om logboekgegevens te verkrijgen voor de deductieservertest:
- Voer het
azureml-inference-server-httppakket lokaal uit en bekijk de logboekuitvoer. - Gebruik online-eindpunten en bekijk de containerlogboeken. Het logboek voor de deductieserver heeft de naam Azure Machine Learning Inferencing HTTP-serverversie<>.
Notitie
De indeling voor logboekregistratie is gewijzigd sinds versie 0.8.0. Als uw logboek een andere stijl gebruikt dan verwacht, werkt u het azureml-inference-server-http pakket bij naar de nieuwste versie.
Opstartlogboeken weergeven
Wanneer de deductieserver wordt gestart, worden in de logboeken de volgende initiële serverinstellingen weergegeven:
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>
Wanneer u bijvoorbeeld de inferentieserver uitvoert door de stappen van het end-to-end voorbeeld te volgen, bevatten de logs de volgende informatie:
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
Informatie over de indeling van logboekgegevens
Alle logboeken van de deductieserver, met uitzondering van het startprogrammascript, bevatten gegevens in de volgende indeling:
<UTC-time> <level> [<process-ID>] <logger-name> - <message>
Elke vermelding bestaat uit de volgende onderdelen:
-
<UTC-time>: het tijdstip waarop de vermelding wordt ingevoerd in het logboek -
<level>: Het eerste teken van het logboekregistratieniveau voor de vermelding, zoalsEvoor ERROR,Ivoor INFO, enzovoort -
<process-ID>: De id van het proces dat is gekoppeld aan de vermelding -
<logger-name>: De naam van de resource die is gekoppeld aan de logboekvermelding -
<message>: De inhoud van het logboekbericht
Er zijn zes niveaus van logboekregistratie in Python. Aan elk niveau is een toegewezen numerieke waarde toegewezen op basis van de ernst:
| Niveau van logboekregistratie | Numerieke waarde |
|---|---|
| KRITISCH | 50 |
| FOUT | 40 |
| WAARSCHUWING | 30 |
| INFO | 20 |
| DEBUG | 10 |
| NOTSET | 0 |
Problemen met deductieserver oplossen
De volgende secties bevatten eenvoudige tips voor probleemoplossing voor de deductieserver. Zie Problemen met online-eindpuntimplementatie en scoringsproblemen oplossen voor het oplossen van problemen met online-eindpunten.
Geïnstalleerde pakketten controleren
Volg deze stappen om problemen met geïnstalleerde pakketten op te lossen:
Verzamel informatie over geïnstalleerde pakketten en versies voor uw Python-omgeving.
Controleer in uw omgevingsbestand de versie van het
azureml-inference-server-httpPython-pakket dat is opgegeven. Controleer in de opstartlogboeken van de inferentie-HTTP-server van Azure Machine Learning de versie van de inferentieserver die wordt weergegeven. Controleer of de twee versies overeenkomen.In sommige gevallen installeert de pip-afhankelijkheidsoplossing onverwachte pakketversies. Mogelijk moet u de geïnstalleerde pakketten en versies corrigeren
pip.Als u in uw omgeving Flask of de afhankelijkheden daarvan opgeeft, verwijder dan deze items.
- Afhankelijke pakketten zijn onder andere , , , , en
flaskjinja2.itsdangerouswerkzeugmarkupsafeclick - Het
flaskpakket wordt vermeld als een afhankelijkheid in het deductieserverpakket. De beste methode is om de deductieserver toe te staan hetflaskpakket te installeren. - Wanneer de deductieserver is geconfigureerd ter ondersteuning van nieuwe versies van Flask, ontvangt de deductieserver automatisch de pakketupdates zodra deze beschikbaar komen.
- Afhankelijke pakketten zijn onder andere , , , , en
Controleer de versie van de deductieserver
Het azureml-inference-server-http serverpakket wordt gepubliceerd naar PyPI. De PyPI-pagina bevat het wijzigingenlogboek en alle versies van het pakket.
Als u een vroege pakketversie gebruikt, werkt u uw configuratie bij naar de nieuwste versie. De volgende tabel bevat een overzicht van stabiele versies, veelvoorkomende problemen en aanbevolen aanpassingen:
| Versie van het pakket | Omschrijving | Verzenden | Oplossing |
|---|---|---|---|
| 0.4.x | Gebundeld in trainingsafbeeldingen die zijn gedateerd tot en met 20220601 of eerder en pakketversies 0.1.34 tot en met 1.43. De nieuwste stabiele versie is 0.4.13. |
Voor serverversies ouder dan 0.4.11 kunnen Flask-afhankelijkheidsproblemen optreden, zoals can't import name Markup from jinja2. |
Voer een upgrade uit naar versie 0.4.13 of 1.4.x, indien mogelijk de nieuwste versie. |
| 0.6.x | Vooraf geïnstalleerd in deductie-installatiekopieën die zijn gedateerd 20220516 en eerder. De nieuwste stabiele versie is 0.6.1. |
N.v.t. | N.v.t. |
| 0.7.x | Ondersteunt Flask 2. De nieuwste stabiele versie is 0.7.7. | N.v.t. | N.v.t. |
| 0.8.x | Maakt gebruik van een bijgewerkte logboekindeling. Hiermee wordt de ondersteuning voor Python 3.6 beëindigd. | N.v.t. | N.v.t. |
| 1.0.x | Hiermee wordt de ondersteuning voor Python 3.7 beëindigd. | N.v.t. | N.v.t. |
| 1.1.x | Wordt gemigreerd naar pydantic 2.0. |
N.v.t. | N.v.t. |
| 1.2.x | Voegt ondersteuning toe voor Python 3.11. Updates gunicorn voor versie 22.0.0. Updates werkzeug voor versie 3.0.3 en nieuwere versies. |
N.v.t. | N.v.t. |
| 1.3.x | Voegt ondersteuning toe voor Python 3.12. Upgrades certifi naar versie 2024.7.4. Upgrade flask-cors naar versie 5.0.0. Hiermee worden de gunicorn en pydantic pakketten bijgewerkt. |
N.v.t. | N.v.t. |
| 1.4.x | Voert een upgrade van waitress naar versie 3.0.1 uit. Hiermee wordt de ondersteuning voor Python 3.8 beëindigd. Hiermee verwijdert u de compatibiliteitslaag die voorkomt dat de Flask 2.0-upgrade code voor aanvraagobjecten onderbreekt. |
Als u afhankelijk bent van de compatibiliteitslaag, werkt uw aanvraagobjectcode mogelijk niet. | Migreer uw scorescript naar Flask 2. |
Pakketafhankelijkheden controleren
De meest relevante afhankelijke pakketten voor het azureml-inference-server-http serverpakket zijn:
flaskopencensus-ext-azureinference-schema
Als u het azureml-defaults pakket opgeeft in uw Python-omgeving, is het azureml-inference-server-http pakket een afhankelijk pakket. De afhankelijkheid wordt automatisch geïnstalleerd.
Aanbeveling
Als u de Azure Machine Learning SDK voor Python v1 gebruikt en het pakket niet expliciet opgeeft azureml-defaults in uw Python-omgeving, kan de SDK het pakket automatisch toevoegen. De pakketversie is echter vergrendeld ten opzichte van de SDK-versie. Als de SDK-versie bijvoorbeeld 1.38.0 is, wordt de azureml-defaults==1.38.0 vermelding toegevoegd aan de pip-vereisten van de omgeving.
TypeError tijdens het opstarten van de deductieserver
U kunt het volgende TypeError tegenkomen tijdens het opstarten van de deductieserver:
TypeError: register() takes 3 positional arguments but 4 were given
File "/var/azureml-server/aml_blueprint.py", line 251, in register
super(AMLBlueprint, self).register(app, options, first_registration)
TypeError: register() takes 3 positional arguments but 4 were given
Deze fout treedt op wanneer Flask 2 is geïnstalleerd in uw Python-omgeving, maar de azureml-inference-server-http pakketversie biedt geen ondersteuning voor Flask 2. Ondersteuning voor Flask 2 is beschikbaar in het azureml-inference-server-http 0.7.0-pakket en latere versies, en het azureml-defaults 1.44-pakket en latere versies.
Als u het Flask 2-pakket niet gebruikt in een Azure Machine Learning Docker-installatiekopieën, gebruikt u de nieuwste versie van het
azureml-inference-server-httpofazureml-defaultspakket.Als u het Flask 2-pakket in een Azure Machine Learning Docker-image gebruikt, controleer of de buildversie
July 2022of hoger is.U vindt de versie van de installatiekopieën in de containerlogboeken. Zie bijvoorbeeld de volgende logboekinstructies:
2022-08-22T17:05:02,147738763+00:00 | gunicorn/run | AzureML Container Runtime Information 2022-08-22T17:05:02,161963207+00:00 | gunicorn/run | ############################################### 2022-08-22T17:05:02,168970479+00:00 | gunicorn/run | 2022-08-22T17:05:02,174364834+00:00 | gunicorn/run | 2022-08-22T17:05:02,187280665+00:00 | gunicorn/run | AzureML image information: openmpi4.1.0-ubuntu20.04, Materialization Build:20220708.v2 2022-08-22T17:05:02,188930082+00:00 | gunicorn/run | 2022-08-22T17:05:02,190557998+00:00 | gunicorn/run |De builddatum van de installatiekopieën wordt na de
Materialization Buildnotatie weergegeven. In het voorgaande voorbeeld is de beeldversie20220708, of 8 juli 2022. De afbeelding in dit voorbeeld is compatibel met Flask 2.Als u geen vergelijkbaar bericht in het containerlogboek ziet, is uw installatiekopieën verouderd en moeten ze worden bijgewerkt. Als u een CUDA-installatiekopie (Compute Unified Device Architecture) gebruikt en u geen nieuwere installatiekopie kunt vinden, controleert u de opslagplaats AzureML-Containers om te zien of uw installatiekopie is afgeschaft. U vindt aangewezen vervangingen voor afgeschafte installatiekopieën.
Als u de deductieserver gebruikt met een online-eindpunt, kunt u ook de logboeken vinden in Azure Machine Learning Studio. Selecteer op de pagina voor uw eindpunt het tabblad Logboeken .
Als u implementeert met de SDK v1 en niet expliciet een installatiekopie opgeeft in uw implementatieconfiguratie, past de deductieserver het openmpi4.1.0-ubuntu20.04 pakket toe met een versie die overeenkomt met uw lokale SDK-toolset. De geïnstalleerde versie is echter mogelijk niet de meest recente beschikbare versie van de afbeeldingen.
Voor SDK-versie 1.43 installeert de deductieserver standaard de openmpi4.1.0-ubuntu20.04:20220616 pakketversie, maar deze pakketversie is niet compatibel met SDK 1.43. Zorg ervoor dat u de nieuwste SDK voor uw implementatie gebruikt.
Als u de installatiekopieën niet kunt bijwerken, kunt u het probleem tijdelijk voorkomen door de azureml-defaults==1.43 vermeldingen in azureml-inference-server-http~=0.4.13 uw omgevingsbestand vast te maken. Met deze vermeldingen wordt de inferentieserver geïnstrueerd om de oudere versie met flask 1.0.x te installeren.
ImportError of ModuleNotFoundError tijdens het opstarten van de inferenceserver
Tijdens het opstarten van de inferenceserver kunt u een ImportError of ModuleNotFoundError tegenkomen op specifieke modules zoals opencensus, jinja2, markupsafe, of click. In het volgende voorbeeld ziet u het foutbericht:
ImportError: cannot import name 'Markup' from 'jinja2'
De import- en modulefouten treden op wanneer u versie 0.4.10 of eerdere versies van de deductieserver gebruikt die de Flask-afhankelijkheid niet vastmaken aan een compatibele versie. Installeer een latere versie van de deductieserver om het probleem te voorkomen.