Contactar o apoio

Respondemos por e-mail, normalmente em dois dias.

Para prevenir abusos, o Google reCAPTCHA verifica este envio; alguns dados são transmitidos ao Google. O script só é carregado quando abre este formulário.

← Todos os artigos

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.

consulta mais pesada581 msuma frase5,4 s54,3 s

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.

Publicidade