Włączanie śledzenia i zbieranie opinii dotyczących wdrożenia przepływu (wersja zapoznawcza)
Uwaga
Ta funkcja jest obecnie w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
Po wdrożeniu aplikacji generowania sztucznej inteligencji w środowisku produkcyjnym deweloperzy aplikacji starają się zwiększyć zrozumienie i zoptymalizować wydajność. Dane śledzenia dla każdego żądania, zagregowanych metryk i opinii użytkowników odgrywają kluczowe role.
W tym artykule dowiesz się, jak włączyć śledzenie, zebrać zagregowane metryki i opinie użytkowników podczas wnioskowania wdrożenia przepływu.
Wymagania wstępne
- Interfejs wiersza polecenia platformy Azure i rozszerzenie usługi Azure Machine Learning do interfejsu wiersza polecenia platformy Azure. Aby uzyskać więcej informacji, zobacz Instalowanie, konfigurowanie i używanie interfejsu wiersza polecenia (wersja 2).
- Obszar roboczy usługi Azure Machine Learning. Jeśli go nie masz, wykonaj kroki opisane w artykule Szybki start: tworzenie zasobów obszaru roboczego, aby je utworzyć.
- Usługa Application Insights. Zazwyczaj obszar roboczy uczenia maszynowego ma domyślną połączoną usługę Application Insights. Jeśli chcesz użyć nowego, możesz utworzyć zasób usługi Application Insights.
- Dowiedz się , jak skompilować i przetestować przepływ w przepływie monitu.
- Podstawowa wiedza na temat zarządzanych punktów końcowych online. Zarządzane punkty końcowe online współpracują z zaawansowanymi procesorami CPU i procesorami GPU na platformie Azure w skalowalny, w pełni zarządzany sposób, który zwalnia Cię z nakładu pracy związanego z konfigurowaniem podstawowej infrastruktury wdrażania i zarządzaniem nią. Aby uzyskać więcej informacji na temat zarządzanych punktów końcowych online, zobacz Online endpoints and deployments for real-time inference (Punkty końcowe i wdrożenia online dla wnioskowania w czasie rzeczywistym).
- Kontrola dostępu na podstawie ról platformy Azure (Azure RBAC): jest używana do udzielania dostępu do operacji w usłudze Azure Machine Learning. Aby wykonać kroki opisane w tym artykule, twoje konto użytkownika musi mieć przypisaną rolę właściciela lub współautora dla obszaru roboczego usługi Azure Machine Learning lub rolę niestandardową zezwalającą na "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/". Jeśli używasz programu Studio do tworzenia/zarządzania punktami końcowymi/wdrożeniami online, potrzebujesz innego uprawnienia "Microsoft.Resources/deployments/write" od właściciela grupy zasobów. Aby uzyskać więcej informacji, zobacz Zarządzanie dostępem do obszaru roboczego usługi Azure Machine Learning.
Wdrażanie przepływu na potrzeby wnioskowania w czasie rzeczywistym
Po prawidłowym przetestowaniu przepływu możesz wdrożyć go w środowisku produkcyjnym. W tym artykule jako przykład użyjemy wdrożenia przepływu w zarządzanych punktach końcowych online usługi Azure Machine Learning. W przypadku przepływów flex należy przygotować flow.flex.yaml
plik zamiast flow.dag.yaml
.
Można również wdrożyć na innych platformach, takich jak kontener Platformy Docker, klaster Kubernetes itp.
Uwaga
Aby wdrożyć przepływ, musisz użyć najnowszego obrazu podstawowego przepływu monitów, aby obsługiwać interfejs API śledzenia i zbierania opinii.
Włączanie śledzenia i zbieranie metryk systemowych dla wdrożenia
Jeśli używasz interfejsu użytkownika programu Studio do wdrożenia, możesz włączyć diagnostykę usługi Application Insights w obszarze Ustawienia zaawansowane —> krok wdrażania w kreatorze wdrażania, w jaki sposób dane śledzenia i metryki systemowe są zbierane do połączonego obszaru roboczego usługi Application Insights.
Jeśli używasz zestawu SDK lub interfejsu wiersza polecenia, możesz dodać właściwość app_insights_enabled: true
w pliku yaml wdrożenia, który będzie zbierał dane do połączonego obszaru roboczego usługi Application Insights. Możesz również określić inne usługi Application Insights według zmiennej środowiskowej APPLICATIONINSIGHTS_CONNECTION_STRING
w pliku yaml wdrożenia w następujący sposób. Parametry połączenia usługi Application Insights można znaleźć na stronie Przegląd w witrynie Azure Portal.
# 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>
Uwaga
Jeśli ustawisz app_insights_enabled: true
tylko obszar roboczy, ale nie masz połączonej usługi Application Insights, wdrożenie nie zakończy się niepowodzeniem, ale nie będą zbierane żadne dane.
Jeśli jednocześnie określisz zarówno zmienną środowiskową, jak app_insights_enabled: true
i powyższą, dane śledzenia i metryki zostaną wysłane do połączonego obszaru roboczego usługi Application Insights. W związku z tym, jeśli chcesz określić inną usługę Application Insights, musisz zachować zmienną środowiskową.
Jeśli wdrażasz na innych platformach, możesz również użyć zmiennej środowiskowej APPLICATIONINSIGHTS_CONNECTION_STRING: <connection_string>
do zbierania danych śledzenia i metryk w celu speicifed Application Insights.
Wyświetlanie danych śledzenia w usłudze Application Insights
Ślady rejestrują określone zdarzenia lub stan aplikacji podczas wykonywania. Może zawierać dane dotyczące wywołań funkcji, wartości zmiennych, zdarzeń systemowych i nie tylko. Ślady pomagają podzielić składniki aplikacji na dyskretne dane wejściowe i wyjściowe, co ma kluczowe znaczenie dla debugowania i zrozumienia aplikacji. Aby dowiedzieć się więcej, zobacz Ślady openTelemetry dotyczące śladów. Dane śledzenia są zgodne ze specyfikacją OpenTelemetry.
Szczegółowe dane śledzenia można wyświetlić w określonej usłudze Application Insights. Poniższy zrzut ekranu przedstawia przykład zdarzenia wdrożonego przepływu zawierającego wiele węzłów. W usłudze Application Insights — badanie —>> wyszukiwanie transakcji i możesz wybrać każdy węzeł, aby wyświetlić jego szczegółowy ślad.
Zdarzenia typu zależności rejestrują wywołania z wdrożeń. Nazwa tego zdarzenia to nazwa folderu przepływu. Dowiedz się więcej na temat wyszukiwania transakcji i diagnostyki w usłudze Application Insights.
Wyświetlanie metryk systemowych w usłudze Application Insights
Nazwa metryk | Typ | Wymiary | opis |
---|---|---|---|
token_consumption | counter | -płynąć -węzeł - llm_engine - token_type: : prompt_tokens tokeny wejściowe interfejsu API LLM; completion_tokens : tokeny odpowiedzi interfejsu API LLM; total_tokens = prompt_tokens + completion tokens |
Metryki użycia tokenu interfejsu OpenAI |
flow_latency | histogram | flow, response_code, streaming, response_type | koszt wykonania żądania, response_type oznacza, czy jest pełny/pierwszy/ostatni bajt |
flow_request | counter | przepływ, response_code, wyjątek, przesyłanie strumieniowe | liczba żądań przepływu |
node_latency | histogram | przepływ, węzeł, run_status | koszt wykonywania węzła |
node_request | counter | przepływ, węzeł, wyjątek, run_status | liczba wykonań węzła |
rpc_latency | histogram | przepływ, węzeł, api_call | koszt rpc |
rpc_request | counter | przepływ, węzeł, api_call, wyjątek | liczba rpc |
flow_streaming_response_duration | histogram | Przepływ | przesyłanie strumieniowe kosztów wysyłania odpowiedzi, od wysyłania pierwszego bajtu do wysyłania ostatniego bajtu |
Domyślny obszar roboczy usługi Application Insights można znaleźć na stronie przeglądu obszaru roboczego w witrynie Azure Portal.
Otwórz usługę Application Insights i wybierz pozycję Użycie i szacowane koszty z lewej nawigacji. Wybierz pozycję Metryki niestandardowe (wersja zapoznawcza), a następnie wybierz pozycję Z wymiarami i zapisz zmianę.
Wybierz kartę Metryki w obszarze nawigacji po lewej stronie. Wybierz metryki standardowe promptflow z przestrzeni nazw metryki i możesz eksplorować metryki z listy rozwijanej Metryka z różnymi metodami agregacji.
Zbieranie opinii i wysyłanie ich do usługi Application Insights
Obsługa przepływu monitów udostępnia nowy /feedback
interfejs API, który ułatwia klientowi zbieranie opinii, ładunek opinii może być dowolnymi danymi w formacie JSON. Funkcja PF obsługuje tylko pomaga klientowi zapisywać dane opinii w zakresie śledzenia. Dane zostaną zapisane w skonfigurowanym kliencie docelowym eksportera śledzenia. Obsługuje również propagację standardowego kontekstu śledzenia openTelemetry, mówiąc, że uwzględnia kontekst śledzenia ustawiony w nagłówku żądania i używa go jako kontekstu nadrzędnego zakresu żądania. Możesz użyć funkcji śledzenia rozproszonego, aby skorelować ślad opinii ze śladem żądania czatu.
Poniżej przedstawiono przykładowy kod pokazujący sposób oceniania śledzenia wdrożonego zarządzanego punktu końcowego przepływu i wysyłania opinii do tego samego zakresu śledzenia żądania oceniania. Przepływ zawiera dane wejściowe question
i chat_hisotry
, i wyjściowe answer
. Po ocenianiu punktu końcowego zbieramy opinię i wysyłamy do usługi Application Insights określonej podczas wdrażania przepływu. Musisz wypełnić api_key
wartość lub zmodyfikować kod zgodnie z przypadkiem użycia.
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'))
Ślad żądania można wyświetlić wraz z opiniami w usłudze Application Insights.
Zaawansowane użycie: Eksportowanie śledzenia do niestandardowej usługi modułu zbierającego OpenTelemetry
W niektórych przypadkach możesz wyeksportować dane śledzenia do wdrożonej usługi modułu zbierającego OTel, włączone przez ustawienie "OTEL_EXPORTER_OTLP_ENDPOINT". Użyj tego eksportera, jeśli chcesz dostosować własną logikę przetwarzania zakresu i własny docelowy trwały ślad.