HALO-S ~50M — WikiText-103 (BPE tiktoken)

Modelo de lenguaje preentrenado con la arquitectura HALO-S (Hierarchical Attention with Local Optimization – Sparse), una alternativa eficiente al Transformer estándar con complejidad O(N×K) en lugar de O(N²).

Entrenado durante 2 épocas sobre 30M tokens de WikiText-103 con tokenización BPE (GPT-2 tiktoken, vocab=50257), secuencias de 1024 tokens y batch efectivo de 32 (DataParallel en 2× T4, FP16 mixed precision).

Benchmark: HALO-S vs Transformer Denso

⏳ Benchmark en progreso — resultados disponibles próximamente.

Métrica HALO-S Transformer
Parámetros
Val Loss
Val Perplexity
Latencia forward (1024t, ms)
Pico Memoria GPU (GB)
Tiempo entrenamiento (min)

Uso rápido

pip install pyhalos safetensors tiktoken
import json
import torch
import tiktoken
from safetensors.torch import load_file
from halo.core.config import HaloConfig
from halo.models.halo_model import HaloSModel

# 1. Cargar config
with open("config.json") as f:
    cfg = json.load(f)

config = HaloConfig(
    vocab_size=cfg["vocab_size"],
    hidden_size=cfg["hidden_size"],
    num_layers=cfg["num_layers"],
    num_heads=cfg["num_heads"],
    num_kv_heads=cfg["num_kv_heads"],
    num_globals=cfg["num_globals"],
    local_window=cfg["local_window"],
    dilated_offsets=cfg["dilated_offsets"],
    num_random=cfg["num_random"],
    dropout=0.0,          # 0.0 en inferencia
    use_swiglu=False,
    max_seq_len=cfg["max_seq_len"],
)

# 2. Cargar pesos
model = HaloSModel(config)
state_dict = load_file("model.safetensors")
model.load_state_dict(state_dict)
model.eval()

# 3. Tokenizar y generar
enc = tiktoken.get_encoding("gpt2")
prompt = "The theory of relativity states that"
input_ids = torch.tensor([enc.encode(prompt)]).long()

with torch.no_grad():
    output = model.generate(input_ids, max_new_tokens=100, temperature=0.7, top_k=50)

print(enc.decode(output[0].tolist()))

Arquitectura HALO-S

  • Atención dispersa O(N×K): neighbor lists en lugar de matrices N×N densas
  • Global Tokens: num_globals=2 tokens con atención densa compartida
  • GQA (Grouped Query Attention): ratio 4:1 (num_kv_heads=2) para KV cache compacto
  • Conexiones dilatadas: dilated_offsets=[1,2,4,8,16,32,64,128] para contexto lejano sin costo cuadrático
  • Tokens aleatorios: num_random=2 para diversidad en atención
  • RoPE: Rotary Positional Embeddings

Entrenamiento

  • Dataset: WikiText-103 (30M tokens, wikitext-103-raw-v1)
  • Tokenizador: GPT-2 BPE via tiktoken (vocab_size=50257)
  • Secuencia: 1024 tokens
  • Épocas: 2
  • Precisión: FP16 mixed precision
  • Hardware: 2× Tesla T4, DataParallel + gradient accumulation ×4
  • Batch efectivo: 32
  • Gradient checkpointing: activado

Framework

Este modelo requiere pyhalos — disponible en PyPI.

Autor

BUEORMdalusx64@gmail.com

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

Dataset used to train BUEORM/HALO-S-Large

Space using BUEORM/HALO-S-Large 1