Hibaelhárítás helyi modell üzembe helyezésével
Első lépésként próbálja ki a helyi modell üzembe helyezését az Azure Container Instances (ACI) vagy az Azure Kubernetes Service (AKS) üzembe helyezésének hibaelhárításában. A helyi webszolgáltatás használata megkönnyíti az Azure Machine Tanulás Docker webszolgáltatás üzembe helyezési hibáinak észlelése és kijavítása.
Előfeltételek
- Egy Azure-előfizetés. Próbálja ki az Azure Machine Tanulás ingyenes vagy fizetős verzióját.
- A lehetőség (ajánlott) – Hibakeresés helyileg az Azure Machine Tanulás Számítási példányon
- Azure Machine Tanulás-munkaterület, amelyen számítási példány fut
- B lehetőség – Helyi hibakeresés a számításban
- Az Azure Machine Tanulás SDK.
- The Azure CLI.
- Az Azure Machine Tanulás CLI-bővítménye.
- Működő Docker-telepítéssel rendelkezik a helyi rendszeren.
- A Docker telepítésének ellenőrzéséhez használja a terminál vagy parancssor parancsát
docker run hello-world
. A Docker telepítésével vagy a Docker hibáinak elhárításával kapcsolatos információkért tekintse meg a Docker dokumentációját.
- C lehetőség – Helyi hibakeresés engedélyezése az Azure Machine Tanulás következtetési HTTP-kiszolgálóval.
- Az Azure Machine Tanulás következtetési HTTP-kiszolgáló egy Python-csomag, amely lehetővé teszi a belépési szkript (
score.py
) egyszerű érvényesítését egy helyi fejlesztési környezetben. Ha probléma van a pontozási szkripttel, a kiszolgáló hibát ad vissza. Ezenkívül a hiba helyét is visszaadja. - A kiszolgáló használható érvényesítési kapuk folyamatos integrációs és üzembehelyezési folyamatokban való létrehozásakor is. Indítsa el például a kiszolgálót a jelölt szkripttel, és futtassa a tesztcsomagot a helyi végponton.
- Az Azure Machine Tanulás következtetési HTTP-kiszolgáló egy Python-csomag, amely lehetővé teszi a belépési szkript (
Azure Machine Tanulás következtetési HTTP-kiszolgáló
A helyi következtetési kiszolgáló lehetővé teszi a bejegyzésszkript (score.py
) gyors hibakeresését. Ha a mögöttes pontszámszkript hibát észlelt, a kiszolgáló nem fogja inicializálni vagy kiszolgálni a modellt. Ehelyett kivételt fog kivenni a probléma helyétől. További információ az Azure Machine Tanulás következtetési HTTP-kiszolgálóról
Telepítse a csomagot a
azureml-inference-server-http
pypi-hírcsatornából :python -m pip install azureml-inference-server-http
Indítsa el a kiszolgálót, és állítsa be
score.py
belépési szkriptként:azmlinfsrv --entry_script score.py
Pontozási kérés küldése a kiszolgálónak a következő használatával
curl
:curl -p 127.0.0.1:5001/score
Megjegyzés:
Megismerheti az Azure Machine Learning Inference HTTP-kiszolgálóval kapcsolatos gyakori kérdéseket .
Helyi hibakeresés
A Gép Tanulás Notebooks adattárban talál egy minta helyi üzembe helyezési jegyzetfüzetet egy futtatható példa megismeréséhez.
Figyelmeztetés
A helyi webszolgáltatás-telepítések éles környezetben nem támogatottak.
A helyi üzembe helyezéshez módosítsa a kódot LocalWebservice.deploy_configuration()
egy üzembehelyezési konfiguráció létrehozásához. Ezután használja Model.deploy()
a szolgáltatás üzembe helyezéséhez. Az alábbi példa egy modellt helyez üzembe (a modellváltozóban található) helyi webszolgáltatásként:
ÉRVÉNYES:Python SDK azureml v1
from azureml.core.environment import Environment
from azureml.core.model import InferenceConfig, Model
from azureml.core.webservice import LocalWebservice
# Create inference configuration based on the environment definition and the entry script
myenv = Environment.from_conda_specification(name="env", file_path="myenv.yml")
inference_config = InferenceConfig(entry_script="score.py", environment=myenv)
# Create a local deployment, using port 8890 for the web service endpoint
deployment_config = LocalWebservice.deploy_configuration(port=8890)
# Deploy the service
service = Model.deploy(
ws, "mymodel", [model], inference_config, deployment_config)
# Wait for the deployment to complete
service.wait_for_deployment(True)
# Display the port that the web service is available on
print(service.port)
Ha saját conda specifikációjú YAML-t határoz meg, az azureml-defaults verzió = 1.0.45-ös verziót >sorolja fel pipfüggőségként. Ez a csomag szükséges a modell webszolgáltatásként való üzemeltetéséhez.
Ezen a ponton a szolgáltatással a szokásos módon dolgozhat. Az alábbi kód bemutatja az adatok szolgáltatásba való küldését:
import json
test_sample = json.dumps({'data': [
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
]})
test_sample = bytes(test_sample, encoding='utf8')
prediction = service.run(input_data=test_sample)
print(prediction)
További információ a Python-környezet testreszabásáról: Környezetek létrehozása és kezelése betanításhoz és üzembe helyezéshez.
A szolgáltatás frissítése
A helyi tesztelés során előfordulhat, hogy frissítenie kell a fájlt a score.py
naplózás hozzáadásához, vagy meg kell kísérelnie a felderített problémák megoldását. A fájl módosításainak újratöltéséhez használja a score.py
következőt reload()
: . Az alábbi kód például újra betölti a szolgáltatás szkriptét, majd adatokat küld neki. Az adatok pontozása a frissített score.py
fájl használatával történik:
Fontos
Ez reload
a módszer csak helyi üzemelő példányokhoz érhető el. Az üzembe helyezés másik számítási célra való frissítésével kapcsolatos információkért tekintse meg a webszolgáltatás frissítését.
service.reload()
print(service.run(input_data=test_sample))
Megjegyzés:
A szkript a szolgáltatás által használt objektum által InferenceConfig
megadott helyről töltődik be újra.
A modell, a Conda-függőségek vagy az üzembehelyezési konfiguráció módosításához használja a frissítés()t. Az alábbi példa frissíti a szolgáltatás által használt modellt:
service.update([different_model], inference_config, deployment_config)
A szolgáltatás törlése
A szolgáltatás törléséhez használja a delete() parancsot.
A Docker-napló vizsgálata
Részletes Docker-motornapló-üzeneteket nyomtathat ki a szolgáltatásobjektumból. Megtekintheti az ACI, az AKS és a helyi üzemelő példányok naplóit. Az alábbi példa bemutatja, hogyan nyomtathatja ki a naplókat.
# if you already have the service object handy
print(service.get_logs())
# if you only know the name of the service (note there might be multiple services with the same name but different version number)
print(ws.webservices['mysvc'].get_logs())
Ha többször is megjelenik a sor Booting worker with pid: <pid>
a naplókban, az azt jelenti, hogy nincs elegendő memória a feldolgozó elindításához.
A hiba elhárításához növelje a hiba értékét memory_gb
deployment_config
További lépések
További információk az üzembe helyezésről: