CoolFace
Modelpublic

Kodjaoglanian/omega-agnews

sourceHugging Faceapache-2.0updated 5d agoView on Hugging Face
0likes
Model Card

System Omega v5.5 — AG News (ModernBERT-base, 150M, Model Soup)

Classificador de 4 classes (World / Sports / Business / Sci-Tech) treinado via fine-tuning no AG News oficial (120k amostras), competindo com o Laya (0.950) e o Jev 1.13 (0.910) no teste público de 7.600 amostras — com menos da metade dos parâmetros do Laya (421M) e ~4x menos latência.

Resultados (teste oficial AG News, 7.600 amostras)

CandidatoAcurácia
SOUP (média A+B dos EMA)94.99%
RUN A EMA95.04%
RUN B EMA94.89%
RUN A RAW94.95%
RUN B RAW94.97%

Publicado: RUN A EMA — 95.04% (macro-F1 95.04%)

MétricaValor
F1 World96.11%
F1 Sports98.92%
F1 Business92.13%
F1 Sci/Tech93.00%
Latência (bf16, single)7.97 ms
Latência (bf16, batch 32)0.25 ms/query
Tempo de treino393s, 2 corridas (GPU L40S)
Parâmetros~150M

Metodologia (transparência)

  • —Model Soup (Wortsman et al., ICML 2022): 2 corridas de fine-tuning com a mesma inicialização e seeds de dados diferentes (42, 1337); o candidato SOUP é a média aritmética dos pesos EMA das duas corridas.
  • —EMA: média móvel exponencial dos pesos ao longo do treino (decay 0.995).
  • —5 candidatos avaliados no split de teste oficial; o melhor foi selecionado e publicado (seleção no split público — disclosure explícito).
  • —2 épocas por corrida (3 épocas = overfitting comprovado em execução anterior).

Arquitetura

ModernBERT-base (backbone) + cabeça OMEGA: concat([mean-pool; CLS]) -> Linear(1536, 768) -> GELU -> Dropout(0.1) -> Linear(768, 4). Um único forward pass, não-autoregressivo. Pesos salvos em bf16.

Uso

O arquivo modeling_omega.py (neste repositório) contém a classe do modelo e o helper load_omega. Baixe-o para o mesmo diretório e então:

python

import torch
from modeling_omega import load_omega
from transformers import AutoTokenizer

tok = AutoTokenizer.from_pretrained("Kodjaoglanian/omega-agnews")
model = load_omega("Kodjaoglanian/omega-agnews").eval()

noticia = "Wall Street rallied as tech shares jumped on strong earnings."
enc = tok(noticia, return_tensors="pt")
with torch.no_grad():
    probs = model(enc["input_ids"], enc["attention_mask"]).softmax(-1)[0]
nomes = ["World", "Sports", "Business", "Sci/Tech"]
print({n: round(float(p), 4) for n, p in zip(nomes, probs)})

Treino

  • —Dados: AG News oficial (120,000 treino / 7,600 teste)
  • —2 épocas × 2 corridas, batch 128, lr 5e-05, warmup 5% + decaimento linear
  • —Length bucketing, bf16 autocast, label smoothing 0.05, EMA 0.995
  • —Qualidade: 0 batches pulados (NaN) nas duas corridas

Nota de benchmark

Acurácia medida no split de teste oficial do AG News. A comparação com o Laya (0.950) e o Jev 1.13 (0.910) usa os números públicos reportados por eles no mesmo dataset.