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.
- 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.
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)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 50pip install -e . # + pip install timm para a transferência do B0efficientnext/
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.