Monitorování kvality a používání tokenů nasazených aplikací toku výzvy
Důležité
Položky označené (Preview) v tomto článku jsou aktuálně ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučujeme ji pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.
Monitorování aplikací nasazených do produkčního prostředí je zásadní součástí životního cyklu aplikace generující umělé inteligence. Změny chování dat a spotřebitelů můžou v průběhu času ovlivnit vaši aplikaci, což vede k zastaralým systémům, které negativně ovlivňují obchodní výsledky a zpřístupňují organizace rizikům dodržování předpisů, ekonomické a reputace.
Poznámka:
Pokud chcete zlepšit způsob průběžného monitorování nasazených aplikací (kromě toku výzvy), zvažte použití online vyhodnocení Azure AI.
Monitorování Azure AI pro generování aplikací umělé inteligence umožňuje monitorovat aplikace v produkčním prostředí za účelem využití tokenů, kvality generování a provozních metrik.
Integrace pro monitorování nasazení toku výzvy umožňují:
- Shromážděte produkční data odvozování z nasazené aplikace toku výzvy.
- Využijte metriky zodpovědného vyhodnocení AI, jako je uzemnění, soudržnost, plynulost a relevance, které jsou interoperabilní s metrikami vyhodnocení toku výzvy.
- Monitorujte výzvy, dokončení a celkové využití tokenů napříč každým nasazením modelu v toku výzvy.
- Monitorujte provozní metriky, jako je počet požadavků, latence a míra chyb.
- Používejte předkonfigurovaná upozornění a výchozí hodnoty pro opakované spouštění monitorování.
- Využití vizualizací dat a konfigurace pokročilého chování na portálu Azure AI Foundry
Požadavky
Než budete postupovat podle kroků v tomto článku, ujistěte se, že máte následující požadavky:
Předplatné Azure s platným způsobem platby. Pro tento scénář se nepodporují bezplatná nebo zkušební předplatná Azure. Pokud nemáte předplatné Azure, vytvořte si placený účet Azure, abyste mohli začít.
Tok výzvy připravený k nasazení Pokud ho nemáte, přečtěte si článek Vývoj toku výzvy.
Řízení přístupu na základě role v Azure (Azure RBAC) se používá k udělení přístupu k operacím na portálu Azure AI Foundry. Pokud chcete provést kroky v tomto článku, musí být vašemu uživatelskému účtu přiřazena role Vývojář Azure AI ve skupině prostředků. Další informace o oprávněních najdete v tématu Řízení přístupu na základě role na portálu Azure AI Foundry.
Požadavky na monitorování metrik
Metriky monitorování generují určité nejmodernější jazykové modely GPT nakonfigurované s konkrétními pokyny pro vyhodnocení (šablony výzvy). Tyto modely fungují jako vyhodnocovací modely pro úlohy pořadí a sekvence. Pomocí této techniky můžete generovat metriky monitorování, které zobrazují silné empirické výsledky a vysokou korelaci s lidským úsudkem ve srovnání se standardními metrikami vyhodnocení AI. Další informace o vyhodnocení toku výzvy najdete v tématu odeslání hromadného testování a vyhodnocení toku a vyhodnocení a monitorování metrik pro generování umělé inteligence.
Modely GPT, které generují metriky monitorování, jsou následující. Tyto modely GPT se podporují s monitorováním a konfigurací jako prostředek Azure OpenAI:
- GPT-3.5 Turbo
- GPT-4
- GPT-4-32k
Podporované metriky pro monitorování
Monitorování podporuje následující metriky:
Metrický | Popis |
---|---|
Uzemnění | Měří, jak dobře vygenerované odpovědi modelu odpovídají informacím ze zdrojových dat (uživatelem definovaný kontext).) |
Relevance | Měří rozsah, v jakém jsou generované odpovědi modelu relevantní a přímo související s danými otázkami. |
Koherence | Měří rozsah, ve kterém jsou generované odpovědi modelu logicky konzistentní a propojené. |
Plynulost | Měří gramatickou znalost předpovězené odpovědi generující umělé inteligence. |
Mapování názvů sloupců
Při vytváření toku je potřeba zajistit, aby se názvy sloupců mapovaly. K měření bezpečnosti a kvality generování se používají následující názvy sloupců vstupních dat:
Název vstupního sloupce | Definice | Povinné/volitelné |
---|---|---|
Otázka | Původní zadaný dotaz (označovaný také jako "vstupy" nebo "otázka") | Požaduje se |
Odpověď | Konečné dokončení volání rozhraní API, které se vrátí (označované také jako "výstupy" nebo "odpověď") | Požaduje se |
Kontext | Všechna kontextová data odesílaná do volání rozhraní API spolu s původní výzvou. Pokud například chcete získat výsledky hledání pouze z určitých certifikovaných zdrojů informací nebo webu, můžete tento kontext definovat v krocích vyhodnocení. | Volitelné |
Parametry vyžadované pro metriky
Parametry nakonfigurované ve vašem datovém assetu určují, jaké metriky můžete podle této tabulky vytvořit:
Metrika | Otázka | Odpověď | Kontext |
---|---|---|---|
Koherence | Požaduje se | Požaduje se | - |
Plynulost | Požaduje se | Požaduje se | - |
Uzemnění | Požaduje se | Požadováno | Požaduje se |
Relevance | Požaduje se | Požadováno | Požaduje se |
Další informace o konkrétních požadavcích mapování dat pro každou metriku najdete v tématu Požadavky na metriky dotazů a odpovědí.
Nastavení monitorování pro tok výzvy
Pokud chcete nastavit monitorování pro aplikaci toku výzvy, musíte nejprve nasadit aplikaci toku výzvy s odvozováním shromažďování dat a pak můžete nakonfigurovat monitorování nasazené aplikace.
Nasazení aplikace toku výzvy s odvozováním shromažďování dat
V této části se dozvíte, jak nasadit tok výzvy s povoleným odvozováním shromažďování dat. Podrobné informace o nasazení toku výzvy najdete v tématu Nasazení toku pro odvozování v reálném čase.
Přihlaste se k Azure AI Foundry.
Pokud ještě nejste v projektu, vyberte ho.
V levém navigačním panelu vyberte Tok výzvy.
Vyberte tok výzvy, který jste vytvořili dříve.
Poznámka:
Tento článek předpokládá, že jste už vytvořili tok výzvy, který je připravený k nasazení. Pokud ho nemáte, přečtěte si článek Vývoj toku výzvy.
Ověřte, že se tok úspěšně spustí a že jsou požadované vstupy a výstupy nakonfigurované pro metriky, které chcete vyhodnotit.
Zadání minimálních požadovaných parametrů (otázek, vstupů a odpovědí/výstupů) poskytuje pouze dvě metriky: soudržnost a plynulost. Tok musíte nakonfigurovat, jak je popsáno v části Požadavky na metriky monitorování. V tomto příkladu se jako vstupy toku používá (
question
Otázka) achat_history
(Kontext) aanswer
jako výstup toku (Odpověď).Výběrem možnosti Nasadit zahájíte nasazování toku.
V okně nasazení se ujistěte, že je povolená kolekce odvozování dat, která bez problémů shromáždí data odvozování vaší aplikace do služby Blob Storage. Tato shromažďování dat se vyžaduje pro monitorování.
Pokračujte kroky v okně nasazení a dokončete upřesňující nastavení.
Na stránce Kontrola zkontrolujte konfiguraci nasazení a vyberte Vytvořit pro nasazení toku.
Poznámka:
Ve výchozím nastavení se do služby Blob Storage shromažďují všechny vstupy a výstupy nasazené aplikace toku výzvy. Při vyvolání nasazení uživateli se data shromažďují, aby je vaše monitorování používalo.
Na stránce nasazení vyberte kartu Test a otestujte nasazení, abyste měli jistotu, že funguje správně.
Poznámka:
Monitorování vyžaduje, aby alespoň jeden datový bod pochází ze zdroje jiného než karty Test v nasazení. K odesílání ukázkových požadavků do nasazení doporučujeme použít rozhraní REST API dostupné na kartě Využití . Další informace o odesílání ukázkových požadavků do nasazení najdete v tématu Vytvoření online nasazení.
Konfigurace sledování
V této části se dozvíte, jak nakonfigurovat monitorování nasazené aplikace toku výzvy.
V levém navigačním panelu přejděte do části Modely prostředků>+ koncové body.
Vyberte nasazení toku výzvy, které jste vytvořili.
V poli Povolit monitorování kvality generování vyberte Povolit.
Začněte konfigurovat monitorování výběrem požadovaných metrik.
Ověřte, že se názvy sloupců mapují z toku, jak je definováno v mapování názvů sloupců.
Vyberte připojení a nasazení Azure OpenAI, které chcete použít k monitorování aplikace toku výzvy.
Pokud chcete zobrazit další možnosti konfigurace, vyberte Upřesnit možnosti .
Upravte vzorkovací frekvenci, prahové hodnoty pro nakonfigurované metriky a zadejte e-mailové adresy, které by měly dostávat výstrahy, když průměrné skóre pro danou metriku klesne pod prahovou hodnotu.
Poznámka:
Pokud vaše nasazení nemá povolené shromažďování dat, vytvoření monitorování umožní shromažďování odvozování dat do služby Azure Blob Storage, což bude trvat několik minut offline nasazení.
Vyberte Vytvořit a vytvořte monitor.
Využití výsledků monitorování
Po vytvoření monitorování se bude každý den spouštět, aby vypočítal metriky využití a generování tokenů.
Pokud chcete zobrazit výsledky monitorování, přejděte na kartu Monitorování (Preview) v rámci nasazení. Tady uvidíte přehled výsledků monitorování během vybraného časového intervalu. Výběr data můžete použít ke změně časového intervalu dat, která monitorujete. V tomto přehledu jsou k dispozici následující metriky:
- Celkový počet požadavků: Celkový počet požadavků odeslaných do nasazení během vybraného časového intervalu.
- Celkový počet tokenů: Celkový počet tokenů používaných nasazením během vybraného časového intervalu.
- Počet tokenů výzvy: Počet výzev tokenů používaných nasazením během vybraného časového intervalu.
- Počettokench
Zobrazte metriky na kartě Využití tokenu (tato karta je ve výchozím nastavení vybraná). Tady můžete zobrazit využití tokenu vaší aplikace v průběhu času. Můžete také zobrazit distribuci tokenů výzvy a dokončení v průběhu času. Obor spojnice trendu můžete změnit tak, aby monitoruje všechny tokeny v celé aplikaci nebo použití tokenu pro konkrétní nasazení (například gpt-4) používané v rámci vaší aplikace.
Přejděte na kartu Kvalita generování a sledujte kvalitu aplikace v průběhu času. V časovém diagramu se zobrazují následující metriky:
- Počet porušení: Počet porušení pro danou metriku (například Fluency) je součet porušení ve vybraném časovém intervalu. Pokud vypočítaná hodnota pro metriku klesne pod nastavenou prahovou hodnotu, dojde k porušení metriky při výpočtu (výchozí hodnota je denní).
- Průměrné skóre: Průměrné skóre pro danou metriku (například Fluency) je součet skóre pro všechny instance (nebo požadavky) vydělený počtem instancí (nebo požadavků) v průběhu vybraného časového intervalu.
Na kartě Porušení kvality generování se zobrazuje míra porušení ve vybraném časovém intervalu. Míra porušení je počet porušení rozdělených celkovým počtem možných porušení. V nastavení můžete upravit prahové hodnoty metrik. Ve výchozím nastavení se metriky počítají každý den; tuto frekvenci lze také upravit v nastavení.
Na kartě Monitorování (Preview) můžete také zobrazit komplexní tabulku všech ukázkových požadavků odeslaných do nasazení během vybraného časového intervalu.
Poznámka:
Monitorování nastavuje výchozí vzorkovací frekvenci na 10 %. To znamená, že pokud se do vašeho nasazení odešle 100 požadavků, 10 se vzorkuje a použije se k výpočtu metrik kvality generování. Vzorkovací frekvenci můžete upravit v nastavení.
Výběrem tlačítka Trasování na pravé straně řádku v tabulce zobrazíte podrobnosti trasování pro daný požadavek. Toto zobrazení poskytuje komplexní podrobnosti trasování pro požadavek vaší aplikace.
Zavřete zobrazení trasování.
Přejděte na kartu Provozní a zobrazte provozní metriky pro nasazení téměř v reálném čase. Podporujeme následující provozní metriky:
- Počet požadavků
- Latence
- Míra chyb
Výsledky na kartě Monitorování (Preview) vašeho nasazení poskytují přehledy, které vám pomůžou proaktivně zlepšit výkon aplikace toku výzvy.
Pokročilá konfigurace monitorování se sadou SDK v2
Monitorování také podporuje pokročilé možnosti konfigurace pomocí sady SDK v2. Podporovány jsou následující scénáře:
Povolení monitorování využití tokenů
Pokud vás zajímá jenom povolení monitorování využití tokenů pro nasazenou aplikaci toku výzvy, můžete přizpůsobit následující skript vašemu scénáři:
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
MonitorSchedule,
CronTrigger,
MonitorDefinition,
ServerlessSparkCompute,
MonitoringTarget,
AlertNotification,
GenerationTokenStatisticsSignal,
)
from azure.ai.ml.entities._inputs_outputs import Input
from azure.ai.ml.constants import MonitorTargetTasks, MonitorDatasetContext
# Authentication package
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
# Update your azure resources details
subscription_id = "INSERT YOUR SUBSCRIPTION ID"
resource_group = "INSERT YOUR RESOURCE GROUP NAME"
project_name = "INSERT YOUR PROJECT NAME" # This is the same as your Azure AI Foundry project name
endpoint_name = "INSERT YOUR ENDPOINT NAME" # This is your deployment name without the suffix (e.g., deployment is "contoso-chatbot-1", endpoint is "contoso-chatbot")
deployment_name = "INSERT YOUR DEPLOYMENT NAME"
# These variables can be renamed but it is not necessary
monitor_name ="gen_ai_monitor_tokens"
defaulttokenstatisticssignalname ="token-usage-signal"
# Determine the frequency to run the monitor, and the emails to recieve email alerts
trigger_schedule = CronTrigger(expression="15 10 * * *")
notification_emails_list = ["test@example.com", "def@example.com"]
ml_client = MLClient(
credential=credential,
subscription_id=subscription_id,
resource_group_name=resource_group,
workspace_name=project_name,
)
spark_compute = ServerlessSparkCompute(instance_type="standard_e4s_v3", runtime_version="3.3")
monitoring_target = MonitoringTarget(
ml_task=MonitorTargetTasks.QUESTION_ANSWERING,
endpoint_deployment_id=f"azureml:{endpoint_name}:{deployment_name}",
)
# Create an instance of token statistic signal
token_statistic_signal = GenerationTokenStatisticsSignal()
monitoring_signals = {
defaulttokenstatisticssignalname: token_statistic_signal,
}
monitor_settings = MonitorDefinition(
compute=spark_compute,
monitoring_target=monitoring_target,
monitoring_signals = monitoring_signals,
alert_notification=AlertNotification(emails=notification_emails_list),
)
model_monitor = MonitorSchedule(
name = monitor_name,
trigger=trigger_schedule,
create_monitor=monitor_settings
)
ml_client.schedules.begin_create_or_update(model_monitor)
Povolení monitorování pro kvalitu generování
Pokud vás zajímá jenom povolení monitorování kvality generování pro nasazenou aplikaci toku výzvy, můžete přizpůsobit následující skript vašemu scénáři:
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
MonitorSchedule,
CronTrigger,
MonitorDefinition,
ServerlessSparkCompute,
MonitoringTarget,
AlertNotification,
GenerationSafetyQualityMonitoringMetricThreshold,
GenerationSafetyQualitySignal,
BaselineDataRange,
LlmData,
)
from azure.ai.ml.entities._inputs_outputs import Input
from azure.ai.ml.constants import MonitorTargetTasks, MonitorDatasetContext
# Authentication package
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
# Update your azure resources details
subscription_id = "INSERT YOUR SUBSCRIPTION ID"
resource_group = "INSERT YOUR RESOURCE GROUP NAME"
project_name = "INSERT YOUR PROJECT NAME" # This is the same as your Azure AI Foundry project name
endpoint_name = "INSERT YOUR ENDPOINT NAME" # This is your deployment name without the suffix (e.g., deployment is "contoso-chatbot-1", endpoint is "contoso-chatbot")
deployment_name = "INSERT YOUR DEPLOYMENT NAME"
aoai_deployment_name ="INSERT YOUR AOAI DEPLOYMENT NAME"
aoai_connection_name = "INSERT YOUR AOAI CONNECTION NAME"
# These variables can be renamed but it is not necessary
app_trace_name = "app_traces"
app_trace_Version = "1"
monitor_name ="gen_ai_monitor_generation_quality"
defaultgsqsignalname ="gsq-signal"
# Determine the frequency to run the monitor, and the emails to recieve email alerts
trigger_schedule = CronTrigger(expression="15 10 * * *")
notification_emails_list = ["test@example.com", "def@example.com"]
ml_client = MLClient(
credential=credential,
subscription_id=subscription_id,
resource_group_name=resource_group,
workspace_name=project_name,
)
spark_compute = ServerlessSparkCompute(instance_type="standard_e4s_v3", runtime_version="3.3")
monitoring_target = MonitoringTarget(
ml_task=MonitorTargetTasks.QUESTION_ANSWERING,
endpoint_deployment_id=f"azureml:{endpoint_name}:{deployment_name}",
)
# Set thresholds for passing rate (0.7 = 70%)
aggregated_groundedness_pass_rate = 0.7
aggregated_relevance_pass_rate = 0.7
aggregated_coherence_pass_rate = 0.7
aggregated_fluency_pass_rate = 0.7
# Create an instance of gsq signal
generation_quality_thresholds = GenerationSafetyQualityMonitoringMetricThreshold(
groundedness = {"aggregated_groundedness_pass_rate": aggregated_groundedness_pass_rate},
relevance={"aggregated_relevance_pass_rate": aggregated_relevance_pass_rate},
coherence={"aggregated_coherence_pass_rate": aggregated_coherence_pass_rate},
fluency={"aggregated_fluency_pass_rate": aggregated_fluency_pass_rate},
)
input_data = Input(
type="uri_folder",
path=f"{endpoint_name}-{deployment_name}-{app_trace_name}:{app_trace_Version}",
)
data_window = BaselineDataRange(lookback_window_size="P7D", lookback_window_offset="P0D")
production_data = LlmData(
data_column_names={"prompt_column": "question", "completion_column": "answer", "context_column": "context"},
input_data=input_data,
data_window=data_window,
)
gsq_signal = GenerationSafetyQualitySignal(
connection_id=f"/subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.MachineLearningServices/workspaces/{project_name}/connections/{aoai_connection_name}",
metric_thresholds=generation_quality_thresholds,
production_data=[production_data],
sampling_rate=1.0,
properties={
"aoai_deployment_name": aoai_deployment_name,
"enable_action_analyzer": "false",
"azureml.modelmonitor.gsq_thresholds": '[{"metricName":"average_fluency","threshold":{"value":4}},{"metricName":"average_coherence","threshold":{"value":4}}]',
},
)
monitoring_signals = {
defaultgsqsignalname: gsq_signal,
}
monitor_settings = MonitorDefinition(
compute=spark_compute,
monitoring_target=monitoring_target,
monitoring_signals = monitoring_signals,
alert_notification=AlertNotification(emails=notification_emails_list),
)
model_monitor = MonitorSchedule(
name = monitor_name,
trigger=trigger_schedule,
create_monitor=monitor_settings
)
ml_client.schedules.begin_create_or_update(model_monitor)
Po vytvoření monitorování ze sady SDK můžete výsledky monitorování využívat na portálu Azure AI Foundry.
Související obsah
- Přečtěte si další informace o tom, co můžete dělat v Azure AI Foundry.
- Získejte odpovědi na nejčastější dotazy v článku Nejčastější dotazy k Azure AI.