Treinei um clone digital e ele envelheceu quinze anos
O treino de identidade com LoRA colapsou numa idade quando um descritor dominou 100% das legendas. O modelo aprende o que você mantém constante. Varie tudo que você não quer memorizado.
O treino terminou limpo. A loss convergiu de 11,4 para 0,44 em 1500 steps numa A100. Setenta e seis minutos, rank 16, 69 fotos de rosto curadas e filtradas por similaridade de embedding. Aí rodei a inferência.
A pessoa na saída era eu. Só que quinze anos mais velho.
Toda constante vira traço definidor
Toda legenda começava com o mesmo bloco:
a photo of f3l1p3, a 40s brazilian man, short dark wavy hair,
full beard with graying chin, wearing dark rectangular glasses, ...
“Graying chin” aparecia em 100% das amostras de treino. Então o modelo prendeu esse descritor ao token de identidade, não como um detalhe de cada foto.
O resultado na inferência foi sistemático:
- Escala 1.0: ruído puro. O overfit destruiu o modelo base.
- Escala 0.5: desbotado e idoso.
- Escala 0.3: estrutura reconhecível, mas uns quinze anos mais velho.
O modelo aprendeu quem eu era a partir do que ficou constante entre as amostras. Eu deixei constante a coisa errada.
Varie tudo que você não quer memorizado
As legendas precisam variar tudo que o rosto não define. Pose, expressão, luz, cenário, roupa: tudo deve variar. O que você repete em 100% das amostras, o modelo amarra ao token de identidade. Se você quer que o modelo aprenda um rosto, pare de ensinar uma idade.
Isso foi um beco sem saída. O pivô foi face injection zero-shot: uma foto de referência na hora da inferência, sem treino nenhum, sem legenda pra errar. Quando existem ferramentas melhores, não vale a pena consertar o caminho do LoRA.
Lição
Um modelo aprende o que você mantém constante. Se você quer que ele aprenda identidade, precisa variar todo o resto.