Base Models vs Instruct Models: Which to Start From

A
Author
03 Nov, 2026 4 min read 0 views

For most projects, start from the instruct (chat) version of a model. It already follows instructions and has a chat template, so a small dataset is enough. Start from the base version when you want full control over behaviour, plan to use a lot of data, or are doing continued pretraining or heavy domain shifts.

What each checkpoint is

A base model is the output of pretraining. It continues text. An instruct model is the base model after supervised instruction tuning and often preference tuning, so it answers requests in a conversational format. Model hubs usually publish both, and names often include "instruct", "chat" or "it" for the tuned one. Always read the model card to confirm.

Start from instruct when

  • You have a few hundred to a few thousand examples.
  • You want the model to keep general abilities such as following instructions and answering questions.
  • Your task is a chat or instruction task.
  • You want a quick first result with little risk of broken output.

With an instruct model, you are doing a gentle nudge. The model already knows to stop after its answer, to respect roles and to refuse some unsafe requests. Your data refines that.

Start from base when

  • You have tens of thousands of examples or more and want to define behaviour yourself.
  • You want to avoid inherited refusals, personas or verbose habits from the vendor's tuning (check the license and your safety needs).
  • The task is not chat-like, such as completing code in a custom format or scoring text.
  • You are continuing pretraining on domain text first.

Base models need you to teach the conversation structure. If you use a chat format, your tokenizer must know the special tokens, and training must include them. That adds a place to make mistakes.

Compare them in code

Run the same prompt through both versions and read the outputs. This is a ten-minute test that teaches you more than any article. Provide the two model names as environment variables.

import os
from transformers import pipeline

prompt = "List three uses of a hash map."

for env_name in ["BASE_MODEL", "INSTRUCT_MODEL"]:
    gen = pipeline("text-generation", model=os.environ[env_name])
    out = gen(prompt, max_new_tokens=80, do_sample=False)
    print("==", env_name)
    print(out[0]["generated_text"])

Expect the base model to continue the sentence in odd ways, perhaps with another list prompt, while the instruct model answers directly. Passing a plain string to an instruct model skips its chat template, so for a fair test of the instruct model use the template as shown in post 18.

Effects on training

AspectBase startInstruct start
Data neededMoreLess
Chat templateYou may need to define itAlready defined
Risk of format errorsHigherLower
Control over behaviourMaximumConstrained by prior tuning
Forgetting concernsFewer chat skills to loseCan lose instruction following

A practical rule

  1. Pick the instruct model of your chosen size.
  2. Fine-tune with a small dataset and a low learning rate.
  3. Evaluate. If the model resists your style or format, or you have large data, try the base model for comparison.

Common mistakes

  • Using the wrong chat template for the model, which silently harms quality.
  • Training an instruct model on raw text with no template, which can erase its chat behaviour.
  • Assuming "base" means "better for fine-tuning". It means less pre-shaped, not more capable.
  • Ignoring license differences between base and instruct releases.

When unsure, start from instruct, measure, and only then test the base alternative as an experiment.

Reading the model card

Two minutes with the model card prevents hours of debugging. Look for how the instruct version was produced, whether it expects a system prompt, the exact chat template, the recommended generation settings, and any note about stop tokens. Some families use more than one end-of-turn token, and training with the wrong one causes endless generation at inference time. Also check whether the vendor publishes a base checkpoint at all. Some release only tuned versions.

Example: the same task from both starts

Imagine tuning a model to write short product descriptions in a fixed style from 800 examples. From the instruct checkpoint, one or two epochs usually give clean, on-style output, because the model already understands the instruction. From the base checkpoint, you must format every example with a template, make sure an end token follows each answer, and accept a few more rounds of experimentation. In return you get a model with fewer unwanted habits, such as adding disclaimers or friendly openers you never asked for. For a small, fast project, the first path wins. For a long-lived product with a large dataset, the second can pay off.

Was this article helpful?

Comments

No comments yet. Have a question or a tip? Be the first to share it.

Leave a comment

Comments are reviewed before they appear.