2026-08-01T02:45:16.406Z
MLflow LLM osservabilità: dimostrare che la traccia è diventata la prova
Audit MLflow 3.14.0 campionamento, ammissione in coda di sincronizzazione, scadenza del nuovo tentativo, persistenza di backend, completezza delle tracce, freschezza e risultati verificati dell'agente.
L'osservabilità di MLflow LLM è utile per le operazioni degli agenti solo quando una traccia diventa prova duratura e ricercabile. Un gestore completato non è quella prova. Con il logging asincrono, l'applicazione può finire prima che la traccia raggiunga il backend di tracciamento; una fila completa può scartare nuove tracce; una finestra di retry scaduta può scartare le scritture fallite; e il campionamento a livello di traccia può intenzionalmente omettere un intero traccia. Il default pratico è una ricevuta in cinque fasi: 1. la richiesta era ammissibile al tracciamento; 2. la traccia è stata ammessa sul percorso di esportazione asincrono; 3. il backend configurato lo ha memorizzato; 4. una ricerca di backend ha trovato una nuova traccia con gli intervalli richiesti; 5. un controllo deterministico separato ha verificato il risultato richiesto. Le fasi da una a quattro stabiliscono la copertura dell'osservazione. La fase cinque stabilisce che l'agente ha consegnato ciò che l'utente ha chiesto. Questo articolo mette a prova quel limite rispetto a MLflow 3.14.0, l'attuale rilascio PyPI quando viene verificato il 30 luglio 2026. L'esperimento utilizza un backend locale di tracciamento SQLite e attributi privi di contenuti; non invia richieste, risposte, credenziali o dati dei clienti. Una traccia può scomparire dopo il ritorno del gestore. MLflow's guida di tracciamento della produzione La Commissione raccomanda la registrazione assincrona delle tracce per i carichi di lavoro di produzione, documentando tre confini operativi che sono importanti prima che una traccia possa supportare una decisione di incidente. In primo luogo, la registrazione di sincronizzazione è abilitata per impostazione predefinita per i carichi di lavoro open source MLflow e Databricks non notebook. modalità di esecuzione efficace , non un'ipotesi copiata da un altro ambiente. In secondo luogo, MLFLOW ASYNC TRACE LOGGING MAX QUEUE SIZE La documentazione è esplicita: quando la coda è piena, vengono scartate nuove tracce. Una risposta di applicazione di successo può coesistere con prove di osservabilità mancanti perché l'esecuzione della richiesta e l'ammissione delle tracce sono eventi separati. In terzo luogo, le scritte di traccia fallite vengono riprovate solo all'interno MLFLOW ASYNC TRACE LOGGING RETRY TIMEOUT L'aumento del timeout può migliorare la resilienza durante una breve interruzione di tracciamento backend, ma prolunga anche la pressione della memoria e il lavoro di recupero. Non è una garanzia di durata. Il campionamento è di nuovo diverso. MLFLOW TRACE SAMPLING RATIO la selezione di tracce intere: gli intervalli di una traccia selezionata restano insieme, mentre una traccia non selezionata è intenzionalmente assente. Questo è un risultato di politica, non un fallimento dell'esportatore. deliberately unobserved No , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no , no . trace lost , quando la decisione di campionamento è nota. Queste distinzioni modificano l'allarme. Una richiesta intenzionalmente non campionata dovrebbe influenzare i calcoli di copertura. Overflow della coda o esaurimento è un incidente di osservabilità. Un'interruzione di backend può rendere il verdetto incerto. Trattare tutti e tre come no trace nasconde sia la causa che l'azione successiva sicura. Provare la persistenza con un canario, non un processo di uscita MLflow 3.14.0 espone i controlli di persistenza che consentono a una prova di distinguere il lavoro di fondo in sospeso dalle prove di fondo consultabili: mlflow.flush trace async logging() spargimenti in attesa di traccia scrive; mlflow.get trace(trace id, flush=True) flushes e retest quando la traccia non viene trovata; mlflow.search traces(..., flush=True) scarichi prima di cercare. Il comportamento dell'API pertinente è documentato nel Referenza MLflow Python Il ... flush L'opzione è particolarmente utile nei test, nelle sonde di distribuzione, nei lavori di breve durata e nei canari controllati. Ecco un canario senza contenuti minimi: Un canario contro il file store locale di uno sviluppatore non dice nulla su un container di produzione che punta a un server di tracciamento remoto. Nell'esperimento registrato MLflow 3.14.0, la differenza era visibile. get trace(..., flush=False) non è stata riportata alcuna traccia e search traces(..., flush=False) Ritorno zero risultati. flush trace async logging() , la ricerca ha avuto successo, la ricerca ha restituito una traccia, e quel risultato conteneva l'ID traccia canaria. Questo è un'osservazione, non un benchmark universale di latenza. Un backend veloce può persistere prima della prima query; un backend lento o fallito può richiedere più tempo. La regola duratura è l'affermazione dopo un flush controllato, non l'esatto conteggio prima del flush. Per un servizio di lunga durata, programmati il canario ad un tasso che sia abbastanza economico da conservare al 100% campionamento. l'identità del lavoratore e dell'impiego; tracciare efficacemente le impronte digitali URI, mai la credenziale; Identificazione delle tracce e sperimentazione o localizzazione; tempo di interrogazione, tempo di completamento del flush e tempo di ricerca; i nomi di radice attesi e i nomi di spazi infantili richiesti; una scadenza per la freschezza; il risultato di una verifica separata della destinazione. Tali campi permettevano all'operatore di distinguere tra un lavoratore che non ha mai creato un intervallo e un esportatore che non poteva persistere. Route otto stati senza un falso verde Un utile audit ha bisogno di più di found: true Il seguente sistema di otto casi dà a ogni limite di fallimento un verdetto diverso. Le prove Verdicto Decisione dell'operatore Politica di campionamento esclusa la richiesta deliberately unobserved Ricalcolare la copertura o aumentare il campionamento per percorsi critici La coda ha respinto una nuova traccia discarded queue full Ridurre la pressione, aumentare la capacità limitata o aumentare la scala degli esportatori I tentativi di ritorno all'esportazione hanno esaurito il loro tempo di sospensione discarded retry expired Investigare il backend o la rete; prove non sono disponibili Il lavoro locale è terminato , ma il deposito backend non è provato . backend persistence unproven Spogliare in una sonda e consultare il backend configurato Traccia immagazzinata è più antica della scadenza della prova stale evidence Ricorrere il canario; non riutilizzare il vecchio verde La traccia è fresca ma manca uno strumento o uno spazio di destinazione richiesti incomplete trace Fissare lo strumento prima di usarlo per la diagnosi La traccia è completa, ma il consegnabile non è verificato. observed outcome unverified Controllare direttamente la destinazione o l'artefatto Traccia è fresca, completa, e il risultato ricevimento passa verified Ammettere questa prova alla decisione sanitaria La priorità è importante. Se una richiesta è stata deliberatamente non campionata, non c'è motivo di diagnosticare l'ammissione in coda per quella richiesta. Se la persistenza non è dimostrata, l'intervallo completo è inconoscibile. Se la traccia è completa ma l'artefatto esterno manca, il risultato è un falso successo, non una vittoria strumentazione. L'audit esecutivo che accompagna questo articolo riproduce esattamente un caso per ogni verdetto e consente solo verified Questo dispositivo è intenzionalmente piccolo: il suo valore è il limite di decisione, non il realismo dei test di carico. Una traccia completa e un compito completato sono ricevute diverse MLflow Tracing può catturare input, output, metadati, chiamate di modello, recuperi, chiamate di strumento e altri passaggi intermedi. tracciamento di una panoramica presenta tali tracce come prove per il debugging, il monitoraggio, la valutazione, il feedback e la raccolta dei set di dati. Come si è comportato la corsa Sì . Non può genericamente dimostrare che ogni promessa esterna è stata soddisfatta. Un intervallo di tempo degli strumenti con uno stato di successo può mostrare che una chiamata API è stata restituita. Non dimostra necessariamente che il file richiesto esista sul percorso concordato, una richiesta di pull contiene la differenza prevista, un messaggio raggiunto il destinatario corretto o un rapporto programmato contiene dati correnti. Definire la ricevuta dei risultati del contratto di attività: per un file, verificare il percorso, il tipo, la dimensione del pavimento, la somma di controllo o il predicato di contenuto; per una implementazione, verificare la revisione di destinazione e un'indagine di accettazione in diretta; per un messaggio, verificare l'identità della destinazione e la ricevuta del fornitore; per una mutazione del database, verificare lo stato di riga previsto e la chiave di idempotenza; per una corsa programmata, verificare la sua finestra attesa e la freschezza della sua uscita. Legare la ricevuta al tracciamento con un'operazione senza contenuti o richiedere ID. Conservare segreti e contenuti di contatto grezzo fuori dalla chiave di accesso. Se la destinazione non può essere ricercata in modo sicuro, classificare il risultato come unknown e chiedere l'autorità mancante o le prove. Questo limita anche ciò che il canario prova. Un tracciato rosso verifica un percorso in un istante. Non misura ogni lavoratore, non garantisce la capacità futura della coda, non ricostruisce tracciati campionati, non prova la conservazione di backup o non prova un risultato dell'utente. Il default operativo Utilizzare la registrazione asincrona per la latenza di produzione, ma pagare esplicitamente il debito di durata: 1. inserire il pacchetto MLflow e registrare l'effettiva configurazione di sincronizzazione, coda, ripetizione e campionamento; 2. mantenere un tasso basso di campionamento del 100% per ogni percorso di lavoro critico; 3. rilevare e cercare solo all'interno delle sonde, dei test, della manovra di chiusura o di altri punti di verifica limitati; 4. richiedere una nuova ricerca di backend più la copertura prevista prima di ammettere le prove di tracciamento; 5. verificare separatamente la destinazione del compito; 6. in modo diverso per campionamento deliberato, perdite dell'esportatore, prove obsolete, tracce incomplete e errori di successo. Questa politica rende utile l'osservabilità di MLflow senza pretendere di essere un oracolo di risultati. Sidewisp è attualmente in anteprima privata. È stato progettato come uno strato di salute accanto ai tempi di esecuzione degli agenti e ai sistemi di osservabilità, con la freschezza delle prove, l'incertezza e la verifica dei risultati mantenuti espliciti.