Um projeto de treinamento de modelo de linguagem completamente do zero, utilizando GPUs T4 gratuitas do Google Colab.
GPTConfig(
block_size=1024, # Tamanho do contexto
vocab_size=32006, # Tamanho do vocabulário
n_layer=20, # Número de camadas transformer
n_head=16, # Número de cabeças de atenção
n_kv_head=4, # Cabeças key-value (GQA)
n_embd=1024, # Dimensão dos embeddings
dropout=0.05, # Taxa de dropout
bias=False, # Sem bias nos layers lineares
tie_word_embeddings=True # Compartilha embeddings entrada/saída
)Parâmetros totais: ~280M parâmetros
- ✅ Treinamento from scratch - Nenhum modelo pré-treinado
- ✅ Free Tier friendly - Otimizado para T4 de 15GB
- ✅ Grouped Query Attention (GQA) - Eficiência melhorada
- ✅ Checkpointing automático - Salva a cada 100 iterações
- ✅ Mixed precision training - Uso eficiente de memória
- ✅ PyTorch 2.0 compile - Otimizações de performance
Status atual: ~26,500 iterações
Iteração: 26515
Loss atual: 2.6209
Loss média: 2.6964
Learning rate: 0.000030
Tempo decorrido: 38.58 minutos
Tempo estimado restante: ~39 minutos
- Batch size: 9
- GPU RAM: 15GB T4
- Tempo por iteração: ~215 segundos (5 batches)
- Throughput: ~42 tokens/segundo
# Retomar treinamento do último checkpoint
python c32kImproved.pyEntão conecte-se ao site local em http://127.0.0.1:8088
Há três formatos de prompts:
- <|query|><|answer|> basicamente o instruct tradicional onde o usuário faz uma requisição e espera uma resposta.
- <|query|><|hole|><|answer|> o novo formato think onde ele faz um pensamento prévio e gera uma resposta ( o token <|hole|> foi usado porque o vocabulário já estava feito antes de surgir o método thinking de geração)
- Auto-Complete que a forma antiga de de completar o texto fornecido com texto gerado pelo modelo.
.
├── c32kimproved.py # Script principal em python/flask para permitir conversar com o modelo.
├── model3.py # O modelo em si
├── chekpoint/ckpt.pt # O checkpoint atual
├── vocab/byte-level-bpe.tokenizer.32k.json # Vocabulário de 32k tokens
├── templates/chat.html # Template flask para a página
└── README.md
Este projeto demonstra:
- Como treinar modelos de linguagem em hardware limitado
- Técnicas de otimização de memória para GPUs pequenas
- Implementação de GQA (Grouped Query Attention)
- Uso efetivo de PyTorch 2.0 compilation
- Estratégias de checkpointing para sessões gratuitas
- Tempo de sessão: Colab Free tem limite de 12h
- Desconexões: Requer checkpointing frequente
- Batch size pequeno: Limitado pela memória da T4
- Velocidade: ~40x mais lento que GPUs A100/H100
As vezes pago o A100 e dá um bom salto no treinamento. Por enquanto nesse modelo só paguei duas vezes. Eu ligo quase religiosamente todos os dias o treinamento no Colab usando as T4 gratuitas. Consigo em média 150 iterações por dia.
- A muitos anos faço scrapy de sites então tem conteúdo de algumas décadas.
- Livros
- Artigos cientificos
- Blogspots e Wordpress blogs em sua maioria em português
- Wikipédia dump em português
- PDFs aleatórios de nichos achados pela internet como juridicos, revistas abertas, apostilas
- CulturaX
- Instructs como Alpaca, OpenAssistant, Cabrita, gsm8k, thinking
- Muitos instructs que eu mesmo faço automatizado utilizando ChatGPT, Gemini
Não, eu não fornecerei os datasets por motivos óbvios.
Não é um modelo seguro! Eu não sou uma empresa com estrutura para limpar textos além do mais o modelo é pequeno então ele fatalmente poderá gerar textos discriminatórios, ofensivos, sexuais e de horror.
Contribuições são bem-vindas! Especialmente:
- Otimizações de memória
- Técnicas de data augmentation
- Melhorias no código
- Documentação
MIT License - Sinta-se livre para usar em seus projetos!
- Google Colab pela infraestrutura gratuita
- Comunidade PyTorch
- Papers de referência: GPT-2, GPT-3, LLaMA
⚡ Treinado com determinação e GPUs gratuitas! ⚡
