Perché il modello gira su un'altra macchina
Sulla macchina che serve questo sito non gira alcun modello linguistico. I riepiloghi vengono calcolati su un secondo dispositivo che ritira gli incarichi, fa il lavoro e riporta indietro le frasi.
Il motivo è aritmetica. Un modello da 3B occupa più di un gigabyte di memoria e richiede secondi per risposta. L'interrogazione più pesante di tutta questa applicazione dura 581 millisecondi. Mettere le due cose sulla stessa scheda significa che le immagini di 379.000 contatori aspettano dietro un generatore di testo — e sono loro il prodotto vero.
Quanto costa e cosa compra
Costa una seconda macchina e una coda. Gli incarichi escono al massimo venti alla volta; la coda ha un tetto, e quando è piena non nasce più nulla di nuovo — le frasi già scritte restano visibili. Un riepilogo vecchio di una settimana va bene. Un riepilogo mancante va bene. Una pagina di statistiche lenta perché sulla stessa scheda qualcos'altro sta pensando, no.
Compra che il percorso del conteggio non condivida mai la macchina con qualcosa di imprevedibile. Disegnare un'immagine di contatore è una quantità di lavoro piccola e limitata. Generare testo non lo è: l'intervallo misurato qui per una frase va da 5,4 a 54,3 secondi, un fattore dieci fra il caso rapido e quello lento, e nulla di tutto ciò il Pi può vederlo in anticipo.
Che cosa esce di casa
Questa è la parte che andava decisa prima di costruire qualsiasi cosa, perché è la parte che dopo non si aggiusta più.
La seconda macchina riceve soltanto numeri che sulla pagina di statistiche del contatore sono già pubblici, e soltanto da contatori la cui pagina di statistiche è pubblica — non privata, non protetta da password. Il worker non viene a sapere nulla che un visitatore di quella pagina non potrebbe leggere aprendola.
Non è un felice effetto collaterale di come è venuto il codice. L'interrogazione dei candidati filtra su questo, e senza quel filtro l'intera funzione sarebbe la consegna di dati altrui a un secondo dispositivo. Non esiste una versione di «ci staremo attenti» buona quanto: non mandarlo.
La forma generale
Ne sono uscite due regole che valgono più della funzione stessa.
Il lavoro non limitato non sta sul percorso limitato. Tutto ciò il cui tempo di esecuzione non si può prevedere a meno di un ordine di grandezza non sta sulla macchina che deve rispondere in millisecondi. Non «di solito va bene» — conta il caso lento, e quello arriva sempre.
Decidi che cosa può uscire prima di decidere che cosa costruire. Se la risposta fosse stata «il worker ha bisogno anche dei contatori privati», la reazione giusta non sarebbe stata mettere in sicurezza il trasferimento. Sarebbe stata che la funzione non copre i contatori privati — ed è esattamente quello che fa.