Transformers Nomes Dos Carros
Gerando nomes de carros com Transformers: um guia prático
Você provavelmente já tentou usar modelos como GPT ou BERT para gerar nomes fictícios de veículos e se deparou com resultados estranhos. Carros que parecem seres híbridos de montadoras chinesas com modelos europeus dos anos 90. Isso é normal. O problema não é o modelo, é como você o configura. O conceito aqui é simples na teoria mas chato na prática: você pega um modelo Transformer pré-treinado e o ajusta (fine-tune) ou usa com prompting para gerar sequências que soam como nomes reais de carros. Pode ser um GPT-2, um LLaMA, ou qualquer coisa similar. A diferença entre um resultado decente e um lixo completo geralmente está nos dados de treino e no tokenizador. Eu configurei um pipeline desses há cerca de dois anos usando um GPT-2 fine-tunado com uma lista de nomes de carros brasileiros e americanos. O resultado inicial era absurdamente pior do que eu esperava. O modelo gerava coisas como "Civicor 200X" ou "Fiorino Turbo Max". O problema? O tokenizador do GPT-2 padrão não lida bem com nomes próprios em português. "Corolla" vira três tokens separados e o modelo perde a estrutura fonética.
A solução que funcionou foi mais simples do que parecia: trocar o tokenizador por um baseado em character-level para a parte de geração de nomes, mantendo o BPE original para o resto do pipeline. Isso custou cerca de 30% a mais de tempo de inferência, mas a qualidade dos nomestriplicou. Nomes como "Cascavel", "Tupã", "Jaguaribe" começaram a aparecer com frequência razoável. Se você quer só testar rápido sem implementar do zero, dá pra usar o Hugging Face Transformers junto com um dataset como o "car-names-br" disponível no HF Hub. O código base émente cinqüenta linhas de Python com pipeline de text-generation. Mas saiba desde já: o modelo padrão vai entregar merda. Você precisa filtrar, re-ranking, e muito probablemente vai precisar ajustar hiperparâmetros manualmente.
Como configurar o pipeline passo a passo
Primeiro, escolha o modelo base. Para geração pura de nomes, eu recomendo começar com gpt2-medium ou gpt2-large. Modelos menores como o gpt2-small economizam VRAM mas geram padrões repetitivos perigosos. Modelos maiores que o medium costumam ser overkill para essa tarefa específica e só aumentam o tempo de geração sem ganho proporcional. Instale as dependências necessárias. pip install transformers datasets torch. Nada excepcional aqui. Se estiver rodando em CPU, espere uns cinco segundos por nome gerado com um gpt2-medium. Em GPU, cai para cerca de 300 milissegundos. A configuração do tokenizer é onde a maioria das pessoas erra. Eu já vi gente tentar forçar o GPT-2 tokenizer original a lidar com nomes como "Corsa", "Celta", "Palio" e chorar depois. O tokenizador BPE vai quebrar essas palavras em pedaços arbitrários. A workaround que encontrei foi criar um vocabulário customizado com os nomes mais comuns do setor automotivo brasileiro e americano, rodando um training de novo tokenizador com o dataset do Hugging Face. Leva cerca de vinte minutos num notebook M1 com 16GB de RAM.

Para o fine-tuning, use cerca de cinco mil exemplos de nomes de carros. Isso soa pouco, mas é suficiente para o modelo capturar os padrões morfológicos. Coisas como sufixos ("-ola", "-etti", "-or"), prefixos geográficos ("Nova", "Serra"), e a tendência de usar números (o famoso "200", "2.0", "Turbo"). Meu primeiro fine-tune com apenas oitocentos exemplos resultou em 80% dos nomes gerados terminando em "ola" ou "etti". A variedade era pobre demais. Os hiperparâmetros que funcionaram para mim foram: learning rate de 2e-5, batch size de 16, e 15 epochs com early stopping no validation loss. O modelo começou a overfit por volta do epoch doze, então o early stopping salvou o resultado final. Sem ele, os nomes gerados ficaram cada vez mais repetitivos até o fim do treino. Na geração propriamente dita, use temperature entre 0.7 e 0.9. Temperature baixa (abaixo de 0.5) produz nomes extremamente conservadores que parecem cópias diretas de nomes existentes. Temperature alta (acima de 1.0) cria combinações surrealistas como "Kamazion XTR" que soam impossíveis. O sweet spot fica entre 0.75 e 0.85 dependendo do quão criativo você quer ser.
Uma armadilha comum é não definir um max_new_tokens adequado. Se você deixar o modelo gerar livremente, ele pode produzir sequências de vinte ou trinta tokens que formam frases em vez de nomes. Limitar para cinco a oito tokens novos funciona na maioria dos casos. Eu ajustei isso automaticamente detectando quando o modelo começa a gerar artículos ou preposições, mas isso exige lógica extra que nem sempre vale o esforço.
Alternativas e quando usar cada uma
Se o fine-tuning parece demais trabalho, existe a opção de usar zero-shot prompting com modelos maiores como LLaMA 3 ou Mistral. A vantagem é que você não precisa treinar nada. A desvantagem é que o modelo tende a repetir nomes existentes em vez de criar neologismos. Para brainstorming de nomes reais, isso pode ser útil. Para criação genuinamente nova, o fine-tuning continua sendo a melhor opção. Outro enfoque que vale considerar é o uso de modelos específicos para named entity recognition. Se o seu objetivo não é gerar nomes mas sim extrair e classificar nomes de carros de textos, modelos como o BERT-base-finetuned-ne Span já fazem isso razoavelmente bem sem precisar de fine-tuning adicional. É um problema diferente, mas muitas pessoas chegam aqui confundindo as duas tarefas. O custo computacional real de ter um pipeline desse rodando em produção é pequeno se você gerar nomes sob demanda. Cada requisição gasta cerca de 0.002 dólares em GPU cloud. O problema aparece quando você precisa gerar milhares de nomes de uma vez para popular um banco de dados. Aí o custo sobe e o tempo de espera também. Nesse caso, pré-computar os nomes e armazená-los em um arquivo JSON ou banco de dados leve é muito mais eficiente.

Um detalhe que poucos mencionam: a diversidade dos nomes gerados escala sub-linearmente com o tamanho do modelo. Um GPT-2 large gera nomes qualitativamente melhores que um small, mas a variação entre os nomes é surpreendentemente similar. O fator limitante é o vocabulário e os dados de treino, não a capacidade do modelo em si. Já vi pessoas gastarem três vezes mais em hardware para um ganho de talvez quinze por cento em diversidade de saída. Se você estiver trabalhando com nomes de carros brasileiros especificamente, considere a possibilidade de nomes que soem estrangeiros mas sejam facilmente pronunciáveis em português. O modelo nativo em inglês tende a forçar grafias como "Zxion" ou "Phantom" que são difíceis de adaptar. Filtrar os resultados com um validador ortográfico português remove muita coisa ruim antes mesmo de você ver o resultado final. Acho que cobre o essencial. O campo é mais simples do que muita gente vende, mas também mais frustrante do que parece à primeira vista. Se tiver dúvidas específicas sobre algum passo, dá pra investigar nos repositórios do Hugging Face. Tem gente compartilhando configs que funcionam melhor do que o padrão.
Galeria
-
TRANSFORMERS 4 - Conheça os novos carros e robôs do filme - Portal ... -
Transformers Cars Names -
Transformers Cars Names