Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica solo a:Portale di Foundry (versione classica). Questo articolo non è disponibile per il nuovo portale foundry.
Altre informazioni sul nuovo portale.
Nota
I collegamenti in questo articolo potrebbero aprire contenuto nella nuova documentazione di Microsoft Foundry anziché nella documentazione di Foundry (versione classica) visualizzata.
Importante
Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente in anteprima pubblica. Questa anteprima viene fornita senza un contratto di servizio e non è consigliabile per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero avere funzionalità limitate. Per altre informazioni, vedere Condizioni supplementari per l'utilizzo delle anteprime di Microsoft Azure.
Dopo aver distribuito un'applicazione di intelligenza artificiale generativa nell'ambiente di produzione, è possibile migliorare la comprensione e ottimizzare le prestazioni. Traccia dei dati per ogni richiesta, metriche aggregate e feedback degli utenti svolgono tutti i ruoli critici.
Questo articolo illustra come abilitare la traccia, raccogliere metriche aggregate e raccogliere commenti e suggerimenti degli utenti durante il tempo di inferenza della distribuzione del flusso.
Nota
Per un modo migliorato per eseguire il monitoraggio continuo delle applicazioni distribuite (ad eccezione del flusso di richieste), è consigliabile usare Azure valutazione online di intelligenza artificiale.
Prerequisiti
Importante
Questo articolo fornisce il supporto legacy per i progetti basati su hub. Non funzionerà per i progetti Foundry. Vedere Come si conosce il tipo di progetto di cui si dispone?
nota di compatibilità SDK: gli esempi di codice richiedono una versione specifica Microsoft Foundry SDK. Se si verificano problemi di compatibilità, valutare la possibilità di eseguire la migrazione da un progetto basato su hub a un progetto Foundry.
- Un account Azure con una sottoscrizione attiva. Se non ne hai uno, crea un account gratuito Azure, che include una sottoscrizione di valutazione gratuita.
- Se non ne hai uno, crea un progetto basato su hub.
- Il interfaccia della riga di comando di Azure e l'estensione Azure Machine Learning all'interfaccia della riga di comando di Azure.
- Progetto Microsoft Foundry. Se non si ha già un progetto, è possibile crearne uno.
- Una risorsa di Application Insights. Se non si ha già una risorsa di Application Insights, è possibile crearne una.
- Azure controlli di accesso in base al ruolo vengono usati per concedere l'accesso alle operazioni in Azure Machine Learning. Per eseguire la procedura descritta in questo articolo, è necessario disporre delle autorizzazioni Proprietario o Collaboratore per il gruppo di risorse selezionato. Per altre informazioni, vedere Controllo degli accessi in base al ruolo nel portale foundry.
Distribuire un flusso per l'inferenza in tempo reale
Dopo aver testato correttamente il flusso (un flusso flessibile o un flusso DAG), è possibile distribuire il flusso nell'ambiente di produzione. In questo articolo viene usato Distribuire un flusso per l'inferenza in tempo reale come esempio. Per i flussi flessibili, è necessario preparare il flow.flex.yaml file anziché flow.dag.yaml.
È anche possibile eseguire la distribuzione in altre piattaforme, ad esempio il contenitore Docker e il cluster Kubernetes.
Usare l'immagine di base del flusso di richiesta più recente per distribuire il flusso in modo che supporti l'API di traccia e raccolta di feedback.
Abilitare il tracciamento e raccogliere le metriche di sistema per la distribuzione
Se si usa il portale Foundry per la distribuzione, selezionare Deployment>diagnostica Application Insights>Impostazioni avanzate nel wizard di distribuzione. Usando questo metodo, si raccolgono i dati di traccia e le metriche di sistema al progetto collegato ad Application Insights.
Se si usa l'SDK o l'interfaccia della riga di comando, aggiungere la app_insights_enabled: true proprietà nel file yaml di distribuzione per raccogliere dati al progetto collegato ad Application Insights.
app_insights_enabled: true
È anche possibile specificare altre informazioni dettagliate sull'applicazione dalla variabile APPLICATIONINSIGHTS_CONNECTION_STRING di ambiente nel file yaml di distribuzione. È possibile trovare il stringa di connessione per Application Insights nella pagina Overview nel portale di Azure.
environment_variables:
APPLICATIONINSIGHTS_CONNECTION_STRING: <connection_string>
Nota
Se si imposta solo app_insights_enabled: true ma il progetto non ha una risorsa di Application Insights collegata, la distribuzione non ha esito negativo ma non vengono raccolti dati.
Se si specificano sia app_insights_enabled: true che la variabile di ambiente precedente contemporaneamente, i dati di traccia e le metriche vengono inviati al progetto collegato ad Application Insights. Se si desidera specificare application insights diversi, mantenere solo la variabile di ambiente.
Se si esegue la distribuzione in altre piattaforme, è anche possibile usare la variabile APPLICATIONINSIGHTS_CONNECTION_STRING: <connection_string> di ambiente per raccogliere dati di traccia e metriche nelle informazioni dettagliate sull'applicazione specificate.
Visualizzare i dati di traccia in Application Insights
Le tracce registrano eventi specifici o lo stato di un'applicazione durante l'esecuzione. Possono includere dati sulle chiamate di funzione, i valori delle variabili e gli eventi di sistema. Le tracce consentono di suddividere i componenti di un'applicazione in input e output discreti. Questo processo è fondamentale per il debug e la comprensione di un'applicazione. Per altre informazioni sulle tracce, vedere questo sito Web. I dati di traccia seguono la specifica OpenTelemetry.
È possibile visualizzare la traccia dettagliata nei Application Insights da te specificati. Lo screenshot seguente mostra un esempio di evento di un flusso distribuito che contiene più nodi. Selezionare Application Insights>Indaga>Ricerca transazioni, e quindi selezionare ogni nodo per visualizzarne la traccia dettagliata.
Il tipo Dependency registra gli eventi delle chiamate dalle tue distribuzioni. Il nome dell'evento è il nome della cartella del flusso. Per altre informazioni, vedere Ricerca delle transazioni e diagnostica in Application Insights.
Visualizzare le metriche di sistema in Application Insights
| Nome della metrica | Digitare | Dimensioni | Descrizione |
|---|---|---|---|
token_consumption |
Contatore | - flow - node- llm_engine- token_type: prompt_tokenstoken di input dell'API LLM; completion_tokens: token di risposta dell'API LLM; total_tokens = prompt_tokens + completion tokens |
Metriche di consumo dei token OpenAI. |
flow_latency |
Istogramma |
flow, response_code, streamingresponse_type |
Il costo di esecuzione della richiesta, response_type, indica se è pieno o primo byte o ultimo byte. |
flow_request |
Contatore |
flow, response_code, exceptionstreaming |
Numero di richieste di flusso. |
node_latency |
Istogramma |
flow, node, run_status |
Costo di esecuzione del nodo. |
node_request |
Contatore |
flow, node, exceptionrun_status |
Numero di esecuzioni dei nodi. |
rpc_latency |
Istogramma |
flow, node, api_call |
Costo della chiamata di procedura remota. |
rpc_request |
Contatore |
flow, node, api_callexception |
Conteggio delle chiamate di procedura remota. |
flow_streaming_response_duration |
Istogramma | flow |
Costo di invio della risposta di streaming, che va dall'invio del primo byte all'invio dell'ultimo byte. |
È possibile trovare le metriche predefinite di Application Insights dell'area di lavoro nella pagina di panoramica dell'area di lavoro nel portale di Azure.
- Aprire Application Insights e selezionare Utilizzo e costi stimati nel riquadro sinistro. Selezionare Metriche personalizzate (anteprima)>Con dimensioni e salvare la modifica.
- Selezionare la scheda Metriche nel riquadro sinistro. In Spazio dei nomi delle metriche selezionare metriche standard del flusso di richiesta. È possibile esplorare le metriche dall'elenco a discesa Metrica con metodi di aggregazione diversi.
Raccogliere commenti e suggerimenti e inviarli ad Application Insights
La gestione del flusso dei prompt fornisce una nuova /feedback API che consente ai clienti di raccogliere il feedback. Il payload del feedback può essere qualsiasi dato in formato JSON. Il servizio del flusso dei prompt consente al cliente di salvare i dati di feedback in un segmento di traccia. I dati vengono salvati nella destinazione dell'utilità di esportazione di traccia configurata dal cliente. Il servizio di flusso dei prompt supporta anche la propagazione del contesto di traccia standard di OpenTelemetry. Rispetta il contesto di traccia impostato nell'intestazione della richiesta e usa tale contesto come contesto dell'intervallo padre della richiesta. È possibile usare la funzionalità di traccia distribuita per correlare la traccia dei commenti e suggerimenti alla relativa traccia delle richieste di chat.
Il codice di esempio seguente illustra come assegnare un punteggio a un flusso distribuito in un endpoint gestito abilitato per la traccia e inviare il feedback allo stesso intervallo di traccia di una richiesta di assegnazione dei punteggi. Il flusso ha gli input question e chat_history. L'output è answer. Dopo la valutazione dell'endpoint, il feedback viene raccolto e inviato ad Application Insights come specificato durante la distribuzione del flusso.
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 might be updated
# depending on the format your endpoint expects.
data = {
"question": "hello",
"chat_history": []
}
body = str.encode(json.dumps(data))
url = 'https://basic-chat-endpoint-0506.eastus.inference.ml.azure.com/score'
feedback_url = 'https://basic-chat-endpoint-0506.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'))
È possibile visualizzare la traccia della richiesta insieme ai commenti e suggerimenti in Application Insights.
Utilizzo avanzato: esportare le tracce al servizio del collettore OpenTelemetry personalizzato
In alcuni casi, potrebbe essere necessario esportare i dati di traccia nel servizio collettore OpenTelemetry distribuito. Per abilitare questo servizio, impostare OTEL_EXPORTER_OTLP_ENDPOINT. Usare questo esportatore quando si vuole personalizzare la propria logica di elaborazione degli span e il proprio target persistente di traccia.