SmolGPT: implementação mínima em PyTorch para treinar pequenos LLMs do zero
(github.com/Om-Alve)- Projeto simples de treinamento de LLM baseado em PyTorch, projetado para fins educacionais, aplicando treinamento eficiente e técnicas modernas de amostragem
Recursos
- Base de código mínima: implementado em PyTorch, sem abstrações complexas
- Arquitetura moderna: modelo GPT com Flash Attention, RMSNorm, SwiGLU e técnicas eficientes de amostragem
- Recursos de treinamento:
- precisão mista (bfloat16/float16)
- acumulação de gradiente
- decaimento da taxa de aprendizado com warmup
- weight decay e gradient clipping
- Suporte a datasets: processamento integrado do dataset TinyStories
- Tokenizador personalizado: integração do treinamento do tokenizador SentencePiece
Instalação
- Python 3.8+
- PyTorch 2.0+ e CUDA
- GPU moderna recomendada
Início rápido 🚀
Opção 1: ciclo completo de treinamento
- Preparar o dataset
- Iniciar o treinamento
- Gerar texto
Opção 2: usar modelo pré-treinado
- Baixar os assets
- Executar a inferência
Detalhes do modelo pré-treinado
- Treinado com o dataset TinyStories
- Vocabulário de 4096 tokens, transformer com 8 heads e 8 camadas, dimensão de embedding de 512
- Treinado por 18,5 horas com cerca de 400 milhões de tokens
- Perda de validação: 1.0491
Especificações do equipamento de treinamento
- GPU: NVIDIA L4 Tensor Core
- vCPUs: 16
- RAM: 64 GB
- VRAM: 24 GB
Observação: esta implementação foi criada para fins educacionais com base em práticas modernas de treinamento de LLM. Em ambientes de produção, é recomendável ampliar o tamanho do modelo e do dataset.
1 comentários
Opiniões no Hacker News
Um usuário mencionou que, ao implementar o GPT em C, aprendeu a importância do gerenciamento de memória e de dados. O projeto tem cerca de 1.500 linhas de código, e ele compartilhou um link do GitHub
Outro usuário explicou que o próximo passo é implementar por conta própria usando numpy. Enfatizou que é possível começar com abstrações poderosas e depois removê-las gradualmente para entender completamente o sistema
Foi compartilhado um projeto usando um notebook do Google Colab que leva cerca de 2 horas em uma GPU A100. Foi mencionado que também pode funcionar em uma conta gratuita
Foi explicado que existem vários projetos no GitHub, como o nanoGPT de Andrej Karpathy, e também outros projetos com MoE implementado
Um usuário perguntou se é possível treinar um modelo específico em um conjunto de dados específico e testar os resultados. Mencionou que está procurando um projeto open source, quer saber se GPU está disponível e deseja um contêiner Docker que possa ser substituído por CPU
Outro usuário compartilhou sua experiência de implementação usando seu próprio tokenizador multicanal. Comentou que o nome do protagonista se repete com frequência, o que o faz suspeitar de um bug
Om Alve agradeceu, dizendo que a publicação viralizou e que isso fez o esforço valer a pena
Foi comentado que é interessante que a tecnologia possa ser implementada em algumas centenas de linhas de código. Foi sugerido tentar adivinhar quantas linhas de código têm os modelos de ponta
Foi mencionado que não tem relação com o SmolLM, e foi compartilhado um link para o blog da HuggingFace
Foi perguntado se alguém poderia compartilhar exemplos do conjunto de dados de treinamento e casos de uso