Adatok ML-webszolgáltatási végpontokról való monitorozása és gyűjtése
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
Ebből a cikkből megtudhatja, hogyan gyűjthet adatokat az Azure Kubernetes Service (AKS) vagy az Azure Container Instances (ACI) webszolgáltatás-végpontjaiban üzembe helyezett modellekből. A Azure-alkalmazás Insights használatával gyűjtse össze a következő adatokat egy végpontról:
- Kimeneti adatok
- Válaszok
- Kérések aránya, válaszidők és hibaarányok
- Függőségi arányok, válaszidők és hibaarányok
- Kivételek
Az enable-app-insights-in-production-service.ipynb notebook a jelen cikkben ismertetett fogalmakat mutatja be.
A szolgáltatás megismerése Jupyter-notebookok használatával cikk útmutatását követve megtanulhatja, hogyan futtathat notebookokat.
Fontos
A cikkben szereplő információk a munkaterülettel létrehozott Azure-alkalmazás Insights-példányra támaszkodnak. Ha törölte ezt az Application Insights-példányt, a munkaterület törlésén és újbóli létrehozásán kívül nincs mód a újbóli létrehozására.
Tipp.
Ha inkább online végpontokat használ, használja inkább az online végpontok figyelése című cikkben található információkat.
Előfeltételek
Azure-előfizetés – próbálja ki az Azure Machine Learning ingyenes vagy fizetős verzióját.
Egy Azure Machine Learning-munkaterület, egy helyi könyvtár, amely tartalmazza a szkripteket, és telepítve van a Pythonhoz készült Azure Machine Learning SDK. További információkért tekintse meg a fejlesztési környezet konfigurálását ismertető témakört.
Betanított gépi tanulási modell. További információ: Képosztályozási modell betanítása oktatóanyag.
Naplózás konfigurálása a Python SDK-val
Ebben a szakaszban megtudhatja, hogyan engedélyezheti az Application Insights naplózását a Python SDK használatával.
Üzembe helyezett szolgáltatás frissítése
Meglévő webszolgáltatás frissítéséhez kövesse az alábbi lépéseket:
Azonosítsa a szolgáltatást a munkaterületen. Az érték a
ws
munkaterület nevefrom azureml.core.webservice import Webservice aks_service= Webservice(ws, "my-service-name")
A szolgáltatás frissítése és a Azure-alkalmazás Insights engedélyezése
aks_service.update(enable_app_insights=True)
Egyéni nyomkövetések naplózása a szolgáltatásban
Fontos
Azure-alkalmazás Insights csak legfeljebb 64kb hasznos adatokat naplóz. Ha eléri ezt a korlátot, olyan hibákat tapasztalhat, mint például a memóriakihasználtság, vagy nem lehet adatokat naplózni. Ha a naplózni kívánt adatok 64kb-osak, akkor inkább blobtárolóba kell őket tárolni az éles modellek adatainak gyűjtése című témakörben.
Összetettebb helyzetekben, például egy AKS-üzembe helyezés modellkövetéséhez javasoljuk, hogy használjon külső kódtárat, például az OpenCensus-t.
Az egyéni nyomkövetések naplózásához kövesse az AKS vagy az ACI szabványos üzembehelyezési folyamatát az üzembe helyezés és a dokumentum helye című témakörben. Ezután kövesse az alábbi lépéseket:
Frissítse a pontozófájlt úgy, hogy nyomtatási utasításokat ad hozzá, hogy adatokat küldjön az Application Insightsnak a következtetés során. Összetettebb információk, például a kérelemadatok és a válasz esetében használjon JSON-struktúrát.
Az alábbi példafájl
score.py
naplózza a modell inicializálását, a bemenetet és a kimenetet a következtetés során, valamint a hibák előfordulásának időpontját.import pickle import json import numpy from sklearn.externals import joblib from sklearn.linear_model import Ridge from azureml.core.model import Model import time def init(): global model #Print statement for appinsights custom traces: print ("model initialized" + time.strftime("%H:%M:%S")) # note here "sklearn_regression_model.pkl" is the name of the model registered under the workspace # this call should return the path to the model.pkl file on the local disk. model_path = Model.get_model_path(model_name = 'sklearn_regression_model.pkl') # deserialize the model file back into a sklearn model model = joblib.load(model_path) # note you can pass in multiple rows for scoring def run(raw_data): try: data = json.loads(raw_data)['data'] data = numpy.array(data) result = model.predict(data) # Log the input and output data to appinsights: info = { "input": raw_data, "output": result.tolist() } print(json.dumps(info)) # you can return any datatype as long as it is JSON-serializable return result.tolist() except Exception as e: error = str(e) print (error + time.strftime("%H:%M:%S")) return error
Frissítse a szolgáltatáskonfigurációt, és engedélyezze az Application Insightst.
config = Webservice.deploy_configuration(enable_app_insights=True)
Hozzon létre egy lemezképet, és helyezze üzembe az AKS-en vagy az ACI-n. További információ: Üzembe helyezés és hol.
Nyomkövetés letiltása a Pythonban
A Azure-alkalmazás Insights letiltásához használja a következő kódot:
## replace <service_name> with the name of the web service
<service_name>.update(enable_app_insights=False)
Naplózás konfigurálása az Azure Machine Learning Studióval
A Azure-alkalmazás Insightst az Azure Machine Learning Studióból is engedélyezheti. Ha készen áll a modell webszolgáltatásként való üzembe helyezésére, az Alábbi lépésekkel engedélyezheti az Application Insights szolgáltatást:
Jelentkezzen be a stúdióba a következő címen https://ml.azure.com: .
Nyissa meg a Modellek lehetőséget, és válassza ki az üzembe helyezni kívánt modellt.
Válassza a +Üzembe helyezés lehetőséget.
Töltse ki a Modell üzembe helyezése űrlapot.
Bontsa ki a Speciális menüt.
Válassza az Application Insights diagnosztika és adatgyűjtés engedélyezése lehetőséget.
Metrikák és naplók megtekintése
Üzembe helyezett modellek lekérdezési naplói
Az online végpontok naplói ügyféladatok. A függvény használatával lekérheti a get_logs()
naplókat egy korábban üzembe helyezett webszolgáltatásból. A naplók részletes információkat tartalmazhatnak az üzembe helyezés során előforduló hibákról.
from azureml.core import Workspace
from azureml.core.webservice import Webservice
ws = Workspace.from_config()
# load existing web service
service = Webservice(name="service-name", workspace=ws)
logs = service.get_logs()
Ha több bérlője van, előfordulhat, hogy a következő hitelesítési kódot kell hozzáadnia, mielőtt ws = Workspace.from_config()
from azureml.core.authentication import InteractiveLoginAuthentication
interactive_auth = InteractiveLoginAuthentication(tenant_id="the tenant_id in which your workspace resides")
Naplók megtekintése a studióban
Azure-alkalmazás Insights a szolgáltatásnaplókat ugyanabban az erőforráscsoportban tárolja, mint az Azure Machine Learning-munkaterület. Az alábbi lépésekkel tekintheti meg az adatokat a stúdióban:
Nyissa meg az Azure Machine Learning-munkaterületet a studióban.
Válassza a Végpontok lehetőséget.
Válassza ki az üzembe helyezett szolgáltatást.
Válassza az Application Insights URL-hivatkozását .
Az Application Insights Áttekintés lapján vagy a Figyelés szakaszban válassza a Naplók lehetőséget.
A score.py fájlból naplózott információk megtekintéséhez tekintse meg a traces táblát . Az alábbi lekérdezés olyan naplókat keres, ahol a bemeneti értéket naplózták:
traces | where customDimensions contains "input" | limit 10
A Azure-alkalmazás Insights használatával kapcsolatos további információkért lásd: Mi az Application Insights?
Webszolgáltatás metaadatai és válaszadatai
Fontos
Azure-alkalmazás Insights csak legfeljebb 64kb hasznos adatokat naplóz. Ha eléri ezt a korlátot, olyan hibákat tapasztalhat, mint például a memóriakihasználtság, vagy nem lehet adatokat naplózni.
A webszolgáltatás kérési adatainak naplózásához adjon hozzá print
utasításokat a score.py fájlhoz. Minden print
utasítás egy bejegyzést eredményez az Application Insights nyomkövetési táblájában az üzenet STDOUT
alatt. Az Application Insights a nyomkövetési táblában customDimensions
és a print
nyomkövetési táblában tárolja az Contents
utasításkimeneteket. A JSON-sztringek nyomtatása hierarchikus adatstruktúrát hoz létre a nyomkövetési kimenetben Contents
.
Adatok exportálása megőrzésre és feldolgozásra
Fontos
Azure-alkalmazás Insights csak a blobtárolóba irányuló exportálást támogatja. A megvalósítás korlátaival kapcsolatos további információkért lásd : Telemetriai adatok exportálása az App Insightsból.
Az Application Insights folyamatos exportálásával adatokat exportálhat egy blobtároló-fiókba, ahol megadhatja a megőrzési beállításokat. Az Application Insights JSON formátumban exportálja az adatokat.
Következő lépések
Ebből a cikkből megtudhatja, hogyan engedélyezheti a naplózást és a webes szolgáltatásvégpontok naplóinak megtekintését. A következő lépésekhez próbálja ki az alábbi cikkeket:
MLOps: Modellek kezelése, üzembe helyezése és monitorozása az Azure Machine Learning segítségével, hogy többet tudjon meg az éles modellekből gyűjtött adatok hasznosításáról. Ezek az adatok segíthetnek a gépi tanulási folyamat folyamatos fejlesztésében.