Skip to content

🤖 GPT-2 scale portuguese language model trained from scratch on free T4 GPUs | PyTorch 2.0 | 280M parameters | Grouped Query Attention | Colab-optimized training

Notifications You must be signed in to change notification settings

fabiovila/portulino

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Portulino - Free Tier Edition

Um projeto de treinamento de modelo de linguagem completamente do zero, utilizando GPUs T4 gratuitas do Google Colab.

📊 Especificações do Modelo

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

🎯 Características

  • 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

📈 Progresso do Treinamento

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

Métricas de Performance

  • Batch size: 9
  • GPU RAM: 15GB T4
  • Tempo por iteração: ~215 segundos (5 batches)
  • Throughput: ~42 tokens/segundo

Chat

# Retomar treinamento do último checkpoint
python c32kImproved.py

Entã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.

Screenshoot

Página do chat

Estrutura do Projeto

.
├── 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

🎓 Aprendizados

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

⚠️ Limitações

  • 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.

Dataset

A maioria dos datasets são em português

  • A muitos anos faço scrapy de sites então tem conteúdo de algumas décadas.
  • Livros
  • Artigos cientificos
  • Reddit
  • 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.

Safe

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

Contribuições são bem-vindas! Especialmente:

  • Otimizações de memória
  • Técnicas de data augmentation
  • Melhorias no código
  • Documentação

📜 Licença

MIT License - Sinta-se livre para usar em seus projetos!

🙏 Agradecimentos

  • Google Colab pela infraestrutura gratuita
  • Comunidade PyTorch
  • Papers de referência: GPT-2, GPT-3, LLaMA

⚡ Treinado com determinação e GPUs gratuitas! ⚡

About

🤖 GPT-2 scale portuguese language model trained from scratch on free T4 GPUs | PyTorch 2.0 | 280M parameters | Grouped Query Attention | Colab-optimized training

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published