Primus-LM

Small GPT decoder-only (~14M parâmetros) treinado do zero em ementas jurídicas brasileiras.

Projeto educacional. O objetivo é compreender os fundamentos de LLMs com código próprio de arquitetura Transformer, treinamento e inferência em PyTorch. Não é uma ferramenta de pesquisa jurídica confiável.

Arquitetura

Parâmetro Valor
Família GPT decoder-only (pre-LN)
Camadas 6
Cabeças de atenção 6
Dimensão oculta (d_model) 384
Dimensão FFN (d_ff) 1536
Comprimento de contexto 256 tokens
Vocabulário 8000 tokens (BPE byte-level)
Embeddings de posição Absolutos, aprendidos
Ativação GELU
Weight tying Sim (embedding / lm_head compartilhados)
Dropout 0.1
Total de parâmetros ~13,8M

Dataset

  • Fonte: 100.000 ementas jurídicas brasileiras únicas, extraídas de base pública
  • Divisão: 90.000 treino / 10.000 validação
  • Tokens: ~27,8M treino / ~3,0M validação
  • Tokenizador: BPE byte-level, vocab_size=8000, treinado apenas no split de treino
  • Deduplicação: hash SHA-256 do texto normalizado (NFC)

Treinamento

Hiperparâmetro Valor
Otimizador AdamW (betas=0,9/0,95, eps=1e-8)
Taxa de aprendizado 0.0003
Weight decay 0.1
Batch size 4
Acumulação de gradiente 8 (batch efetivo = 32)
Passos máximos 10000
Gradient clipping 1.0
Precisão FP32
Hardware NVIDIA GeForce GTX 1060 6GB
Tempo de treinamento ~80 minutos

Resultados

Métrica Valor
Validation loss final 1,8238
Perplexidade de validação 6,2
Total de tokens processados 81.920.000
Uso de memória GPU ~600 MB

Como usar

Com o script standalone

pip install torch safetensors tokenizers

python modeling_mini_llm.py \
    --prompt "APELAÇÃO CÍVEL. RESPONSABILIDADE CIVIL." \
    --max-new-tokens 120 \
    --temperature 0.8 \
    --top-k 40

Carregando manualmente em Python

from modeling_mini_llm import load_model, generate

model, tokenizer, special_ids = load_model(".", device="cuda")

text = generate(
    model, tokenizer,
    prompt="HABEAS CORPUS. TRÁFICO DE DROGAS.",
    special_ids=special_ids,
    max_new_tokens=100,
    temperature=0.8,
    top_k=40,
)
print(text)

Limitações e riscos

  • Este modelo aprende padrões estatísticos do corpus e pode inventar fatos, números de processos, leis ou decisões. Não deve ser utilizado como fonte jurídica confiável.
  • O modelo possui uma janela de contexto muito pequena (256 tokens) e vocabulário reduzido (8.000 tokens).
  • Foi treinado apenas em ementas. Não compreende documentos jurídicos completos, legislação ou jurisprudência em profundidade.
  • Com apenas ~14M parâmetros, não possui capacidade para raciocínio complexo ou consistência factual.
  • O corpus de treinamento é limitado a um subconjunto específico de ementas jurídicas brasileiras e pode não generalizar para outros contextos.
  • Este é um projeto educacional, não um sistema de produção.

Licença

MIT. Consulte LICENSE para detalhes.

O código e os pesos são disponibilizados sob a licença MIT. O corpus de treinamento consiste em ementas jurídicas públicas; nenhum dado pessoal foi incluído nos artefatos publicados.

Downloads last month
42
Safetensors
Model size
14.2M params
Tensor type
F32
·
BOOL
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support