Megosztás a következőn keresztül:


Adatok ML-webszolgáltatási végpontokról való monitorozása és gyűjtése

ÉRVÉNYES: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:

  1. Azonosítsa a szolgáltatást a munkaterületen. Az érték a ws 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 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:

  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 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
    
  2. Frissítse a szolgáltatáskonfigurációt, és engedélyezze az Application Insightst.

    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 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:

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

  2. Nyissa meg a Modellek lehetőséget, é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 diagnosztika és adatgyűjtés 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é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:

  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 figyelé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 . 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
    

    nyomkövetési adatok

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

Folyamatos exportálás

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: