Il contesto di Flo Health
Flo Health, con 81 milioni di utenti attivi mensili, gestisce un’app di salute femminile a scala enorme. In un dominio dove ogni piccola vulnerabilità può avere conseguenze gravi, la sicurezza delle risposte generate dall’IA è cruciale. I prodotti di Flo trattano salute e benessere, quindi le risposte devono essere sia medicamente sicure che realmente utili per l’utente.
Dalla tradizionale ML all’IA generativa
Il passaggio da modelli tradizionali a statistiche personalizzate generate dall’IA ha mostrato a Flo il potenziale di un prodotto più flessibile e personalizzato. Tuttavia, affidarsi a un unico modello “one-size-fits-all” ha introdotto limitazioni: costi di scala elevati, dipendenza dal ciclo di vita del provider di modelli e difficoltà a codificare la conoscenza di dominio proprietario di Flo.
La visione a lungo termine
Flo ha definito una visione di sistema AI composito, in cui si utilizza il modello più adatto per ogni task, mantenendo un unico standard di sicurezza uniforme. Questo approccio avrebbe permesso di superare le limitazioni del modello monolitico e di offrire un’esperienza più coerente e personalizzata.
L’adozione di modelli aperti e la nuova pipeline Databricks
Il team ha deciso di adottare modelli aperti (open‑source) e di addestrarli in maniera fine‑tuned tramite una pipeline di post‑training integrata con Databricks. Utilizzando giudici IA e dati sintetici orientati alla privacy, Flo ha trasformato i propri standard di sicurezza medica in una “segnale di training”, eseguendo l’addestramento distribuito su GPU NVIDIA H100 serverless con Databricks AI Runtime.
Un vantaggio economico
Secondo il team, l’utilizzo di modelli adattati e fine‑tuned riduce i costi di inferenza di un ordine di grandezza rispetto all’uso di API di modelli all’avanguardia, offrendo allo stesso tempo un maggiore controllo sul comportamento e sul ciclo di vita del modello.
Definizione di “buen” risultato: sicurezza medica e utilità
Flo ha stabilito due obiettivi chiave: sicurezza medica come base e utilità come meta. Un modello che evita dichiarazioni non sicure ma non fornisce valore, o un modello che offre dettagli personalizzati ma omette un’importante salvaguardia, non soddisfa entrambi gli obiettivi.
Esempio pratico
Per la domanda “Perché la mia regola è ritardata?”, una risposta che invita semplicemente a consultare un medico è sicura ma poco utile. Una risposta che elenca solo cause di stile di vita è più utile ma incompleta sotto il profilo della sicurezza medica. Flo voleva risposte che bilancino entrambi gli aspetti: informazioni utili, contesto adeguato e salvaguardia appropriata.
Il framework di valutazione
Il team medico, prodotto e engineering di Flo ha creato un framework di valutazione che scompone il rischio medico in rubriche specifiche valutabili coerentemente. Per esempio, dopo aver notato che le risposte ai sintomi risultavano troppo rassicuranti, Flo ha introdotto una regola “cause equilibrate” che richiedeva la copertura di cause sia benigne sia potenzialmente gravi quando pertinente. Queste rubriche si sono poi trasformate in giudici IA, con definizioni, istruzioni di rating e casi di training.
Validazione dei giudici
I giudici sono stati validati su casi sintetici e su casi anonimizzati provenienti da esperimenti con utenti reali. Quando un giudice IA non concordava con un’assegnazione umana iniziale, revisori clinici a cieco decidevano la “ground truth”. Una parte di questi casi è stata poi utilizzata per perfezionare i giudici, mentre l’altra è rimasta riservata per misurare le prestazioni.
Il segnale di reward e l’addestramento RLHF
Con il sistema di valutazione in funzione, Flo ha potuto usare gli stessi giudici come segnale di reward per l’addestramento. Il framework finale conteneva 26 giudici suddivisi in tre categorie. Creare un dataset di fine‑tuning etichettato manualmente avrebbe richiesto un notevole impegno clinico per ogni esempio. Flo ha quindi concentrato l’esperienza dei suoi esperti su progettare e calibrare il sistema di valutazione, che poi poteva etichettare i candidati di training su larga scala.
Pipeline di generazione dati sintetici
Il pipeline ha generato più di 15.000 domande sintetiche usando principi che privilegiano la privacy e ha creato coppie di training senza risposte annotate da umani. Le entrate sono state ottenute da segnali generati da modelli o aggregati in modo anonimo, evitando il testo libero scritto dagli utenti o informazioni identificabili.
L’addestramento con RLHF
Flo ha adottato un approccio di fine‑tuning per rinforzo (RLHF) che genera più risposte candidate durante l’addestramento, utilizza il sistema di valutazione per selezionare le più robuste e regola il modello affinché la qualità sia incorporata nei pesi. Questo evita la costosa ricerca best‑of‑N a ogni richiesta di produzione.
Il problema di sicurezza iniziale
La prima versione ha mostrato un miglioramento dell’utilità ma una stabilità della sicurezza medica. Il motivo è stato che i prefatti di preferenza non distingueva abbastanza tra i diversi gradi di qualità medica.
Risoluzione con punteggio di sicurezza graduato
Per affrontare ciò, Flo ha aggiunto un punteggio di sicurezza graduato. Le risposte che superavano il filtro binario di sicurezza sono state ri‑classificate secondo il grado di aderenza ai criteri medici, creando prefatti con un contrasto di sicurezza più marcato.
L’infrastruttura di training
La generazione‑valutazione‑selezione‑addestramento su scala richiede un grande uso di calcolo. Lo stack di training di Flo combinava Databricks AI Runtime, LLM Foundry e Compose‑RL, con MLflow per il tracking e checkpoint. AI Runtime forniva l’ambiente GPU serverless, LLM Foundry gestiva l’addestramento distribuito e Compose‑RL aggiungeva il layer di ottimizzazione delle preferenze.
Specifiche tecniche
Per il fine‑tuning Flo ha impiegato 32 GPU NVIDIA H100 con PyTorch e Fully Sharded Data Parallel (FSDP), eseguendo SFT seguito da DPO tramite LLM Foundry e Compose‑RL. Questa configurazione ha permesso agli ingegneri di utilizzare calcolo GPU on‑demand per l’addestramento deep learning distribuito, passare dalla generazione di dati sintetici all’addestramento senza dover configurare manualmente cluster GPU per ogni esperimento.
Risultati misurabili
Il workflow ha prodotto miglioramenti tangibili in entrambe le dimensioni che Flo cercava. Il primo modello valutato ha ottenuto una punteggio di sicurezza medica del 34 % e un utilità del 42 % nella benchmark. Solo il 16 % delle risposte soddisfaceva entrambi i criteri contemporaneamente.
Dopo il fine‑tuning, la sicurezza medica è salita al circa 61 %, l’utilità al 76 % e la punteggio combinato è passato dal 16 % al 47 % (quasi triplo rispetto all’inizio). Il 47 % di punteggio combinato è stato un traguardo significativo, ma il risultato più duraturo è stato il sistema di valutazione e addestramento riutilizzabile che Flo ha creato.
Il futuro e l’aggiornamento dei modelli
Flo intende portare avanti questo sistema man mano che evolvono i modelli sottostanti. Il team prevede di applicarlo a modelli open‑source più recenti, tra cui Gemma, Qwen e Kimi, mantenendo i criteri di sicurezza medica e utilità già sviluppati e validati.
Il ruolo di Databricks AI Runtime
Con Databricks AI Runtime come base del ciclo di addestramento, Flo può iterare su nuovi modelli senza dover riprogettare l’intero stack di calcolo, riducendo tempi e costi e garantendo una rapida evoluzione del prodotto.
