Skip to content

Latest commit

 

History

143 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EfficientNeXt

Mini-LLM autoregressivo que traduz a EfficientNet-B0 (visão) para linguagem.

A ideia central do EfficientNet é encolher a resolução da imagem e engordar os canais ao longo da rede, para a parte pesada rodar barato. Aqui o análogo da resolução é o comprimento da sequência: um hourglass causal encolhe a sequência e engorda os canais até o gargalo (16→320, a tabela real do B0), depois reconstrói o comprimento com skip connections — assim os estágios largos rodam em sequência curta.

Componentes

  • Hourglass causal — encoder fiel ao B0 (7 estágios) + decoder de reconstrução.
  • Bloco Conformer — convolução causal (MBConv) + atenção causal, cada um com resíduo.
  • Squeeze-Excitation causal — média-prefixo (não global), sem vazar o futuro.
  • Transferência do esqueleto — inicializa os pointwise e o SE a partir de um EfficientNet-B0 de visão pré-treinado (models/pedrita.pkl), matando o classificador.
  • Compound scaling(α, β, γ, r_scale) por estágio, para NAS evolucionário.

Causalidade é o critério de aceite (scripts/test_causality.py): mexer num token futuro não pode alterar nenhuma predição anterior — é o que torna a geração predict+append+repeat válida.

Uso como biblioteca

import efficientnext as enx

cfg = enx.MiniLLMConfig(preset="b0_faithful")   # ou "simple"
model = enx.HourglassMiniLLM(cfg)
enx.load_pedrita_backbone(model)                # transfere o esqueleto do B0 (~71%)

enx.train(preset="b0_faithful", init="pedrita", steps=10_000)

out = model.generate(ids, max_new_tokens=50)

CLI

python -m efficientnext info                          # presets e nº de params
python -m efficientnext download --target-gb 5        # corpus do Project Gutenberg
python -m efficientnext train --init pedrita --steps 10000
python -m efficientnext train --resume                # continua do último checkpoint
python -m efficientnext generate --prompt "The old house" --tokens 50

Instalação

pip install -e .            # + pip install timm  para a transferência do B0

Estrutura

efficientnext/
  config.py     # tabela B0 real + presets + compound scaling
  model.py      # hourglass causal, bloco Conformer, SE causal
  tokenizer.py  # BPE (tokenizers)
  transfer.py   # transferência do esqueleto pedrita (B0) -> texto
  training.py   # treino com checkpoint/resume + mlflow + joblib
  data.py       # download paralelo do Gutenberg
  nas.py        # NAS evolucionário (compound scaling)
  __main__.py   # CLI

Tracking de experimentos em mlflow (efficientnext), checkpoints em joblib (models/). Os módulos .py na raiz são shims de compatibilidade.

About

LLM autoregressivo hourglass causal inspirado na EfficientNet-B0 — compound scaling e NAS aplicados a linguagem

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages