Tokenizer mismatches
Model loaded but tokenizer vocab size mismatch
Vocab size mismatch: model has X tokens, tokenizer has Y
By Fredoline Eruo · Last verified May 6, 2026
Cause
When the model's config.json declares vocab size X but the tokenizer's vocab.json/tokenizer.json has size Y, transformers refuses to load. Causes:
- Partial download (one file missing)
- Mixed files from different model versions in the same directory
- A LoRA-merged model where the merge process didn't update the config
Solution
Re-download the full model to a fresh directory:
hf download meta-llama/Llama-3.1-8B-Instruct --local-dir ./llama-31-8b-clean
If you're sure the files are right but vocab is mismatched (rare, happens with custom-trained models), fix manually:
from transformers import AutoConfig, AutoTokenizer
tok = AutoTokenizer.from_pretrained("./your-model")
config = AutoConfig.from_pretrained("./your-model")
config.vocab_size = len(tok) # match config to tokenizer
config.save_pretrained("./your-model")
Common after LoRA merging. When you merge a LoRA back into the base, both vocab.json AND config.json need to be the BASE model's files (the LoRA adapter has neither). Don't mix-and-match from different stages of training.
Related errors
Did this fix it?
If your case was different, email hello@runlocalai.co with what you saw and we'll update the page. If it worked but took different commands on your platform, we want to know that too.