File size: 4,207 Bytes
58349f1
 
 
 
 
 
 
 
a006332
 
d84a1f3
58349f1
 
 
 
 
 
 
 
 
 
a006332
58349f1
a006332
58349f1
a006332
58349f1
a006332
58349f1
a006332
58349f1
 
 
 
 
 
 
 
 
 
 
a006332
 
 
 
 
58349f1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a006332
58349f1
a006332
58349f1
 
 
 
 
a006332
 
58349f1
 
 
 
a006332
 
58349f1
a006332
 
58349f1
 
 
 
a006332
 
58349f1
 
 
a006332
 
58349f1
 
 
a006332
 
58349f1
 
 
a006332
 
58349f1
 
 
 
 
 
a006332
 
58349f1
 
a006332
 
58349f1
a006332
58349f1
a006332
 
 
 
 
58349f1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a006332
d291843
 
 
492b9d3
d291843
58349f1
a006332
7a78b96
a006332
58349f1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<div align="center">
<img src="https://i.postimg.cc/52GtGkf7/file-00000000dfb071f5a6ef76a83be7ff92.png" alt="Delta Ultra Mini" width="400"/>
</div>

---

<div align="center">

# Delta Ultra Mini

**Um LLM compacto, educacional e experimental criado pela PyraLabs.**

[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![Params](https://img.shields.io/badge/Parâmetros-50M-blue)]()
[![Context](https://img.shields.io/badge/Context-512_tokens-blueviolet)]()
[![Arch](https://img.shields.io/badge/Arquitetura-Decoder--Only-orange)]()
[![Tokenizer](https://img.shields.io/badge/Tokenizer-BPE-lightgrey)]()

</div>

---

> **Delta Ultra Mini** é um modelo Transformer decoder-only causal de ~50M parâmetros, projetado para aprender como um LLM compacto é estruturado, treinado, checkpointed e amostrado. Não inclui REST API, API key server, browser SDK ou Python HTTP SDK.

> 🎉 **Marco pessoal:** este é o **primeiro LLM criado pelo autor** — do zero, do tokenizer ao treinamento. Um ponto de partida histórico.

---

## Arquitetura

| Propriedade | Valor |
|---|---|
| Arquitetura | Decoder-only causal Transformer |
| Parâmetros | ~50M |
| Context length | 512 tokens |
| Tokenizer | BPE com chat tokens |
| Licença | MIT |

---

## Instalação

```bash
pip install -r requirements.txt
```

---

## Estrutura de arquivos

```
delta-ultra-mini/
├── delta/
│   ├── model.py          # Transformer model
│   ├── tokenizer.py      # Treinamento, loading e chat formatting
│   ├── generator.py      # Geração autoregressiva local
│   ├── dataset.py        # Loader de datasets text/jsonl
│   └── trainer.py        # Integração com HuggingFace Trainer
├── configs/
│   └── ultra_mini.json   # Configuração do modelo
├── scripts/
│   ├── train_tokenizer.py  # Entrypoint de treinamento do tokenizer
│   ├── train_delta.py      # Entrypoint de treinamento do modelo
│   └── generate_delta.py   # Entrypoint de inferência local
├── data/                 # Seed dataset MIT-licensed
└── tokenizer.json        # Tokenizer treinado
```

---

## Inferência local

> Certifique-se de ter um checkpoint treinado antes de rodar a geração.

**Checkpoint em `runs/`:**

```bash
python scripts/generate_delta.py \
  --prompt "O que e PyTorch?" \
  --checkpoint_path runs/delta-ultra-mini/delta_checkpoint.pt \
  --tokenizer_path tokenizer.json
```

**Checkpoint na raiz do projeto:**

```bash
python scripts/generate_delta.py \
  --prompt "Quem e voce?" \
  --checkpoint_path delta_checkpoint.pt \
  --tokenizer_path tokenizer.json
```

---

## Treinar o tokenizer

```bash
python scripts/train_tokenizer.py \
  --corpus_files data/tokenizer_corpus.txt \
  --output_path tokenizer.json
```

---

## Treinar o modelo

```bash
python scripts/train_delta.py \
  --data_path data \
  --output_dir runs/delta-ultra-mini \
  --epochs 1 \
  --batch_size 2 \
  --tokenizer_path tokenizer.json
```

---

## Dataset

O dataset seed incluído serve para boostrap de experimentos e verificação do pipeline end-to-end. Para melhor qualidade, construa um dataset maior com exemplos variados, respostas limpas, splits de validação e revisão cuidadosa.

**Formato recomendado (`.jsonl`):**

```jsonl
{"text":"[SYS] You are Delta. [SEP]\n[USR] Question [SEP]\n[ASS] Answer [SEP]"}
```

---

## Limitações

- O seed checkpoint pode memorizar exemplos e generalizar mal para inputs novos.
- O modelo **não é safety-aligned** como assistentes de produção em larga escala.
- Pode produzir respostas incorretas, incompletas ou misturadas.
- Deve ser avaliado cuidadosamente antes de qualquer uso real.

---

## Licença

Este projeto é distribuído sob a licença **MIT**. Veja o arquivo `LICENSE` para mais detalhes.

---

## Aviso

Não deve se esperar muito deste modelo LLM, pois foi desenvolvido as pressas, sendo treinado em um dataset nano de 357 exemplos em json-l (pouco mais de 1400 linhas em corpus.txt).
Ele foi desenvolvido em apenas 4 dias, e 18 horas de treinamento (em CPU Celeron N4020).

<div align="center">

Criado por **Pyra**

</div>