MLflow-spårning för agenter
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Den här artikeln beskriver MLflow Tracing och scenarier där det är användbart för att utvärdera generativa AI-program i ditt AI-system.
Inom programvaruutveckling omfattar spårning inspelningssekvenser av händelser som användarsessioner eller begärandeflöden. I samband med AI-system refererar spårning ofta till interaktioner du har med ett AI-system. Ett exempel på ett AI-system kan se ut som att instrumentera indata och parametrar för ett RAG-program som innehåller ett användarmeddelande med prompt, en vektorsökning och ett gränssnitt med den generativa AI-modellen.
Vad är MLflow-spårning?
Med MLflow Tracing kan du logga, analysera och jämföra spårningar mellan olika versioner av generativa AI-program. Det gör att du kan felsöka din generativa AI Python-kod och hålla reda på indata och svar. Det kan hjälpa dig att identifiera villkor eller parametrar som bidrar till dålig prestanda för ditt program. MLflow Tracing är nära integrerat med Databricks-verktyg och infrastruktur, så att du kan lagra och visa alla dina spårningar i Databricks notebook-filer eller MLflow-experimentets användargränssnitt när du kör koden.
När du utvecklar AI-system i Databricks med hjälp av bibliotek som LangChain, LlamaIndex, OpenAI eller anpassad PyFunc kan du med MLflow Tracing se alla händelser och mellanliggande utdata från varje steg i agenten. Du kan enkelt se prompterna, vilka modeller och hämtningar som har använts, vilka dokument som hämtades för att utöka svaret, hur lång tid det tog och de slutliga utdata. Om din modell till exempel hallucinerar kan du snabbt inspektera varje steg som ledde till hallucinationen.
Varför ska jag använda MLflow-spårning?
MLflow Tracing ger flera fördelar som hjälper dig att spåra ditt arbetsflöde för utveckling. Du kan till exempel:
- Granska en interaktiv spårningsvisualisering och använd undersökningsverktyget för att diagnostisera problem under utveckling.
- Kontrollera att promptmallar och skyddsräcken ger rimliga resultat.
- Utforska och minimera svarstidens inverkan på olika ramverk, modeller, segmentstorlekar och metoder för programvaruutveckling.
- Mäta programkostnader genom att spåra tokenanvändning av olika modeller.
- Upprätta benchmark-datamängder ("golden") för att utvärdera prestanda för olika versioner.
- Lagra spårningar från produktionsmodellslutpunkter för att felsöka problem och utföra offlinegranskning och utvärdering.
Installera MLflow-spårning
MLflow Tracing är tillgängligt i MLflow-versionerna 2.13.0 och senare.
%pip install mlflow>=2.13.0 -qqqU
%restart_python
Du kan %pip install databricks-agents
också installera den senaste versionen av databricks-agents
som innehåller en kompatibel MLflow-version.
Använda MLflow-spårning under utveckling
MLflow Tracing hjälper dig att analysera prestandaproblem och påskynda agentutvecklingscykeln. I följande avsnitt förutsätter vi att du utför agentutveckling och MLflow-spårning från en notebook-fil.
Kommentar
I notebook-miljön kan MLflow Tracing lägga till upp till några sekunders omkostnader för agentens körningstid. Detta kommer främst från svarstiden för loggningsspårningar till MLflow-experimentet. I produktionsmodellslutpunkten har MLflow Tracing en mycket mindre inverkan på prestanda. Se Använda MLflow-spårning i produktion.
Kommentar
Från och med Databricks Runtime 15.4 LTS ML aktiveras MLflow-spårning som standard i notebook-filer. Om du vill inaktivera spårning, till exempel med LangChain, kan du köra mlflow.langchain.autolog(log_traces=False)
i notebook-filen.
Lägga till spårningar i din agent
MLflow Tracing innehåller tre olika sätt att använda spårningar med ditt generativa AI-program med spårningar. Se Lägga till spårningar i dina agenter för exempel på hur du använder dessa metoder. Information om API-referens finns i MLflow-dokumentationen.
API | Rekommenderat användningsfall | beskrivning |
---|---|---|
Automatisk MLflow-loggning | Utveckling av integrerade GenAI-bibliotek | Automatisk loggning instrumenterar automatiskt spårningar för populära öppen källkod ramverk som LangChain, LlamaIndex och OpenAI. När du lägger till mlflow.<library>.autolog() i början av notebook-filen registrerar MLflow automatiskt spårningar för varje steg i agentkörningen. |
Api:er för Fluent | Anpassad agent med Pyfunc | API:er med låg kod för instrumentering av AI-system utan att behöva bekymra dig om spårningens trädstruktur. MLflow avgör lämplig överordnad-underordnad trädstruktur (intervall) baserat på Python-stacken. |
MLflow-klient-API:er | Avancerade användningsfall som flera trådar | MLflowClient implementerar mer detaljerade, trådsäkra API:er för avancerade användningsfall. Dessa API:er hanterar inte den överordnade och underordnade relationen mellan intervallen, så du måste ange den manuellt för att skapa önskad spårningsstruktur. Detta kräver mer kod men ger dig bättre kontroll över spårningens livscykel, särskilt för användningsfall med flera trådar.Rekommenderas för användningsfall som kräver mer kontroll, till exempel program med flera trådar eller motringningsbaserad instrumentation. |
Granska spårningar
När du har kört den instrumenterade agenten kan du granska de genererade spårningarna på olika sätt:
- Spårningsvisualiseringen återges infogad i cellutdata.
- Spårningarna loggas till MLflow-experimentet. Du kan granska den fullständiga listan över historiska spårningar och söka på dem på fliken
Traces
på sidan Experiment. När agenten körs under en aktiv MLflow-körning kan du även hitta spårningarna på sidan Kör. - Hämta spårningar programmatiskt med hjälp av API:et search_traces().
Använda MLflow-spårning i produktion
MLflow Tracing är också integrerat med Mosaic AI Model Serving, så att du kan felsöka problem effektivt, övervaka prestanda och skapa en gyllene datauppsättning för offlineutvärdering. När MLflow Tracing är aktiverat för serverdelsslutpunkten registreras spårningar i en slutsatstabell under response
kolumnen.
Om du vill aktivera MLflow-spårning för serverdelsslutpunkten måste du ange ENABLE_MLFLOW_TRACING
miljövariabeln i slutpunktskonfigurationen till True
. Se Lägga till miljövariabler för oformaterad text för hur du distribuerar en slutpunkt med anpassade miljövariabler. Om du distribuerade din agent med hjälp av API:et deploy()
loggas spårningar automatiskt till en slutsatsdragningstabell. Se Distribuera en agent för generativ AI-program.
Kommentar
Att skriva spårningar till en slutsatsdragningstabell görs asynkront, så det lägger inte till samma omkostnader som i notebook-miljön under utvecklingen. Det kan dock fortfarande medföra vissa omkostnader för slutpunktens svarshastighet, särskilt när spårningsstorleken för varje slutsatsdragningsbegäran är stor. Databricks garanterar inte något serviceavtal (SLA) för den faktiska svarstidens inverkan på modellslutpunkten, eftersom det är mycket beroende av miljön och modellimplementeringen. Databricks rekommenderar att du testar slutpunktsprestanda och får insikter om spårningskostnaderna innan du distribuerar till ett produktionsprogram.
Följande tabell innehåller en grov indikation på effekten på slutsatsdragningsfördröjning för olika spårningsstorlekar.
Spårningsstorlek per begäran | Påverkan på svarstid (ms) |
---|---|
~10 KB | ~ 1 ms |
~ 1 MB | 50 ~ 100 ms |
10 MB | 150 ms ~ |