Views
No views yet
| Métrica | HALO-S | Transformer |
|---|---|---|
| Parámetros | 20,723,712 | 19,149,824 |
| Val Loss | 1.2686 | 1.2769 |
| Val Perplexity | 3.56 | 3.59 |
| Train Loss (final) | 1.3014 | 1.3266 |
| Pico Memoria GPU (GB) | 4.95 | 0.80 |
| Generación (tokens/s) | 62.0 | 214.0 |
| Tiempo entrenamiento (s) | 3885.5 | 1872.9 |
Nota sobre velocidad: Con seq_len=1024 el overhead del gather disperso aún domina sobre la ganancia O(N×K). Las ventajas de HALO-S se amplifican con secuencias ≥ 4096 tokens donde la atención densa procesaría 16M scores frente a ~340K de HALO-S.
pip install pyhalos safetensors1import json
2import torch
3from safetensors.torch import load_file
4from halo import HaloConfig, HaloSModel, CharacterTokenizer
5
6# 1. Cargar config
7with open("config.json") as f:
8 cfg = json.load(f)
9
10config = HaloConfig(
11 vocab_size=cfg["vocab_size"],
12 hidden_size=cfg["hidden_size"],
13 num_layers=cfg["num_layers"],
14 num_heads=cfg["num_heads"],
15 num_kv_heads=cfg["num_kv_heads"],
16 num_globals=cfg["num_globals"],
17 local_window=cfg["local_window"],
18 max_seq_len=cfg["max_seq_len"],
19)
20
21# 2. Cargar pesos
22model = HaloSModel(config)
23state_dict = load_file("model.safetensors")
24model.load_state_dict(state_dict)
25model.eval()
26
27# 3. Generar texto
28tokenizer = CharacterTokenizer()
29input_ids = torch.tensor([tokenizer.encode("Machine learning is")]).long()
30output = model.generate(input_ids, max_new_tokens=200, temperature=0.8, top_k=50)
31print(tokenizer.decode(output[0].tolist()))num_globals=2 tokens con atención densa compartidanum_kv_heads=2 para compresión del KV cache