Back home

Depois que o modelo de código aberto se torna público, a primeira coisa que fica frágil é o bloqueio de versão.

Os pesos do modelo ainda podem ser obtidos, mas a versão fixa pode não ser reproduzível.

Depois que um modelo de código aberto se torna público, a versão fixa geralmente é a primeira a ser afrouxada, enquanto o arquivo de peso costuma ser o mais estável.

O nome do warehouse ainda está lá e o nome do modelo ainda está lá, mas a entrada real usada para executar avaliações, fazer regressões e conectar o tráfego geralmente não é a mesma coisa. O que extraímos hoje é main, e ainda será o mesmo caminho na próxima semana, mas o tokenizer, o modelo, o pacote de quantização, o dtype padrão e até mesmo os parâmetros recomendados no README foram alterados. O que você vê online não é “o modelo desaparece”, mas “o mesmo nome de modelo se torna outro produto”.

Depois de assumir o acesso ao modelo várias vezes, você descobrirá que o valor mais facilmente ignorado é o valor padrão. O arquivo de peso geralmente é monitorado por alguém, mas a tag padrão, a imagem padrão, o modelo padrão e o diretório de cache padrão geralmente são deixados sem supervisão. Quando uma janela de sincronização fica travada ou a estação espelho sincroniza apenas os pesos, mas não a configuração, a equipe descobrirá repentinamente que o que está segurando não é uma versão reproduzível, mas uma série de nomes flutuantes.

A entrada padrão é mais fácil de desviar do que o peso.

O arquivo de peso é estático, a entrada não.

model-name:latest Essa forma de escrever parece fácil, mas o problema é que deixa a questão de “quando atualizar” para fora. Se o upstream alterar o tokenizer, adicionar um modelo de chat ou redigitar o pacote de quantificação, o comportamento da parte de acesso mudará de acordo. As pontuações da avaliação podem flutuar apenas um pouco, mas o resultado online mudará silenciosamente de tom. A parte mais torturante da solução de problemas está aqui: tudo parece normal no log, mas na verdade, outra entrada está sendo chamada.

O que é realmente desconfortável não é a mudança em si, mas o facto de a mudança não deixar fronteiras. Enquanto o nome permanecer inalterado, a regressão, a escala de cinza e a revisão de acidentes só poderão se concentrar nos resultados e adivinhar os motivos. O nome do modelo continua lá, mas a equipe não tem como confirmar se o que eles conseguiram hoje é o mesmo produto que executou a linha de base na semana passada.

Imagens, modelos e pacotes de quantização devem ser congelados juntos

Apenas travar o peso não é suficiente.

Depois que um modelo de código aberto realmente entra no fluxo de trabalho, ele geralmente contém mais de um .bin ou .safetensors. Também trará tokenizer, modelo de chat, parâmetros de estrutura de inferência, arquivos de quantificação, download de imagens, scripts de inicialização e caminhos de cache. Se algum deles se desviar, isso poderá eventualmente mostrar que “o modelo piorou”. Na verdade, muitas vezes não é o modelo que muda, mas sim o pacote de entrega.

model:
  repo: example/model
  revision: 8f3c1a2
  tokenizer_revision: 8f3c1a2
  cache_dir: /opt/model-cache

Esse tipo de configuração parece prolixo, mas resulta em três coisas: a imagem é responsável pela disponibilidade, o número da versão e o hash são responsáveis pela reprodutibilidade e o script de inicialização é responsável por parâmetros de inferência consistentes. Sem nenhuma dessas camadas, o modelo dito “já público” só pode ser considerado um produto semiacabado. Para quem acessa, o mais importante não é se ele pode ser baixado, mas se o conteúdo baixado ainda pode produzir o mesmo conjunto de resultados três semanas depois.

O que realmente precisa ser preservado é a capacidade de reproduzir

Depois que o modelo de código aberto se tornar público, o que a equipe precisa proteger não é uma entrada misteriosa, mas sim a reprodutibilidade.

Assim que a reprodutibilidade for interrompida, a linha de base da avaliação irá desviar, os resultados A/B serão distorcidos e a reprodução acidental perderá a referência. No momento em que todos estão discutindo o problema usando o ditado “foi normal na semana passada”, o gerenciamento de versões basicamente falhou. Não faz muito sentido falar sobre as capacidades do modelo neste momento; somente apertando a versão fixa, sincronização de imagem, verificação de hash e caminho de reversão podemos estar qualificados para continuar falando sobre o efeito.

Esse tipo de modelo se parece mais com um artefato de software do que com um serviço web. Se a página da web estiver quebrada, você ainda poderá ver 500, e a versão do modelo está oscilando e, em muitos casos, isso mudará lentamente na saída. Superficialmente ainda tem o mesmo nome, mas na verdade metade do sistema foi alterado.