Udostępnij za pośrednictwem


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 Edukacja 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ć.
  • Szczegółowe informacje aplikacji. Zazwyczaj obszar roboczy uczenia maszynowego ma domyślną połączoną aplikację Szczegółowe informacje. Jeśli chcesz użyć nowego, możesz utworzyć zasób aplikacji Szczegółowe informacje.
  • 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 Edukacja lub rolę niestandardową zezwalającą na "Microsoft.Machine Edukacja Services/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 Edukacja.

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 przepływu do usługi Azure Machine Edukacja zarządzanych punktów końcowych online. 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ę aplikacji Szczegółowe informacje w obszarze Ustawienia zaawansowane —> krok Wdrażania w kreatorze wdrażania, w którym sposób śledzenia danych i metryk systemowych są zbierane do połączonej aplikacji obszaru roboczego Szczegółowe informacje.

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łączonej aplikacji obszaru roboczego Szczegółowe informacje. Możesz również określić inne Szczegółowe informacje aplikacji według zmiennej środowiskowej APPLICATIONINSIGHTS_CONNECTION_STRING w pliku yaml wdrożenia w następujący sposób. Parametry połączenia aplikacji Szczegółowe informacje 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 ma połączonej aplikacji Szczegółowe informacje, wdrożenie nie zakończy się niepowodzeniem, ale nie będą zbierane żadne dane.

Jeśli jednocześnie określisz zarówno i app_insights_enabled: true powyższą zmienną środowiskową, dane śledzenia i metryki zostaną wysłane do połączonej aplikacji obszaru roboczego Szczegółowe informacje. W związku z tym, jeśli chcesz określić inną Szczegółowe informacje aplikacji, 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 Szczegółowe informacje.

Wyświetlanie danych śledzenia w usłudze Application Szczegółowe informacje

Ś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 Szczegółowe informacje aplikacji. Poniższy zrzut ekranu przedstawia przykład zdarzenia wdrożonego przepływu zawierającego wiele węzłów. W obszarze Aplikacja Szczegółowe informacje —> Badanie —> wyszukiwanie transakcji i można 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 o wyszukiwaniu transakcji i diagnostyce w Szczegółowe informacje aplikacji.

Zrzut ekranu przedstawiający śledzenie danych w usłudze Application Insights.

Wyświetlanie metryk systemowych w usłudze Application Szczegółowe informacje

Nazwa metryk Typ Wymiary opis
token_consumption counter -Przepływu
-Węzła
- llm_engine
- token_type: : prompt_tokenstokeny 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ślną aplikację obszaru roboczego Szczegółowe informacje można znaleźć na stronie przeglądu obszaru roboczego w witrynie Azure Portal.

Otwórz Szczegółowe informacje Aplikacji, a następnie wybierz pozycję Użycie i szacowane koszty z lewej strony nawigacji. Wybierz pozycję Metryki niestandardowe (wersja zapoznawcza), a następnie wybierz pozycję Z wymiarami i zapisz zmianę.

Zrzut ekranu przedstawiający włączanie metryk wielowymiarowych.

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.

Zrzut ekranu przedstawiający metryki punktu końcowego przepływu monitu.

Zbieranie opinii i wysyłanie do aplikacji Szczegółowe informacje

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 aplikacji Szczegółowe informacje określone 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 Szczegółowe informacje aplikacji.

Zrzut ekranu przedstawiający opinie i dane śledzenia żądania w aplikacji Szczegółowe informacje.

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.

Następne kroki