rohitg00/ai-engineering-from-scratch · error · ValueError
d_model must be divisible by num_heads
Error message
d_model must be divisible by num_heads
What it means
Error "d_model must be divisible by num_heads" thrown in rohitg00/ai-engineering-from-scratch.
Source
Thrown at phases/19-capstone-projects/37-loading-pretrained-weights/code/main.py:67
class LayerNorm(nn.Module):
def __init__(self, d_model: int, eps: float = 1e-5) -> None:
super().__init__()
self.eps = eps
self.scale = nn.Parameter(torch.ones(d_model))
self.shift = nn.Parameter(torch.zeros(d_model))
def forward(self, x: torch.Tensor) -> torch.Tensor:
mean = x.mean(dim=-1, keepdim=True)
var = x.var(dim=-1, keepdim=True, unbiased=False)
return self.scale * (x - mean) / torch.sqrt(var + self.eps) + self.shift
class MultiHeadAttention(nn.Module):
def __init__(self, cfg: ModelConfig) -> None:
super().__init__()
if cfg.d_model % cfg.num_heads != 0:
raise ValueError("d_model must be divisible by num_heads")
self.d_model = cfg.d_model
self.num_heads = cfg.num_heads
self.head_dim = cfg.d_model // cfg.num_heads
self.context_length = cfg.context_length
self.qkv = nn.Linear(cfg.d_model, 3 * cfg.d_model, bias=cfg.use_bias)
self.out_proj = nn.Linear(cfg.d_model, cfg.d_model, bias=cfg.use_bias)
self.attn_dropout = nn.Dropout(cfg.dropout)
self.resid_dropout = nn.Dropout(cfg.dropout)
mask = torch.triu(
torch.ones(cfg.context_length, cfg.context_length, dtype=torch.bool),
diagonal=1,
)
self.register_buffer("causal_mask", mask, persistent=False)
def forward(self, x: torch.Tensor) -> torch.Tensor:
batch, seq, dim = x.shape
qkv = self.qkv(x)
q, k, v = qkv.split(self.d_model, dim=-1)View on GitHub (pinned to 39ea8a1c6d)
When it happens
Trigger: Thrown at phases/19-capstone-projects/37-loading-pretrained-weights/code/main.py:67 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of rohitg00/ai-engineering-from-scratch@39ea8a1c6d (2026-08-26).
Data as JSON: /api/errors/cf7e4ca1a0257d94.
Report an issue: GitHub.