Meta ha costruito un sistema che migliora le raccomandazioni pubblicitarie sfruttando la capacità di inferenza inattiva nella nostra flotta. Due leve di elasticità nel sistema permettono al lavoro di raccomandazione di espandersi su capacità opportunistica, senza compromettere le prestazioni di base. Questo post descrive come abbiamo progettato e ora operiamo il sistema su larga scala a Meta e come genera un valore significativo per gli inserzionisti ed efficienza di capacità.

Le flotte di inferenza affrontano un paradosso di capacità: possono essere globalmente vincolate mentre significative sacche di capacità rimangono localmente inattive. A Meta, abbiamo costruito un sistema che aggrega queste sacche in un pool di capacità opportunistica condivisa e le trasforma in migliori raccomandazioni pubblicitarie. Utilizzando altrimenti capacità inattiva, il sistema aiuta le persone a vedere annunci più pertinenti e migliora i risultati per gli inserzionisti senza richiedere ordini di capacità aggiuntivi.

L'utilizzo sicuro di questa capacità opportunistica è difficile. È distribuita tra allocazioni di capacità di proprietà dei team, regioni e tipi di acceleratore, e può essere recuperata con poco preavviso. Il sistema di inferenza per gli annunci deve quindi adattare il carico di lavoro ai cambiamenti della capacità di fornitura senza sovraccaricare la capacità dedicata che serve il carico di lavoro di base.

Affrontiamo questa sfida con due leve di elasticità complementari. Rank More Ads (RMA) regola il numero di candidati valutati dalle fasi di ranking. Serve Better Models (SBM) regola la condivisione delle richieste instradate a un modello più potente. L'isolamento fisico e logico protegge la capacità riservata per il serving di base. Loop di feedback separati controllano il volume dei candidati RMA e la copertura del modello SBM, mentre lo smaltimento del carico basato sul valore sia sui server che sui client permette al sistema di degradare in modo graduale quando la capacità viene improvvisamente recuperata. Insieme, questi meccanismi permettono al lavoro opzionale di espandersi e contrarsi con la capacità opportunistica, proteggendo latenza e affidabilità.

Il Paradosso della Capacità di Inferenza: Globalmente Vincolata, Localmente Inattiva

Le flotte di inferenza devono mantenere abbastanza capacità per soddisfare la domanda sotto obiettivi rigorosi di latenza e affidabilità. Tuttavia, domanda e capacità raramente allineano perfettamente nel tempo, nelle regioni, nelle combinazioni di risorse e nei tipi di acceleratore. La capacità può quindi rimanere inattiva in parti di una flotta anche quando la flotta è globalmente vincolata. Cause comuni includono:

    • Mancanza di corrispondenza tra provisioning di picco e variazione della domanda: le flotte di inferenza devono essere provisionate per la domanda di picco, mentre il traffico varia a seconda dell'ora del giorno e della stagione. La capacità necessaria durante i periodi di picco può quindi rimanere temporaneamente inattiva quando la domanda è più bassa.
    • Mancanza di corrispondenza tra timing dello sviluppo del modello e della consegna della capacità: la capacità di inferenza arriva secondo le tempistiche della catena di approvvigionamento, mentre i modelli vengono sviluppati e lanciati su programmi separati. Questo crea un divario tra quando la capacità diventa disponibile e quando i modelli sono pronti a consumarla.
    • Mancanza di corrispondenza del rapporto di risorse regionali: i carichi di lavoro di inferenza richiedono acceleratori nonché risorse di supporto come le CPU. Quando queste risorse non sono disponibili nelle proporzioni richieste, una risorsa può rimanere inattiva mentre un'altra limita la capacità di serving.
    • Mancanza di corrispondenza del tipo di acceleratore: le flotte di inferenza possono coprire più fornitori di acceleratori, generazioni e architetture. I carichi di lavoro non sono sempre portabili tra questi tipi di acceleratore, il quale può lasciare capacità bloccata su hardware che non può servire immediatamente la domanda disponibile.

Queste mancate corrispondenze creano un paradosso di capacità di inferenza su larga industria: una flotta può essere globalmente vincolata mentre significative sacche di capacità rimangono localmente inattive. Su larga scala a Meta, queste sacche temporanee possono collettivamente rappresentare una capacità sostanziale e creare migliori raccomandazioni pubblicitarie quando utilizzate in modo sicuro.

Dalle Prenotazioni Frammentate a un Pool di Capacità Opportunistica Condivisa

Su larga scala in una flotta eterogenea a Meta, la capacità di inferenza inattiva istantanea è inevitabile - anche con una pianificazione proattiva progettata per minimizzare le incongruenze strutturali. Tuttavia, poiché questa capacità è intrinsecamente legata a fluttuazioni della domanda di base, porta con sé vincoli operativi distinti: è prevedibile (può essere recuperata in qualsiasi momento), altamente volatile nella sua disponibilità e non garantisce alcuna lunga durata.

Per consumare con successo questa risorsa volatile senza compromettere le prestazioni di base, i carichi di lavoro devono presentare determinate proprietà strutturali:

    • Un alto grado di elasticità del carico di lavoro: il carico di lavoro può rapidamente aggiungere o rimuovere una grande quantità di lavoro opzionale mentre il pool cambia, senza influire sulle aspettative di base.
    • Qualità sostenibile su larga scala: il carico di lavoro può continuare a migliorare significativamente la qualità dell'output nell'intervallo che il pool opportunistico può fornire. Questo tipo di carico di lavoro spesso utilizza già una grande quantità di capacità dedicata a causa di questa proprietà.
    • Dipendenze cross-service limitate: un carico di lavoro autocontenuto riduce il numero di sistemi a monte e a valle che devono rispondere a una capacità volatile.

Due Leve di Elasticità Complementari

Basandosi su queste proprietà strutturali, abbiamo identificato due leve complementari che soddisfano questi criteri per consumare questa capacità inattiva e generare un significativo valore aggiuntivo.

Rank More Ads (RMA)

Per ogni richiesta utente, il sistema di raccomandazione pubblicitaria deve selezionare un piccolo numero di annunci da milioni di candidati in meno di un secondo. Il sistema utilizza una sequenza di fasi di ranking in cui modelli di machine learning sempre più potenti valutano insiemi di candidati progressivamente più piccoli. Le fasi successive valutano solo i migliori candidati dalla fase precedente.

RMA aumenta il numero di candidati valutati dalle fasi di ranking quando la capacità opportunistica è disponibile. Valutare più candidati aumenta la probabilità di trovare annunci pertinenti per l'utente. Poiché i candidati aggiuntivi passano attraverso a monte pesanti per CPU (ad esempio, recupero, elaborazione delle feature) nonché inferenza pesante per acceleratore, RMA richiede generalmente sia surplus di CPU che di acceleratore.

Serve Better Models (SBM)

L'valutazione degli annunci può utilizzare modelli con diversi livelli di complessità. Modelli più potenti possono migliorare la qualità della previsione, ma non è efficiente utilizzarli per ogni richiesta con capacità dedicata.

SBM cambia la condivisione delle richieste valutate dai modelli più potenti mentre cambia la capacità dell'acceleratore. Mantiene costante il numero di annunci che entrano nelle fasi di ranking, quindi la domanda di CPU a rimane relativamente stabile. Questo permette a SBM di utilizzare un surplus di acceleratore che RMA non può consumare.

Il componente router del modello SBM utilizza segnali di valore della richiesta per dare priorità alle richieste che si prevede beneficeranno maggiormente da un modello più potente.

Perché Entrambe le Leve Sono Necessarie

Le due leve consumano diverse combinazioni di risorse. RMA richiede sia capacità di CPU che di acceleratore, mentre SBM può utilizzare la capacità di acceleratore senza aumentare sostanzialmente il lavoro della CPU a monte. Insieme, possono utilizzare una gamma più ampia di capacità opportunistica di quanto possa fare una leva da sola.

L'impatto incrementale di ogni leva cambia anche con il traffico, la copertura attuale e la miscela di risorse disponibile. In un dato momento, la prossima unità di capacità opportunistica può mostrare annunci più pertinenti valutando candidati aggiuntivi per servire annunci migliori o instradando più richieste a un modello potente per una maggiore accuratezza di previsione. Periodicamente ajustiamo l'allocazione tra RMA e SBM in base alle loro prestazioni misurate e ai requisiti di risorse.

Utilizzo Sicuro della Capacità Opportunistica per l'Inferenza Pubbitaria

La capacità opportunistica può essere recuperata più rapidamente dei loop di controllo che regolano il lavoro su una grande flotta di serving. Progettiamo quindi il sistema attorno a un requisito - perdere la capacità opportunistica può ridurre il lavoro di ranking incrementale, ma non deve sovraccaricare la capacità che serve il carico di lavoro di base. Sosteniamo questo requisito attraverso obiettivi di instradamento isolati, due loop di feedback specifici per il carico di lavoro e un rapido smaltimento locale del carico.