GPT-2-style-shakespeare-linear-page-2026-10-22
Petit modèle de langage de style GPT-2, au niveau caractère, entraîné sur shakespeare avec l'attention linear + page.
C'est le meilleur point de cette variante dans un benchmark de 8 variantes × 9 configurations × 5 graines.
Modèle retenu
| variante | linear + page |
| configuration | 3 couche(s), 2 tête(s), d_model = 256, d_ff = 512, block_size = 128 |
| paramètres | 3,580,166 |
| graine | 3 |
| meilleure loss de validation | 1.5380 (au pas 2400) |
| loss de validation finale | 1.5672 |
Cette variante sur toutes les configurations (shakespeare, 5 graines)
| configuration | loss de validation finale |
|---|---|
| 1L×1H | 1.6236 ± 0.0059 |
| 1L×2H | 1.6176 ± 0.0093 |
| 1L×4H | 1.6152 ± 0.0043 |
| 2L×1H | 1.5809 ± 0.0121 |
| 2L×2H | 1.5730 ± 0.0079 |
| 2L×4H | 1.5700 ± 0.0107 |
| 3L×1H | 1.5800 ± 0.0084 |
| 3L×2H | 1.5680 ± 0.0078 |
| 3L×4H | 1.5686 ± 0.0126 |
Entraînement
Adam (lr 0.001, betas [0.9, 0.999], eps 1e-08), clipping 1.0, 3000 pas, batch 32 × 128, évaluation tous les 150 pas sur 50 batchs. Algorithmes déterministes, float32, graines fixées.
Données : shakespeare, 1,003,854 caractères d'entraînement, 111,540 de validation, vocabulaire 65.
SHA-256 : entraînement 0f4025c3c124bb920bb39e98f886c47c440860813f0768beb379a7c64f29a0db, validation 370f8961a8d4fb30a33bb76b78e231454b6a08a4eedc9935e7d5aa19a5a9c8ac.
Reproductibilité
| début / fin (UTC) | 2026-10-21T21:05:48+00:00 / 2026-10-21T21:07:53+00:00 |
| durée | 125 s (33.4 ms par pas d'entraînement) |
| GPU | NVIDIA L4 (pilote 580.82.07) |
| CUDA / cuDNN | 13.0 / 92700 |
| PyTorch / Python | 2.11.0+cu130 / 3.13.15 |
| algorithmes déterministes | True |
Utilisation
from huggingface_hub import snapshot_download
import sys, torch
folder = snapshot_download("analist/GPT-2-style-shakespeare-linear-page-2026-10-22")
sys.path.insert(0, folder)
from modeling import load
model, tokenizer = load(folder)
idx = torch.tensor([tokenizer.encode("ROMEO:")])
print(tokenizer.decode(model.generate(idx, max_new_tokens=200, temperature=0.8)[0].tolist()))