Delen via


MLflow-tracering voor agents

Belangrijk

Deze functie is beschikbaar als openbare preview.

In dit artikel worden MLflow Tracing en de scenario's beschreven waarin het nuttig is voor het evalueren van generatieve AI-toepassingen in uw AI-systeem.

Bij softwareontwikkeling omvat tracering reeksen gebeurtenissen zoals gebruikerssessies of aanvraagstromen. In de context van AI-systemen verwijst tracering vaak naar interacties die u hebt met een AI-systeem. Een voorbeeldtracering van een AI-systeem kan eruitzien als het instrumenteren van de invoer en parameters voor een RAG-toepassing met een gebruikersbericht met prompt, een vectorzoekactie en een interface met het generatieve AI-model.

Wat is MLflow Tracing?

Met MLflow Tracing kunt u traceringen vastleggen, analyseren en vergelijken in verschillende versies van generatieve AI-toepassingen. Hiermee kunt u fouten opsporen in uw generatieve AI Python-code en invoer en antwoorden bijhouden. Dit kan u helpen bij het detecteren van voorwaarden of parameters die bijdragen aan slechte prestaties van uw toepassing. MLflow Tracing is nauw geïntegreerd met Databricks-hulpprogramma's en -infrastructuur, zodat u al uw traceringen kunt opslaan en weergeven in Databricks-notebooks of de gebruikersinterface van het MLflow-experiment terwijl u uw code uitvoert.

Wanneer u AI-systemen op Databricks ontwikkelt met behulp van bibliotheken zoals LangChain, LlamaIndex, OpenAI of aangepaste PyFunc, kunt u met MLflow Tracing alle gebeurtenissen en tussenliggende uitvoer van elke stap van uw agent bekijken. U kunt eenvoudig de prompts zien, welke modellen en retrievers zijn gebruikt, welke documenten zijn opgehaald om het antwoord te verbeteren, hoe lang het duurde en de uiteindelijke uitvoer. Als uw model bijvoorbeeld hallucineert, kunt u snel elke stap inspecteren die tot de hallucinatie heeft geleid.

Waarom MLflow Tracing gebruiken?

MLflow Tracing biedt verschillende voordelen om uw ontwikkelwerkstroom bij te houden. U kunt bijvoorbeeld:

  • Bekijk een interactieve traceringsvisualisatie en gebruik het onderzoekshulpprogramma voor het diagnosticeren van problemen in ontwikkeling.
  • Controleer of promptsjablonen en kaders redelijke resultaten opleveren.
  • Verken en minimaliseer de latentieimpact van verschillende frameworks, modellen, segmentgrootten en procedures voor softwareontwikkeling.
  • Meet de toepassingskosten door tokengebruik bij te houden op verschillende modellen.
  • Stel benchmarkgegevenssets ('golden') vast om de prestaties van verschillende versies te evalueren.
  • Sla traceringen van productiemodeleindpunten op om problemen op te sporen en offline beoordeling en evaluatie uit te voeren.

MLflow Tracing installeren

MLflow Tracing is beschikbaar in MLflow-versies 2.13.0 en hoger.

%pip install mlflow>=2.13.0 -qqqU
%restart_python

U kunt %pip install databricks-agents ook de nieuwste versie van databricks-agents die versie met een compatibele MLflow-versie installeren.

MLflow Tracing gebruiken in ontwikkeling

Met MLflow Tracing kunt u prestatieproblemen analyseren en de ontwikkelingscyclus van de agent versnellen. In de volgende secties wordt ervan uitgegaan dat u agentontwikkeling en MLflow Tracing uitvoert vanuit een notebook.

Notitie

In de notebookomgeving kan MLflow Tracing een paar seconden overhead toevoegen aan de uitvoeringstijd van de agent. Dit komt voornamelijk door de latentie van logboekregistratietraceringen naar het MLflow-experiment. In het eindpunt van het productiemodel heeft MLflow Tracing een veel kleinere invloed op de prestaties. Zie de MLflow-tracering gebruiken in productie.

Notitie

Vanaf Databricks Runtime 15.4 LTS ML is MLflow-tracering standaard ingeschakeld in notebooks. Als u tracering wilt uitschakelen, bijvoorbeeld met LangChain, kunt u uitvoeren mlflow.langchain.autolog(log_traces=False) in uw notebook.

Traceringen toevoegen aan uw agent

MLflow Tracing biedt drie verschillende manieren om traceringen te gebruiken met uw generatieve AI-toepassing met traceringen. Zie Traceringen toevoegen aan uw agents voor voorbeelden van het gebruik van deze methoden. Zie de MLflow-documentatie voor naslaginformatie over de API.

API Aanbevolen use case Beschrijving
Automatische aanmelding van MLflow Ontwikkeling op geïntegreerde GenAI-bibliotheken Automatisch vastleggen van instrumenten traceringen voor populaire opensource-frameworks zoals LangChain, LlamaIndex en OpenAI. Wanneer u aan het begin van het notebook toevoegt mlflow.<library>.autolog() , registreert MLflow automatisch traceringen voor elke stap van de uitvoering van uw agent.
Fluent-API's Aangepaste agent met Pyfunc API's met weinig code voor het instrumenteren van AI-systemen zonder dat u zich zorgen hoeft te maken over de structuur van de tracering. MLflow bepaalt de juiste bovenliggende/onderliggende structuur (spans) op basis van de Python-stack.
MLflow-client-API's Geavanceerde gebruiksvoorbeelden, zoals multithreading MLflowClient implementeert gedetailleerdere, thread-veilige API's voor geavanceerde gebruiksvoorbeelden. Deze API's beheren de bovenliggende en onderliggende relatie van de spanten niet, dus u moet deze handmatig opgeven om de gewenste traceringsstructuur te maken. Hiervoor is meer code vereist, maar hebt u meer controle over de levenscyclus van traceringen, met name voor gebruiksscenario's met meerdere threads.

Aanbevolen voor gebruiksvoorbeelden waarvoor meer controle is vereist, zoals toepassingen met meerdere threads of instrumentatie op basis van callback.

Traceringen controleren

Nadat u de geïnstrueerde agent hebt uitgevoerd, kunt u de gegenereerde traceringen op verschillende manieren bekijken:

  • De traceringsvisualisatie wordt inline weergegeven in de celuitvoer.
  • De traceringen worden vastgelegd in uw MLflow-experiment. U kunt de volledige lijst met historische traceringen bekijken en erop zoeken op het Traces tabblad op de pagina Experiment. Wanneer de agent wordt uitgevoerd onder een actieve MLflow-uitvoering, kunt u ook de traceringen vinden op de pagina Uitvoeren.
  • Traceringen programmatisch ophalen met behulp van search_traces() API.

MLflow Tracing gebruiken in productie

MLflow Tracing is ook geïntegreerd met Mosaic AI Model Serving, zodat u problemen efficiënt kunt opsporen, prestaties kunt bewaken en een gouden gegevensset kunt maken voor offline evaluatie. Wanneer MLflow Tracing is ingeschakeld voor uw servereindpunt, worden traceringen vastgelegd in een deductietabel onder de response kolom.

Als u MLflow Tracing voor uw eindpunt wilt inschakelen, moet u de ENABLE_MLFLOW_TRACING omgevingsvariabele instellen in de eindpuntconfiguratie op True. Zie Omgevingsvariabelen zonder opmaak toevoegen voor het implementeren van een eindpunt met aangepaste omgevingsvariabelen. Als u uw agent hebt geïmplementeerd met behulp van de deploy() API, worden traceringen automatisch vastgelegd in een deductietabel. Zie Een agent implementeren voor een generatieve AI-toepassing.

Notitie

Het schrijven van traceringen naar een deductietabel wordt asynchroon uitgevoerd, zodat deze niet dezelfde overhead toevoegt als in de notebookomgeving tijdens de ontwikkeling. Het kan echter nog steeds enige overhead veroorzaken voor de reactiesnelheid van het eindpunt, met name wanneer de traceringsgrootte voor elke deductieaanvraag groot is. Databricks garandeert geen SLA (Service Level Agreement) voor de werkelijke latentie van uw modeleindpunt, omdat deze sterk afhankelijk is van de omgeving en de implementatie van het model. Databricks raadt u aan uw eindpuntprestaties te testen en inzicht te krijgen in de overhead voor tracering voordat u implementeert in een productietoepassing.

De volgende tabel bevat een ruwe indicatie van de impact op deductielatentie voor verschillende traceringsgrootten.

Traceringsgrootte per aanvraag Impact op latentie (ms)
~10 kB ~ 1 ms
~ 1 MB 50 ~ 100 ms
10 MB 150 ms ~

Beperkingen

  • MLflow Tracing is beschikbaar in Databricks-notebooks, notebooktaken en Model Serving.

  • Automatische aanmelding van LangChain ondersteunt mogelijk niet alle LangChain-voorspellings-API's. Raadpleeg de MLflow-documentatie voor de volledige lijst met ondersteunde API's.