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

BUEORM — dalusx64@gmail.com

Downloads last month
8
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 DalusX64/HALO-S-Large