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 a webszolgáltatás-végpontokra telepített modellekből Azure Kubernetes Service (AKS) vagy Azure Container Instances (ACI) szolgáltatásban. 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 jegyzetfüzet 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 nem lehet újból létrehozni.
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ítette a Pythonhoz készült Azure Machine Learning SDK-t. További információ: Fejlesztési környezet konfigurálása.
Betanított gépi tanulási modell. További információ: Képbesorolá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. A érték
ws
a 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 64 kb hasznos adatokat naplóz. Ha eléri ezt a korlátot, olyan hibák jelentkezhetnek, mint például a memóriakimaradás, vagy nem naplózhatók adatok. Ha a naplózni kívánt adatok nagyobbak 64kb-nál, akkor inkább a blobtárolóban kell tárolnia azokat az adatok gyűjtése az éles modellekhez című témakörben található információk alapján.
Összetettebb helyzetekben, például modellkövetés egy AKS-telepítésen belül, 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 hol című dokumentumban. 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 idejé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 győződjön meg arról, hogy engedélyezi az Application Insights szolgáltatást.
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 Azure Machine Learning stúdió
A Azure-alkalmazás Insightst Azure Machine Learning stúdió is engedélyezheti. Ha készen áll a modell webszolgáltatásként való üzembe helyezésére, az Application Insights engedélyezéséhez kövesse az alábbi lépéseket:
Jelentkezzen be a stúdióba a címen https://ml.azure.com.
Lépjen a Modellek elemre, é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 diagnosztikájának és adatgyűjtésének 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énnyel naplókat kérdezhet get_logs()
le 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ületet. Az alábbi lépésekkel tekintheti meg az adatokat a studióval:
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 . A következő 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 64 kb hasznos adatokat naplóz. Ha eléri ezt a korlátot, akkor olyan hibákat tapasztalhat, mint például a memóriakimaradás, vagy nem naplózhatók adatok.
A webszolgáltatás-kérelmek 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 az utasítás kimeneteit a print
nyomkövetési táblában customDimensions
és a Contents
táblában tárolja. A JSON-sztringek nyomtatása hierarchikus adatstruktúrát hoz létre a nyomkövetési kimenetben a alatt Contents
.
Adatok exportálása megőrzés és feldolgozás céljából
Fontos
Azure-alkalmazás Insights csak a blobtárolóba irányuló exportálásokat 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 exportálhat adatokat egy Blob Storage-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 webszolgáltatásvégpontok naplóinak naplózását és megtekintését. A következő lépésekért próbálja ki ezeket a cikkeket:
MLOps: Modellek kezelése, üzembe helyezése és monitorozása az Azure Machine Learning használatával , hogy többet tudjon meg az éles modellekből gyűjtött adatok felhasználásáról. Ezek az adatok segíthetnek a gépi tanulási folyamat folyamatos fejlesztésében.