Skip to main content

Router Head Overview

A router head is a small classifier trained on top of a frozen backbone model. Instead of generating text itself, it looks at an incoming query and picks which model in a fixed pool (e.g. a mix of frontier and cheaper open models) should actually answer it. The pool member’s real reply is what gets returned — the head only makes the routing decision. This guide walks through the full loop: publish a training dataset, train a router head, and evaluate it on a benchmark, all using BenchGen — see BenchGen Router Lite for the step-by-step walkthrough.

Why train a router head

  • Cost control — send easy queries to a cheap model and only route hard ones to a frontier model.
  • No generation weights to manage — the head is a few thousand parameters; there’s no adapter to merge or serve a full model for.
  • Fast to train — training is separable CMA-ES against a static reward matrix, not gradient descent over the backbone. A pilot-sized dataset trains in well under a minute on CPU.

The loop

  1. Create a dataset — publish two paired HuggingFace datasets: per-task rewards for each pool member, and the task prompts themselves.
  2. Train a router head — pick the Head training method, point it at your datasets, and let separable CMA-ES evolve the head.
  3. Serve and benchmark it — register the trained head as a selectable model, test it live, and run it against a benchmark like any other model on the platform.
A router head’s own output is a routing decision, not an answer — benchmark scores measure the router + pool system together, not the head in isolation. Keep this in mind when comparing scores against a standalone model.
Last modified on August 12, 2026