File size: 2,591 Bytes
fe7c8eb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
---

license: mit
language:
- es
- en
tags:
- ssm
- state-space-model
- mamba-like
- text-generation
- experimental
---


# OxideLLM_TK_SSM_V1



🦀 **Transformer Killer** - Un modelo experimental basado en State Space Models (SSM)



## Descripción



Este modelo utiliza una arquitectura **SSM (State Space Model)** inspirada en Mamba, 

que reemplaza el mecanismo de atención de los Transformers tradicionales con un 

escaneo secuencial selectivo de complejidad **O(n) lineal**.



### Características



- **Arquitectura**: SSM Selectivo (Mamba-like)

- **Parámetros**: ~770K

- **Tokenizer**: Nivel de carácter (228 tokens)

- **Contexto**: Teóricamente ilimitado (complejidad lineal)

- **Entrenamiento**: Iter 1200+



### Ventajas del SSM sobre Transformers



| Aspecto | Transformer | SSM |

|---------|-------------|-----|

| Complejidad | O(n²) | O(n) |

| Memoria | Crece cuadráticamente | Crece linealmente |

| Contexto largo | Costoso | Eficiente |



## Uso



```python

import torch

from model import TransformerKiller

from tokenizer import CharacterTokenizer



# Cargar checkpoint

cp = torch.load("ssm_checkpoint.pth", map_location="cpu")



# Reconstruir tokenizer

tokenizer = CharacterTokenizer()

tokenizer.chars = cp['tokenizer_chars']
tokenizer.vocab_size = len(tokenizer.chars)

tokenizer.stoi = {ch: i for i, ch in enumerate(tokenizer.chars)}

tokenizer.itos = {i: ch for i, ch in enumerate(tokenizer.chars)}



# Cargar modelo

model = TransformerKiller(

    vocab_size=tokenizer.vocab_size,

    dim=128,

    n_layers=4,
    state_dim=16

)

model.load_state_dict(cp['model_state_dict'])

model.eval()


# Generar texto
def generate(prompt, max_tokens=100):

    idx = torch.tensor([tokenizer.encode(prompt)], dtype=torch.long)

    with torch.no_grad():
        for _ in range(max_tokens):

            logits = model(idx)[:, -1, :]

            probs = torch.softmax(logits / 0.8, dim=-1)

            idx = torch.cat((idx, torch.multinomial(probs, 1)), dim=1)

    return tokenizer.decode(idx[0].tolist())


print(generate("Hola"))
```



## Archivos



- `ssm_checkpoint.pth` - Checkpoint del modelo (pesos + tokenizer)

- `model.py` - Arquitectura SSM

- `tokenizer.py` - Tokenizer a nivel de carácter

- `chat.py` - Script de chat interactivo



## Limitaciones



⚠️ Este es un modelo **experimental y educativo** con solo ~770K parámetros.

No está diseñado para uso en producción. Las respuestas pueden ser incoherentes.



## Licencia



MIT License



## Autor



Entrenado con 🔥 usando PyTorch + CUDA