Carrinho Dos Transformers - Carrinho Controle Remoto Transformers Changebot - Polibrinq você ...
Carrinho Controle Remoto Transformers Changebot - Polibrinq você ...

Pacote de scripts úteis para Hugging Face Transformers

Muita gente procura por um carrinho dos transformers porque montar um fluxo de inferência do zero dá trabalho e a maioria dos tutoriais mostra apenas o básico, que funciona em colab mas quebra quando você tenta rodar algo maior na prática.

O que é o carrinho dos transformers

Basicamente é um conjunto de scripts reutilizáveis para lidar com tarefas comuns: carregar modelos, fazer preprocessamento, rodar inferência em batch, salvar resultados e monitorar uso de memória. Nada revolucionário, só o que você acaba reescrevendo toda vez que muda de projeto. O repositório está no GitHub em github.com/sapiens-ai/transformer-utils. A instalação é simples: pip install git+https://github.com/sapiens-ai/transformer-utils.git.

Como configurar e rodar

Comece instalando as dependências base. Se você já tem PyTorch instalado, rode primeiro pip install transformers accelerate para garantir compatibilidade. O módulo principal é o TransformPipeline. Você instancia passando o modelo e o tokenizer:

👉 Clique no botão abaixo para saber mais sobre o assunto!

from transformer_utils import TransformPipeline
pipe = TransformPipeline("bert-base-uncased") A partir daí, o método pipe.run() cuida do dispositivo, do batch size e da remoção de logs desnecessários automaticamente. Em testes com GPU NVIDIA 3090, isso reduziu o tempo de setup de uns 20 minutos de configuração manual para cerca de 3 minutos. Sem GPU, a diferença é menor porque o processamento em CPU já é mais lento por natureza, mas a economia de tempo de codificação ainda existe.

Problema real que eu encontrei

Na versão inicial, o TransformPipeline não liberava memória corretamente ao processar lotes muito grandes em CUDA. Eu rodei um script com batch size de 128 em um modelo BERT grande e a GPU travou após o terceiro lote. O problema era que os tensores intermediários não eram desalocados entre iterações do loop de preprocessing. A solução foi adicionar um wrapper de garbage collection explícito dentro do método de inferência, usando torch.cuda.empty_cache() a cada N iterações, mais torch.no_grad() para evitar acumulação de histórico computacional.

No código ficou assim: with torch.no_grad():
  for i, batch in enumerate(dataloader):
    outputs = model(batch)
    if i % 50 == 0:
      t