Quando a mesma entrada não produz a mesma saída cada vez, a confiança num resultado não nasce da saída em si, mas do registo das condições em que foi gerada. Para um gerador probabilístico, reprodutibilidade não significa retornar exatamente os mesmos bits; significa conseguir, de forma fiável, obter um resultado suficientemente igual nas mesmas condições. A confiança é nas circunstâncias que produziram a saída, não na saída em si.
- Produção determinística dá a mesma saída para a mesma entrada; produção probabilística amostra a partir de uma distribuição de probabilidades.
- Parâmetros como a temperatura de amostragem e a semente determinam quão volátil ou estável será a saída.
- Fixação de versão (version pinning) congela um ambiente de produção, tornando possível discernir de onde veio uma diferença.
- "Suficientemente igual" tende a significar equivalência semântica, não igualdade bit a bit.
- Audibilidade (denotability), ou capacidade de auditar, liga a explicabilidade de uma saída ao registo das condições.
- Incerteza nem sempre é um defeito; em algumas tarefas é uma característica desejada.
A linha entre produção determinística e probabilística
A produção determinística é o comportamento em que a mesma entrada produz invariavelmente a mesma saída. Dois números são somados e o resultado não muda; um ficheiro é transformado segundo uma regra e a saída é sempre idêntica. Neste terreno, a reprodutibilidade é quase dada, porque a variabilidade é inexistente.
A produção probabilística vive num terreno completamente diferente. Aqui, uma saída não é a recuperação de uma única resposta correta, mas a escolha, segundo uma distribuição de probabilidades, entre muitas continuação possíveis. O mesmo pedido gera a mesma distribuição; porém a amostra retirada dessa distribuição não tem de ser idêntica em cada execução. A variação da saída não é uma falha mas sim uma consequência do desenho do sistema.
Não ver esta distinção gera expectativas erradas. Há hábitos de depuração úteis em sistemas determinísticos que são inúteis quando aplicados tal e qual a um sistema probabilístico. A inferência "funcionou uma vez, portanto está correcto" baseia-se apenas em ter visto uma amostra da distribuição. O contrário também é verdade: uma execução má não prova que o sistema esteja avariado; pode apenas ter sido uma amostra da cauda da distribuição.
Na prática, os dois mundos tendem a misturar-se. A maioria das linhas de produção são estruturas híbridas em que partes determinísticas cercam um núcleo probabilístico. O problema é que a fronteira entre essas zonas muitas vezes é invisível. A discussão sobre reprodutibilidade é, frequentemente, um esforço para tornar essa fronteira visível: que parte é sempre a mesma e que parte é, por natureza, volátil. Sem essa clareza, não se consegue discernir se uma diferença veio de um passo determinístico ou do núcleo probabilístico. Uma abordagem madura separa primeiro essas duas regiões e depois pergunta quanto de estabilidade é razoável esperar em cada uma.
Como a temperatura e a semente afetam a estabilidade da saída
A temperatura de amostragem é um conceito geral que regula quanta diversidade é permitida ao escolher da distribuição. A baixas temperaturas a seleção concentra-se nas continuações mais prováveis; a saída torna-se mais estável e previsível, mas também mais monótona. Em altas temperaturas, regiões menos prováveis da distribuição tornam-se acessíveis; a saída diversifica-se, mas a estabilidade diminui.
A semente (seed) é outra alavanca diferente. Semente é o valor inicial que define a aleatoriedade durante a amostragem; a mesma semente, nas mesmas condições, faz seguir o mesmo percurso de amostragem. Enquanto a temperatura regula a amplitude da diversidade, a semente fixa qual caminho dentro dessa diversidade será seguido. Ambos devem ser considerados em conjunto: fixar a semente pode tornar uma execução repetível mesmo com temperatura alta.
No entanto, fixar a semente por si só não garante reprodutibilidade. A mesma semente só dá o mesmo resultado se tudo o resto no ambiente permanecer igual; qualquer alteração noutra parte do ambiente pode levar a que a mesma semente produza um percurso diferente. Por isso a semente não é a única base da estabilidade, mas apenas uma peça de uma estratégia mais ampla de congelação do ambiente.
Daqui resulta uma regra prática. Onde se quer estabilidade, reduz-se a temperatura e fixa-se a semente; onde se quer diversidade, relaxam-se ambos. O importante é que esta escolha seja consciente. A maior parte da volatilidade inesperada advém de deixar estes parâmetros por defeito em vez de os definir intencionalmente. Por isso, os valores da configuração devem ser guardados juntamente com a saída; um resultado só faz sentido se soubermos a que temperatura e com que semente foi gerado. Discutir a saída sem ver a configuração é julgar um resultado sem conhecer as condições.
O valor de fixar versões e congelar um ambiente
Para que uma saída seja reproduzível, tudo o que a produziu tem de permanecer igual. Fixar versões é a prática de prender os componentes de um ambiente de produção a um estado específico e imutável. Um ambiente fluido, que se actualiza automaticamente, é confortável mas é o inimigo silencioso da reprodutibilidade: a saída de ontem pode não repetir-se hoje, e a razão ficará invisível.
O verdadeiro valor de um ambiente congelado é tornar discernível a origem de uma diferença. Se a saída mudou e o ambiente está congelado, sabe-se que a alteração só pode provir de uma intervenção intencional e documentada. Se o ambiente é fluido, a mesma diferença pode ter inúmeras causas possíveis e nenhuma pode ser excluída com certeza. Congelar reduz o ruído e torna a causalidade visível.
Isto tem um custo. Um ambiente congelado isola também das melhorias do mundo exterior; com o tempo fica obsoleto e precisa de ser actualizado. Fixação de versão é a prática de ligar componentes e configurações de um ambiente de produção a um estado que pode ser restaurado exactamente mais tarde. A questão principal é equilibrar conscientemente entre congelar e fluir.
Uma abordagem madura costuma combinar ambos em camadas. O núcleo crítico para o qual a reprodutibilidade é importante é congelado e só é alterado por passos intencionais e registados; a camada menos crítica pode fluir mais livremente. O trade-off emerge com frequência: quanto mais se congela, mais reprodutível mas mais lenta a renovação do sistema. Também é um erro fixar esse equilíbrio uma vez e esquecer-se: um núcleo congelado pode, com o tempo, ficar desalinhado com a realidade. Por isso congelar não é uma decisão única, é uma prática sujeita a revisão periódica.
O que significa "suficientemente igual": igualdade bit a bit e equivalência semântica
Quando se fala de reprodutibilidade, a primeira ideia que surge é que duas saídas devem ser exactamente iguais caractere a caractere. Contudo, num contexto probabilístico esse critério rígido é frequentemente nem realista nem necessário. A verdadeira questão é se as duas saídas desempenham a mesma função com a mesma qualidade; isto é, procura-se igualdade a nível de bits ou equivalência semântica.
| Abordagem | O que aceita | Ponto forte | Ponto fraco |
|---|---|---|---|
| Igualdade bit a bit | Só aceita saídas exactamente idênticas | Indiscutível, fácil de auditar | Na produção volátil é muitas vezes inacessível |
| Equivalência semântica | Saídas diferentes que comunicam o mesmo significado | Realista, adaptada à linguagem natural | Definir a métrica de equivalência é subjetivo |
| Versão fixada | Mesmas condições num ambiente congelado | Permite distinguir a origem da diferença | Fica obsoleto, requer actualização periódica |
| Versão fluida | Um ambiente que é actualizado continuamente | Mantém-se atual, requer pouca manutenção | Torna difícil recuperar uma saída passada |
Escolher o critério correto depende da natureza da tarefa. Numa etapa que gera identificadores ou calcula um valor, a igualdade bit a bit é mandatória; uma pequena variação pode arruinar o resultado. Numa etapa que reescreve um texto ou gera sugestões, duas saídas diferentes podem ser igualmente correctas. Impondo o critério errado, persegue-se um problema inexistente ou deixa-se de ver um problema real.
O custo da equivalência semântica é que esta tem de ser definida. Quando se aceita que duas saídas "dizem a mesma coisa"? Sem um limiar claramente escrito, a decisão de equivalência varia entre pessoas e a medição volta a ser subjectiva. Por isso a equivalência semântica é mais flexível que a igualdade bit a bit, mas exige mais cuidado.
Como auditar e reproduzir uma saída
Poder explicar depois uma saída depende de ter registado as condições em que foi produzida. Auditar não é um acaso, é o produto de disciplina. Abaixo está uma sequência, a nível de princípios, para tornar uma saída reproduzível.
- Registe as condições que geraram a saída: o pedido completo, as configurações, a semente e a informação da versão congelada.
- Decida primeiro que tipo de equivalência procura: igualdade bit a bit ou equivalência semântica.
- Restaure o ambiente ao estado registado; execute novamente com uma versão fixada, não com uma versão fluida.
- Compare a nova saída com a anterior segundo a métrica de equivalência escolhida, sem esperar igualdade bruta.
- Se houver desvio, isole a origem mudando uma condição de cada vez para identificar qual delas causou a diferença.
- Guarde este registo juntamente com a própria saída; sem um registo, um resultado não é explicável, apenas se pode esperar que se repita.
Por baixo destes passos estão alguns conceitos chave. Separá-los clarifica a discussão.
- Auditabilidade
- A capacidade de, a posteriori, rastrear e explicar sob que condições uma saída foi gerada.
- Equivalência semântica
- A aceitação de que duas saídas diferentes ao nível literal podem transportar o mesmo significado e desempenhar a mesma função.
- Isolamento de fonte
- O método de identificar de qual condição específica provém uma diferença, mantendo todo o resto constante e alterando apenas um factor de cada vez.
O poder desta sequência é reduzir a diferença de um mistério a uma conta. Se as condições estão registadas e o ambiente está congelado, a causa de uma discrepância reduz-se a um número limitado de possibilidades. Sem registo, esperar que a mesma saída volte é pura esperança. O preço da auditabilidade é a disciplina de gravar tanto as condições quanto a saída.
Quando a incerteza não é um defeito, mas sim desejável
É fácil tratar a reprodutibilidade como um valor absoluto; contudo, nem toda tarefa a deseja. Algumas operações exigem estabilidade: um cálculo, uma identidade, ou uma verificação de regra têm de dar sempre o mesmo resultado. Outras tarefas beneficiam justamente da diversidade. Quando se quer gerar um conjunto de ideias, oferecer alternativas ou ver várias variações de um rascunho, obter sempre a mesma saída é uma limitação, não uma vantagem.
Por isso a incerteza não é um defeito absoluto; o seu valor depende da tarefa. O erro não é a existência de incerteza, mas colocá-la no lugar errado. Forçar estabilidade onde se quer diversidade empobrece a saída; permitir aleatoriedade onde se exige estabilidade arruína a confiança. A habilidade está em distinguir, passo a passo, o que cada estágio precisa.
Uma abordagem madura não procura eliminar a incerteza, mas limitá-la. Mesmo nos pontos onde a diversidade é permitida, as condições de cada variação são registadas; assim, uma variação apreciada pode ser recuperada mais tarde. Incerteza e auditabilidade não são mutuamente exclusivas: permitir volatilidade e ainda assim registar as condições torna os dois compatíveis.
À medida que o campo amadurece, a pergunta muda. No início, perguntava-se "porque é que a saída não é igual todas as vezes". Progressivamente, a pergunta torna-se "em que passos queremos variabilidade e como é que isso fica registado". O desafio é traçar claramente a fronteira entre estabilidade e diversidade para cada tarefa; essa fronteira deixa de ser uma configuração por defeito e passa a ser uma decisão de desenho consciente.
F.A.Q.
