Share via


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

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:

  1. Azonosítsa a szolgáltatást a munkaterületen. A érték ws a munkaterület neve

    from azureml.core.webservice import Webservice
    aks_service= Webservice(ws, "my-service-name")
    
  2. 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:

  1. 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
    
  2. 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)
    
  3. 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:

  1. Jelentkezzen be a stúdióba a címen https://ml.azure.com.

  2. Lépjen a Modellek elemre, és válassza ki az üzembe helyezni kívánt modellt.

  3. Válassza a +Üzembe helyezés lehetőséget.

  4. Töltse ki a Modell üzembe helyezése űrlapot.

  5. Bontsa ki a Speciális menüt.

    Űrlap üzembe helyezése

  6. Válassza az Application Insights diagnosztikájának és adatgyűjtésének engedélyezése lehetőséget.

    Az App Insights engedélyezése

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:

  1. Nyissa meg az Azure Machine Learning-munkaterületet a studióban.

  2. Válassza a Végpontok lehetőséget.

  3. Válassza ki az üzembe helyezett szolgáltatást.

  4. Válassza az Application Insights URL-hivatkozását .

    Az Application Insights URL-címének megkeresése

  5. Az Application Insights Áttekintés lapján vagy a Figyelés szakaszban válassza a Naplók lehetőséget.

    A monitorozás Áttekintés lapja

  6. 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
    

    adatok nyomkövetése

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 STDOUTalatt. 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.

Folyamatos exportálás

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: