File size: 776 Bytes
b615ad6 | 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 | """Layer 11: the output head.
ln_f + lm_head over the vocab. Supports weight tying with layer 1's wte.
The 12-layer stack: layer 0 + layer 1 + 9x layer 2 + this.
"""
from dataclasses import dataclass
import torch.nn as nn
@dataclass
class Layer11Config:
vocab_size: int = 109
d_model: int = 512
class Layer11(nn.Module):
def __init__(self, cfg: Layer11Config):
super().__init__()
self.cfg = cfg
self.ln_f = nn.LayerNorm(cfg.d_model)
self.lm_head = nn.Linear(cfg.d_model, cfg.vocab_size, bias=False)
def tie_to(self, layer1):
"""Share layer 1's wte: head.weight IS wte.weight (0 extra params)."""
self.lm_head.weight = layer1.wte.weight
def forward(self, x):
return self.lm_head(self.ln_f(x))
|