Sobre o projeto
## Treinar LLM do Zero
Este repositório fornece um método direto e de ponta a ponta para treinar seu próprio modelo de linguagem de grande escala (LLM), desde o download de dados brutos até a geração de texto. Foi criado por Fareed Khan e é baseado na arquitetura Transformer do artigo "Attention is All You Need". O projeto é projetado para ser acessível a estudantes, desenvolvedores e pesquisadores, com cada algoritmo implementado do zero em PyTorch puro (sem usar bibliotecas como `trl`, `peft` ou `transformers`).
### Pipeline Principal
O repositório guia você por uma jornada completa de treinamento de LLM:
```
texto bruto -> tokens -> um Transformer -> perda de próximo token -> um modelo base
modelo base -> SFT -> Modelo de Recompensa -> {PPO, DPO} -> GRPO -> avaliação e chat
```
### Principais Recursos
- **Implementação do Zero**: Todos os modelos e algoritmos são escritos à mão em PyTorch, proporcionando uma compreensão profunda dos mecanismos subjacentes.
- **Guia Passo a Passo**: O README e o código são estruturados para seguir um caminho lógico, com explicações claras e blocos de código.
- **Múltiplas Etapas de Treinamento**: Cobre pré-treinamento, ajuste fino supervisionado (SFT), treinamento de modelo de recompensa e métodos avançados de aprendizado por reforço como DPO, PPO e GRPO.
- **Prático e Flexível**: Inclui recursos opcionais de economia de memória (AMP, checkpointing de gradiente, acumulação de gradiente) para treinar modelos maiores em hardware limitado.
- **Ferramentas Abrangentes**: Inclui scripts para preparação de dados, treinamento, avaliação e um painel de controle Streamlit para monitoramento.
### Estrutura do Código
O repositório é organizado em módulos claros:
- `src/models/`: Contém o modelo Transformer construído a partir de componentes pequenos e reutilizáveis (MLP, atenção, blocos).
- `src/post_training/`: Implementa SFT, modelos de recompensa, PPO, DPO, GRPO, avaliação e inferência.
- `scripts/`: Contém todos os scripts executáveis para cada etapa do pipeline.
- `config/` e `configs/`: Arquivos de configuração (Python e JSON) para hiperparâmetros do modelo e configurações de treinamento.
- `data_loader/`: Iteradores de lote para diferentes tipos de dados.
- `ui/`: Um painel de controle Streamlit para interagir e monitorar o modelo.
- `docs/`: Um site de documentação com teoria e diagramas.
### Começando
1. **Clone e Instale**: Clone o repositório e instale-o em modo editável usando `pip install -e .`. Extras opcionais estão disponíveis para recursos específicos (treinamento, UI, docs).
2. **Prepare os Dados**: Use os scripts fornecidos para tokenizar conjuntos de dados como The Pile (para pré-treinamento), Alpaca, Dolly e GSM8K (para ajuste de instruções) e Anthropic HH-RLHF (para aprendizado de preferências).
3. **Construa e Treine o Modelo**: Comece com um pequeno modelo de 13M de parâmetros usando `scripts/train_transformer.py` ou use o mais avançado `scripts/pretrain_base.py` para modelos maiores com recursos como treinamento distribuído e acumulação de gradiente.
4. **Pós-Treine e Use o Modelo**: Ajuste o modelo base com SFT, treine um modelo de recompensa e aplique técnicas de RLHF como DPO ou PPO para alinhar o modelo com preferências humanas. Finalmente, use os scripts de avaliação e chat para avaliar e interagir com seu modelo.
### Exemplo de Saída
Aqui está um exemplo de texto gerado por um modelo treinado de 13M de parâmetros:
```
Em ***1978, o parque foi devolvido à placa de fábrica que
o público compartilha com a parte inferior da cerca eletrônica que
segue das cidades da Estação. O Canal das nações ocidentais
antigas foi confinado ao ponto da cidade. As vilas foram diretamente
ligadas a cidades na China que se revoltam contra o orçamento dos EUA e em
Odambinais é incerto e a fortuna estabelecida em áreas rurais.
```
### Documentação
O repositório inclui um site de documentação com teoria mais detalhada, diagramas e explicações, disponível no link fornecido no README.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.