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.
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.
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.
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_hisotry
kimenettel question
answer
rendelkezik. 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.
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.