ULFBERTO commited on
Commit
fe7c8eb
·
verified ·
1 Parent(s): fd58b5f

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +98 -0
README.md ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ language:
4
+ - es
5
+ - en
6
+ tags:
7
+ - ssm
8
+ - state-space-model
9
+ - mamba-like
10
+ - text-generation
11
+ - experimental
12
+ ---
13
+
14
+ # OxideLLM_TK_SSM_V1
15
+
16
+ 🦀 **Transformer Killer** - Un modelo experimental basado en State Space Models (SSM)
17
+
18
+ ## Descripción
19
+
20
+ Este modelo utiliza una arquitectura **SSM (State Space Model)** inspirada en Mamba,
21
+ que reemplaza el mecanismo de atención de los Transformers tradicionales con un
22
+ escaneo secuencial selectivo de complejidad **O(n) lineal**.
23
+
24
+ ### Características
25
+
26
+ - **Arquitectura**: SSM Selectivo (Mamba-like)
27
+ - **Parámetros**: ~770K
28
+ - **Tokenizer**: Nivel de carácter (228 tokens)
29
+ - **Contexto**: Teóricamente ilimitado (complejidad lineal)
30
+ - **Entrenamiento**: Iter 1200+
31
+
32
+ ### Ventajas del SSM sobre Transformers
33
+
34
+ | Aspecto | Transformer | SSM |
35
+ |---------|-------------|-----|
36
+ | Complejidad | O(n²) | O(n) |
37
+ | Memoria | Crece cuadráticamente | Crece linealmente |
38
+ | Contexto largo | Costoso | Eficiente |
39
+
40
+ ## Uso
41
+
42
+ ```python
43
+ import torch
44
+ from model import TransformerKiller
45
+ from tokenizer import CharacterTokenizer
46
+
47
+ # Cargar checkpoint
48
+ cp = torch.load("ssm_checkpoint.pth", map_location="cpu")
49
+
50
+ # Reconstruir tokenizer
51
+ tokenizer = CharacterTokenizer()
52
+ tokenizer.chars = cp['tokenizer_chars']
53
+ tokenizer.vocab_size = len(tokenizer.chars)
54
+ tokenizer.stoi = {ch: i for i, ch in enumerate(tokenizer.chars)}
55
+ tokenizer.itos = {i: ch for i, ch in enumerate(tokenizer.chars)}
56
+
57
+ # Cargar modelo
58
+ model = TransformerKiller(
59
+ vocab_size=tokenizer.vocab_size,
60
+ dim=128,
61
+ n_layers=4,
62
+ state_dim=16
63
+ )
64
+ model.load_state_dict(cp['model_state_dict'])
65
+ model.eval()
66
+
67
+ # Generar texto
68
+ def generate(prompt, max_tokens=100):
69
+ idx = torch.tensor([tokenizer.encode(prompt)], dtype=torch.long)
70
+ with torch.no_grad():
71
+ for _ in range(max_tokens):
72
+ logits = model(idx)[:, -1, :]
73
+ probs = torch.softmax(logits / 0.8, dim=-1)
74
+ idx = torch.cat((idx, torch.multinomial(probs, 1)), dim=1)
75
+ return tokenizer.decode(idx[0].tolist())
76
+
77
+ print(generate("Hola"))
78
+ ```
79
+
80
+ ## Archivos
81
+
82
+ - `ssm_checkpoint.pth` - Checkpoint del modelo (pesos + tokenizer)
83
+ - `model.py` - Arquitectura SSM
84
+ - `tokenizer.py` - Tokenizer a nivel de carácter
85
+ - `chat.py` - Script de chat interactivo
86
+
87
+ ## Limitaciones
88
+
89
+ ⚠️ Este es un modelo **experimental y educativo** con solo ~770K parámetros.
90
+ No está diseñado para uso en producción. Las respuestas pueden ser incoherentes.
91
+
92
+ ## Licencia
93
+
94
+ MIT License
95
+
96
+ ## Autor
97
+
98
+ Entrenado con 🔥 usando PyTorch + CUDA