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


Nyomkövetés engedélyezése és visszajelzések gyűjtése folyamattelepítéshez (előzetes verzió)

Feljegyzés

Ez a funkció jelenleg nyilvános előzetes verzióban érhető el. Ez az előzetes verzió szolgáltatásszint-szerződés nélkül érhető el, és éles számítási feladatokhoz nem javasoljuk. Előfordulhat, hogy néhány funkció nem támogatott, vagy korlátozott képességekkel rendelkezik. További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.

Miután éles környezetben üzembe helyez egy Generatív AI-alkalmazást, az alkalmazásfejlesztők igyekeznek jobban megérteni és optimalizálni a teljesítményt. Az egyes kérések, összesített metrikák és felhasználói visszajelzések adatainak nyomon követése kritikus szerepet játszik.

Ebben a cikkben megtanulhatja a nyomkövetés engedélyezését, az összesített metrikák gyűjtését és a felhasználói visszajelzéseket a folyamat üzembe helyezésének következtetési ideje alatt.

Előfeltételek

  • Az Azure CLI és az Azure Machine Learning bővítmény az Azure CLI-hez. További információ: A parancssori felület (v2) telepítése, beállítása és használata.
  • Egy Azure Machine Learning-munkaterület. Ha nincs ilyenje, a gyorsútmutató lépéseit követve hozzon létre egyet a munkaterület erőforrásainak létrehozása című cikkben .
  • An Application Insights. A gépi tanulási munkaterületek általában alapértelmezett csatolt Application Insights-okkal rendelkeznek. Ha újat szeretne használni, létrehozhat egy Application Insights-erőforrást.
  • Megtudhatja , hogyan hozhat létre és tesztelhet folyamatokat a parancssori folyamatban.
  • Alapszintű ismereteket szerezhet a felügyelt online végpontokról. A felügyelt online végpontok skálázható, teljes körűen felügyelt módon működnek együtt nagy teljesítményű CPU- és GPU-gépeket az Azure-ban, így nem kell a mögöttes üzembehelyezési infrastruktúra beállításával és felügyeletével foglalkoznia. A felügyelt online végpontokkal kapcsolatos további információkért tekintse meg az online végpontokat és az üzembe helyezéseket a valós idejű következtetés érdekében.
  • Az Azure-beli szerepköralapú hozzáférés-vezérlések (Azure RBAC) az Azure gépi tanulás műveleteihez való hozzáférést biztosítják. A cikkben ismertetett lépések végrehajtásához a felhasználói fiókjához hozzá kell rendelni az Azure Machine Learning-munkaterület tulajdonosi vagy közreműködői szerepkörét, vagy egy egyéni szerepkört, amely lehetővé teszi a "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/" használatát. Ha a Studiót használja az online végpontok/üzemelő példányok létrehozásához/kezeléséhez, az erőforráscsoport tulajdonosától további "Microsoft.Resources/deployments/write" engedélyre van szüksége. További információ: Azure Machine Learning-munkaterülethez való hozzáférés kezelése.

Folyamat üzembe helyezése valós idejű következtetéshez

A folyamat megfelelő tesztelése után , akár rugalmas, akár DAG-folyamat esetén, éles környezetben is üzembe helyezheti a folyamatot. Ebben a cikkben például egy folyamatot helyezünk üzembe az Azure Machine Learning által felügyelt online végpontokon . Rugalmas folyamatok esetén a fájlt ahelyett kell előkészítenieflow.dag.yaml, hogy a flow.flex.yaml .

Üzembe helyezhet más platformokon is, például Docker-tárolóban, Kubernetes-fürtön stb.

Feljegyzés

A folyamat üzembe helyezéséhez a legújabb parancssori alaprendszerképet kell használnia, hogy támogassa a nyomkövetési és visszajelzésgyűjtési API-t.

Nyomkövetés engedélyezése és rendszermetrikák gyűjtése az üzembe helyezéshez

Ha a studio felhasználói felületét használja az üzembe helyezéshez, akkor bekapcsolhatja az Application Insights diagnosztikát a Speciális beállítások –> Üzembe helyezési lépésben az üzembe helyezés varázslóban, így a nyomkövetési adatok és a rendszermetrikák a munkaterülethez társított Application Insightshoz lesznek gyűjtve.

Ha SDK-t vagy parancssori felületet használ, hozzáadhat egy tulajdonságot app_insights_enabled: true az üzembehelyezési yaml-fájlhoz, amely adatokat gyűjt a munkaterülethez csatolt Application Insights szolgáltatásba. Az üzembe helyezési yaml-fájlban a következő módon adhat meg más Application Insights-változókat is egy környezeti változó APPLICATIONINSIGHTS_CONNECTION_STRING alapján. Az Application Insights kapcsolati sztring az Azure Portal Áttekintés lapján találja.

# below is the property in deployment yaml
# app_insights_enabled: true

# you can also use the environment variable
environment_variables:
  APPLICATIONINSIGHTS_CONNECTION_STRING: <connection_string>

Feljegyzés

Ha csak be van állítva app_insights_enabled: true , de a munkaterület nem rendelkezik csatolt Application Insightsszal, az üzembe helyezés nem fog meghiúsulni, de nem lesz összegyűjtött adat.

Ha egyszerre adja meg mind app_insights_enabled: true a fenti környezeti változót, a nyomkövetési adatokat és a metrikákat a rendszer elküldi a munkaterülethez társított Application Insightsnak. Ezért ha egy másik Application Insightst szeretne megadni, csak a környezeti változót kell megtartania.

Ha más platformokon telepít, a környezeti változóval APPLICATIONINSIGHTS_CONNECTION_STRING: <connection_string> nyomkövetési adatokat és metrikákat is gyűjthet a célzott Application Insightshoz.

Nyomkövetési adatok megtekintése az Application Insightsban

A nyomkövetés meghatározott eseményeket vagy egy alkalmazás állapotát rögzíti a végrehajtás során. Tartalmazhat függvényhívásokra, változó értékekre, rendszereseményekre és egyebekre vonatkozó adatokat. A nyomkövetések segítenek különálló bemenetekre és kimenetekre bontani az alkalmazás összetevőit, ami elengedhetetlen az alkalmazások hibakereséséhez és megértéséhez. További információ: OpenTelemetry traces on traces. A nyomkövetési adatok az OpenTelemetry specifikációját követik.

A részletes nyomkövetést a megadott Application Insightsban tekintheti meg. Az alábbi képernyőképen egy több csomópontot tartalmazó üzembe helyezett folyamat eseménye látható. Az Application Insights – Vizsgálat –>> Tranzakciókeresés területen kiválaszthatja az egyes csomópontokat a részletes nyomkövetés megtekintéséhez.

A Függőség típusú események rögzítik az üzemelő példányokból érkező hívásokat. Az esemény neve a folyamatmappa neve. További információ a tranzakciókeresésről és a diagnosztika az Application Insightsban.

Képernyőkép az adatok nyomon követéséről az Application Insightsban.

Rendszermetrikák megtekintése az Application Insightsban

Metrikák neve Típus Dimenziók Leírás
token_consumption számláló -folyik
-csomópont
- llm_engine
- token_type: prompt_tokens: LLM API bemeneti jogkivonatok; completion_tokens: LLM API válasz jogkivonatok; total_tokens = prompt_tokens + completion tokens
OpenAI-jogkivonat-használati metrikák
flow_latency hisztogram folyamat, response_code, streamelés, response_type kérelem végrehajtási költsége, response_type azt jelenti, hogy teljes/első bájt/lastbyte
flow_request számláló folyamat, response_code, kivétel, streamelés folyamatkérések száma
node_latency hisztogram folyamat, csomópont, run_status csomópont végrehajtási költsége
node_request számláló folyamat, csomópont, kivétel, run_status csomópontok végrehajtási száma
rpc_latency hisztogram folyamat, csomópont, api_call rpc-költség
rpc_request számláló folyamat, csomópont, api_call, kivétel rpc-szám
flow_streaming_response_duration hisztogram folyamat stream-válasz küldési költsége, az első bájt elküldésétől az utolsó bájtig

A munkaterület alapértelmezett Application Insights-elemét a munkaterület áttekintési lapján találja az Azure Portalon.

Nyissa meg az Application Insightst, és válassza a Használat és a becsült költségek lehetőséget a bal oldali navigációs sávon. Válassza az Egyéni metrikák (előzetes verzió) lehetőséget, és válassza a Dimenziókkal lehetőséget, és mentse a módosítást.

Képernyőkép a többdimenziós metrikák engedélyezéséről.

Válassza a Metrikák lapot a bal oldali navigációs sávon. Válassza ki a promptflow standard metrikákat a Metrika Namespace, és a Metrikák legördülő listából különböző összesítési módszerekkel vizsgálhatja meg a metrikákat.

Képernyőkép a folyamatvégpont metrikáiról.

Visszajelzések gyűjtése és elküldése az Application Insightsnak

A parancssori folyamat kiszolgálása egy új /feedback API-t biztosít, amely segít az ügyfélnek a visszajelzések gyűjtésében, a visszajelzés hasznos adatai lehetnek bármilyen json formátumú adatok, a PF-kiszolgálás csak segít az ügyfélnek a visszajelzési adatok nyomkövetési tartományba mentésében. Az adatok a konfigurált nyomkövetési exportőr célhoz lesznek mentve. Támogatja az OpenTelemetry standard nyomkövetési környezet propagálását is, mondván, hogy tiszteletben tartja a kérelem fejlécében beállított nyomkövetési környezetet, és ezt használja a kérés szülőkörnyezeteként. Az elosztott nyomkövetési funkcióval korrelálhatja a visszajelzési nyomkövetést a csevegési kérelem nyomkövetésével.

Az alábbi mintakód bemutatja, hogyan lehet pontszámot adni egy felügyelt végponton engedélyezett nyomkövetési folyamatnak, és hogyan küldheti el a visszajelzést a pontozási kérelem azonos nyomkövetési hatókörére. A folyamat bemenetekkel és chat_hisotrykimenettel question answerrendelkezik. A végpont pontozása után visszajelzést gyűjtünk, és elküldjük a folyamat üzembe helyezésekor megadott Application Insightsnak. Ki kell töltenie az api_key értéket, vagy módosítania kell a kódot a használati esetnek megfelelően.

import urllib.request
import json
import os
import ssl
from opentelemetry import trace, context
from opentelemetry.baggage.propagation import W3CBaggagePropagator
from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator
from opentelemetry.sdk.trace import TracerProvider

# Initialize your tracer
tracer = trace.get_tracer("my.genai.tracer")
trace.set_tracer_provider(TracerProvider())

# Request data goes here
# The example below assumes JSON formatting which may be updated
# depending on the format your endpoint expects.
# More information can be found here:
# https://docs.microsoft.com/azure/machine-learning/how-to-deploy-advanced-entry-script
data = {
    "question": "hello",
    "chat_history": []
}

body = str.encode(json.dumps(data))

url = 'https://basic-chat-endpoint.eastus.inference.ml.azure.com/score'
feedback_url = 'https://basic-chat-endpoint.eastus.inference.ml.azure.com/feedback'
# Replace this with the primary/secondary key, AMLToken, or Microsoft Entra ID token for the endpoint
api_key = ''
if not api_key:
    raise Exception("A key should be provided to invoke the endpoint")

# The azureml-model-deployment header will force the request to go to a specific deployment.
# Remove this header to have the request observe the endpoint traffic rules
headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key), 'azureml-model-deployment': 'basic-chat-deployment' }

try:
    with tracer.start_as_current_span('genai-request') as span:

        ctx = context.get_current()
        TraceContextTextMapPropagator().inject(headers, ctx)
        print(headers)
        print(ctx)
        req = urllib.request.Request(url, body, headers)
        response = urllib.request.urlopen(req)

        result = response.read()
        print(result)

        # Now you can process the answer and collect feedback
        feedback = "thumbdown"  # Example feedback (modify as needed)

        # Make another request to save the feedback
        feedback_body = str.encode(json.dumps(feedback))
        feedback_req = urllib.request.Request(feedback_url, feedback_body, headers)
        urllib.request.urlopen(feedback_req)


except urllib.error.HTTPError as error:
    print("The request failed with status code: " + str(error.code))

    # Print the headers - they include the requert ID and the timestamp, which are useful for debugging the failure
    print(error.info())
    print(error.read().decode("utf8", 'ignore'))

A kérés nyomkövetését és a visszajelzéseket az Application Insightsban tekintheti meg.

Képernyőkép egy kérelem visszajelzéséről és nyomkövetési adatairól az Application Insightsban.

Speciális használat: Nyomkövetés exportálása egyéni OpenTelemetry collector szolgáltatásba

Bizonyos esetekben érdemes lehet exportálni a nyomkövetési adatokat az üzembe helyezett OTel-gyűjtő szolgáltatásba, amely a "OTEL_EXPORTER_OTLP_ENDPOINT" beállítással engedélyezve van. Ezt az exportőrt akkor használja, ha testre szeretné szabni a saját span feldolgozási logikánkat és a saját nyomkövetési állandó célját.

Következő lépések