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 Azure Kubernetes Service (AKS) vagy Azure Container Instances (ACI) webszolgáltatás-végpontokon üzembe helyezett modellekből. Az 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 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 újra 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ítve van a Pythonhoz készült Azure Machine Learning SDK. 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éke
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 legfeljebb 64 kb hasznos adatokat naplóz. Ha eléri ezt a korlátot, olyan hibákat tapasztalhat, mint a memóriakihasználtság, vagy nem lehet adatokat naplózni. Ha a naplózni kívánt adatok mérete nagyobb 64kb-nál, akkor inkább a Blob Storage-ban kell tárolnia azokat az Adatok gyűjtése éles modellekhez című témakörben található információk segítségével.
Az összetettebb helyzetek, például az AKS-környezet modellkövetése esetén egy külső kódtár, például az OpenCensus használatát javasoljuk.
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 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 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ás konfigurációjá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 rendszerké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 Insights Azure Machine Learning stúdió is engedélyezhető. 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 címen https://ml.azure.com.
Lépjen a Modellek lapra, é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 naplóinak lekérdezése
Az online végpontok naplói ügyféladatok. A get_logs()
függvénnyel naplókat kérdezhet 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 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 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-címé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ék naplózása megtörtént:
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 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ó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 utasítás kimeneteit customDimensions
a print
nyomkövetési Contents
táblázatban 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 Blob Storage-ba irányuló exportálásokat támogatja. Az implementáció 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 Blob Storage-fiókba, ahol megadhatja az adatmegő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 megtudhatta, hogyan engedélyezheti a webszolgáltatás-végpontok naplózását és naplóinak megtekintését. A következő lépésekért próbálkozzon az alábbi cikkekkel:
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.