rohitg00/ai-engineering-from-scratch · error · ValueError
target_vocab_size must be >= {min_vocab_size}, got {target_v
Error message
target_vocab_size must be >= {min_vocab_size}, got {target_vocab_size} What it means
Error "target_vocab_size must be >= {min_vocab_size}, got {target_vocab_size}" thrown in rohitg00/ai-engineering-from-scratch.
Source
Thrown at phases/19-capstone-projects/31-tokenized-dataset-sliding-window/code/main.py:99
out: list[int] = []
i = 0
a, b = pair
while i < len(symbols):
if i < len(symbols) - 1 and symbols[i] == a and symbols[i + 1] == b:
out.append(new_id)
i += 2
else:
out.append(symbols[i])
i += 1
merged = tuple(out)
new_units[merged] = new_units.get(merged, 0) + count
return new_units
def train_bpe(tokenizer: MiniBPE, corpus: str, target_vocab_size: int) -> None:
min_vocab_size = BYTE_ALPHABET_SIZE + len(DEFAULT_SPECIALS)
if target_vocab_size < min_vocab_size:
raise ValueError(
f"target_vocab_size must be >= {min_vocab_size}, got {target_vocab_size}"
)
tokenizer.initialize(DEFAULT_SPECIALS)
chunks = _pretokenize(corpus)
units: dict[tuple[int, ...], int] = {}
for chunk in chunks:
symbols = tuple(chunk.encode("utf-8"))
units[symbols] = units.get(symbols, 0) + 1
while tokenizer.vocab_size < target_vocab_size:
pairs = _count_pairs(units)
if not pairs:
break
max_count = max(pairs.values())
candidates = sorted(p for p, c in pairs.items() if c == max_count)
best = candidates[0]
if pairs[best] < 2:
break
new_id = len(tokenizer.vocab)View on GitHub (pinned to 39ea8a1c6d)
When it happens
Trigger: Thrown at phases/19-capstone-projects/31-tokenized-dataset-sliding-window/code/main.py:99 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/d9338b1e629bef63.
Report an issue: GitHub.