Sei mesi fa la nostra bolletta mensile per i modelli linguistici ospitati era il tipo di cifra che faceva sorgere domande al reparto finance. Oggi è un decimo di quella, e i modelli sono più veloci sul nostro hardware di quanto lo siano mai stati su internet pubblico. Non abbiamo negoziato uno sconto. Non siamo passati a una fascia più economica. Abbiamo portato i modelli a casa.
Il cambiamento è iniziato come un esperimento ed è diventato uno stack. Un piccolo insieme, scelto con cura, di modelli open-weight in esecuzione su un singolo box di livello consumer ai margini della nostra rete ora gestisce la maggior parte del nostro traffico di inferenza. I modelli cloud sono ancora nel flusso, ma solo per i lavori che ne hanno davvero bisogno. Tutto il resto gira localmente, e i risparmi vanno direttamente a conto economico.
La prima lezione è stata che più grande non è meglio per ogni prompt. Un modello da 70 miliardi di parametri è impressionante, ma per riepiloghi di routine, classificazione ed estrazione strutturata è decisamente sovradimensionato. Abbiamo analizzato il traffico reale e abbiamo scoperto che circa sette richieste su dieci erano di routine. Un modello da 7 miliardi di parametri ottimizzato ha gestito quei casi con una frazione della latenza e costo per token pari a zero. Instradare in base al compito, non all'abitudine, è stato il punto di svolta.
La seconda lezione riguardava l'hardware. Avevamo supposto che ci sarebbe servito un rack di acceleratori. In pratica, una singola GPU moderna con abbastanza VRAM per contenere comodamente due o tre modelli quantizzati alla volta copriva il nostro carico di picco. La quantizzazione a pesi a quattro bit ci è costata un calo misurabile ma accettabile della qualità e ci ha restituito enormi quantità di memoria e throughput. Per la coda lunga dei lavori a bassa priorità, un fallback solo CPU con un modello più piccolo ha mantenuto il sistema reattivo quando la GPU era occupata.
La terza lezione riguardava la cache. I costi dei token si sommano quando si rivaluta la stessa finestra di contesto ancora e ancora. Abbiamo aggiunto una cache semantica davanti al livello di inferenza così che prompt quasi duplicati restituiscano una risposta memorizzata senza mai toccare il modello. Insieme a un prompt templating che elimina la cronologia non necessaria, il tasso di hit della cache è salito oltre il quaranta percento nel giro di poche settimane.
La quarta lezione riguardava l'osservabilità. Senza dashboard per latenza per modello, costo-per-milione-di-token e controlli puntuali sulla qualità, l'ottimizzazione è un gioco di ipotesi. Abbiamo strumentato ogni chiamata così da poter vedere esattamente quali percorsi erano redditizi e quali stavano silenziosamente bruciando budget.
Se stai fissando una bolletta dei modelli che non rispecchia più il valore che ne ricavi, il percorso è lineare. Analizza ciò che invii davvero, dimensiona il modello in base al compito, quantizza in modo aggressivo, memorizza in cache i duplicati e misura senza sosta. Il cloud resta per i casi difficili. Tutto il resto può girare sulla tua scrivania.
Curioso di vedere come apparirebbe il tuo traffico instradato in questo modo? Rispondi con i tuoi tre principali casi d'uso dei modelli e condivideremo la ripartizione di routing da cui partiremo.
