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


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

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

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

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

  2. Lépjen a Modellek lapra, é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.

    Üzembe helyezési űrlap

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

  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-címé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ék naplózása megtörtént:

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

Folyamatos exportálás

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: