Porque o modelo corre noutra máquina
Na máquina que serve este sítio não corre nenhum modelo de linguagem. Os resumos são calculados num segundo aparelho que vai buscar pedidos, faz o trabalho e traz as frases de volta.
A razão é aritmética. Um modelo de 3B ocupa mais de um gigabyte de memória e precisa de segundos por resposta. A consulta mais pesada de toda esta aplicação demora 581 milissegundos. Pôr as duas coisas na mesma placa significa que as imagens de contador de 379 000 contadores esperam atrás de um gerador de texto — e são elas o produto a sério.
O que custa e o que compra
Custa uma segunda máquina e uma fila. Os pedidos saem no máximo vinte de cada vez; a fila tem tecto e, quando está cheia, não nasce mais nada de novo — as frases já escritas continuam visíveis. Um resumo com uma semana está bem. Um resumo em falta está bem. Uma página de estatísticas lenta porque na mesma placa outra coisa está a pensar, não está.
Compra que o caminho da contagem nunca partilhe a máquina com algo imprevisível. Desenhar uma imagem de contador é uma porção de trabalho pequena e limitada. Gerar texto não é: a amplitude medida aqui para uma frase vai de 5,4 a 54,3 segundos, um fator dez entre o caso rápido e o lento, e nada disso o Pi consegue ver de antemão.
O que sai de casa
Esta é a parte que tinha de estar decidida antes de se construir seja o que for, porque é a parte que depois já não se conserta.
A segunda máquina recebe apenas números que na página de estatísticas do contador já estão públicos, e apenas de contadores cuja página de estatísticas é pública — nem privada, nem protegida por palavra-passe. O worker não fica a saber nada que um visitante dessa página não pudesse ler abrindo-a.
Isso não é um feliz efeito secundário de como o código saiu. A consulta dos candidatos filtra por isso, e sem esse filtro a funcionalidade inteira seria a entrega de dados alheios a um segundo aparelho. Não existe versão de «vamos ter cuidado com isso» tão boa como não enviar.
A forma geral
Daqui saíram duas regras que valem mais do que a própria funcionalidade.
Trabalho ilimitado não pertence ao caminho limitado. Tudo aquilo cujo tempo de execução não se consegue prever dentro de uma ordem de grandeza não pertence à máquina que tem de responder em milissegundos. Não «costuma correr bem» — o que conta é o caso lento, e esse chega sempre.
Decide o que pode sair antes de decidir o que constróis. Se a resposta tivesse sido «o worker também precisa dos contadores privados», a reação certa não teria sido garantir a transferência. Teria sido que a funcionalidade não abrange contadores privados — que é exatamente o que faz.