{"record":{"id":"728d9d2a480ad3e1","repo":"rohitg00/ai-engineering-from-scratch","slug":"vocab-size-must-be-50-got-vocab-size","errorCode":null,"errorMessage":"vocab_size must be > 50, got {vocab_size}","messagePattern":"vocab_size must be > 50, got (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"phases/19-capstone-projects/62-vision-language-pretraining/code/main.py","lineNumber":201,"sourceCode":"            logits = self.caption_logits(memory, inputs)\n            lm = lm_loss(logits, targets, padding_id=PAD_ID)\n\n        diag = sim.diag().mean().item()\n        offdiag = (sim.sum() - sim.diag().sum()).item() / max(1, b * b - b)\n        stats = {\"diag\": diag, \"off_diag\": offdiag, \"tau\": self.log_tau.exp().item()}\n        return contrast, lm, stats\n\n\ndef make_mock_corpus(seed: int, n_pairs: int, vocab_size: int, max_len: int\n                     ) -> list[tuple[torch.Tensor, torch.Tensor]]:\n    \"\"\"Build a deterministic mock corpus of n_pairs synthetic image-caption pairs.\n\n    Caption tokens are correlated with the image seed so the model has a small\n    amount of learnable signal across the contrastive batch. Token id 0 is\n    reserved for padding.\n    \"\"\"\n    if vocab_size <= 50:\n        raise ValueError(f\"vocab_size must be > 50, got {vocab_size}\")\n    pairs = []\n    rng = np.random.default_rng(seed)\n    for i in range(n_pairs):\n        img_seed = seed * 100 + i\n        rng_i = np.random.default_rng(img_seed)\n        noise = rng_i.standard_normal((3, 32, 32)).astype(\"float32\") * 0.2\n        gx, gy = np.meshgrid(np.linspace(0.0, 1.0, 32), np.linspace(0.0, 1.0, 32))\n        bias = (i % 7) / 7.0\n        img = np.clip(noise + bias, -1.0, 1.0).astype(\"float32\")\n        img = torch.from_numpy(img).unsqueeze(0)\n\n        length = min(6 + (i % 8), max_len)\n        ids = np.zeros((max_len,), dtype=np.int64)\n        base = (i * 17) % (vocab_size - 50)\n        for j in range(length):\n            ids[j] = 1 + (base + j * 3 + (i % 5)) % (vocab_size - 1)\n        pairs.append((img, torch.from_numpy(ids).unsqueeze(0)))\n    return pairs","sourceCodeStart":183,"sourceCodeEnd":219,"githubUrl":"https://github.com/rohitg00/ai-engineering-from-scratch/blob/39ea8a1c6d0b61f071226eff7ede4d4105fed820/phases/19-capstone-projects/62-vision-language-pretraining/code/main.py#L183-L219","documentation":"Error \"vocab_size must be > 50, got {vocab_size}\" thrown in rohitg00/ai-engineering-from-scratch.","triggerScenarios":"Thrown at phases/19-capstone-projects/62-vision-language-pretraining/code/main.py:201 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"39ea8a1c6d0b61f071226eff7ede4d4105fed820","analyzedAt":"2026-08-26T03:13:46.626Z","schemaVersion":2},"datasetVersion":"2026-08-26T07:17:17.940Z"}