Base, Instruct and Reasoning Models: What Each Is For
When you browse the Hugging Face Hub you will see the same model family released under several names, such as Llama-3.1-8B and Llama-3.1-8B-Instruct, or gemma-2-9b and gemma-2-9b-it. Hosted providers also list separate reasoning or thinking models. These are not interchangeable. They come from different training stages and behave differently. Picking the wrong one is a common and expensive mistake.
The mental model is a pipeline of training stages:
1. Base models: next-token predictors
A base model (also called pretrained or foundation model) has only been trained to predict the next token on large amounts of text. It has broad knowledge and language skill, but it has not been taught to follow instructions or hold a conversation.
Ask a base model 'What is the capital of France?' and it may answer. It may just as easily continue with more quiz questions, because on the web a question is often followed by more questions. It is completing a document, not answering you.
What base models are for:
- Starting point for fine-tuning. If you are training your own instruction-following or domain model, starting from the base avoids inheriting another team's chat style and refusal behaviour.
- Pure text completion. Autocomplete, continuing a document in a fixed style, or generating synthetic data from a few-shot pattern.
- Research and evaluation of what the model learned in pretraining.
How to spot them on the Hub: names without a suffix, or with -Base. The model card usually says 'pretrained' and has no chat template.
2. Instruct models: the default for applications
An instruct model (also called chat model, with suffixes like -Instruct, -Chat or -it) starts from a base model and is further trained with:
- Supervised fine-tuning (SFT) on examples of instructions paired with good responses.
- Preference tuning such as RLHF or DPO, which teaches the model to prefer helpful, harmless and well-formatted answers.
The result follows instructions, respects system prompts, uses a with roles, and supports features like tool calling and structured output.