{"record":{"id":"97390995cbe92300","repo":"rohitg00/ai-engineering-from-scratch","slug":"batch-size-cfg-batch-size-cannot-exceed-corpus","errorCode":null,"errorMessage":"batch_size ({cfg.batch_size}) cannot exceed corpus size ({len(corpus)}) with replace=False","messagePattern":"batch_size \\((.+?)\\) cannot exceed corpus size \\((.+?)\\) with replace=False","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"phases/19-capstone-projects/62-vision-language-pretraining/code/main.py","lineNumber":235,"sourceCode":"            ids[j] = 1 + (base + j * 3 + (i % 5)) % (vocab_size - 1)\n        pairs.append((img, torch.from_numpy(ids).unsqueeze(0)))\n    return pairs\n\n\ndef sample_batch(pairs: list[tuple[torch.Tensor, torch.Tensor]], indices: list[int]\n                 ) -> tuple[torch.Tensor, torch.Tensor]:\n    imgs = torch.cat([pairs[i][0] for i in indices], dim=0)\n    ids = torch.cat([pairs[i][1] for i in indices], dim=0)\n    return imgs, ids\n\n\ndef train(cfg: PretrainConfig) -> dict:\n    torch.manual_seed(cfg.seed)\n    model = MultimodalModel(cfg).train()\n    opt = torch.optim.Adam(model.parameters(), lr=cfg.lr)\n    corpus = make_mock_corpus(cfg.seed + 1, cfg.n_pairs, cfg.text_vocab, cfg.max_text_len)\n    if cfg.batch_size > len(corpus):\n        raise ValueError(\n            f\"batch_size ({cfg.batch_size}) cannot exceed corpus size ({len(corpus)}) \"\n            \"with replace=False\"\n        )\n\n    rng = np.random.default_rng(cfg.seed + 2)\n    history = {\"contrast\": [], \"lm\": [], \"total\": []}\n\n    for step in range(cfg.steps):\n        idx = rng.choice(len(corpus), size=cfg.batch_size, replace=False).tolist()\n        imgs, ids = sample_batch(corpus, idx)\n        contrast, lm, stats = model(imgs, ids)\n        total = contrast + cfg.lm_weight * lm\n        opt.zero_grad(set_to_none=True)\n        total.backward()\n        opt.step()\n\n        history[\"contrast\"].append(contrast.item())\n        history[\"lm\"].append(lm.item())","sourceCodeStart":217,"sourceCodeEnd":253,"githubUrl":"https://github.com/rohitg00/ai-engineering-from-scratch/blob/39ea8a1c6d0b61f071226eff7ede4d4105fed820/phases/19-capstone-projects/62-vision-language-pretraining/code/main.py#L217-L253","documentation":"Error \"batch_size ({cfg.batch_size}) cannot exceed corpus size ({len(corpus)}) with replace=False\" thrown in rohitg00/ai-engineering-from-scratch.","triggerScenarios":"Thrown at phases/19-capstone-projects/62-vision-language-pretraining/code/main.py:235 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"}