Note by note — tokens.
A model doesn't take in a whole melody at once — it reads a stream of small pieces called tokens.
A musician reading sheet music doesn't swallow the tune whole. They take it in one event at a time — this note, that duration, the next note — and it's the sequence of those small events that makes a line. Nothing arrives as "the melody"; it arrives as a run of little symbols on the page.
An LLM reads much the same way. Before it can do anything, it first cuts the input into tokens — small pieces. A single plain note is one token; something richer, like a chord, splits into several. The model only ever sees this stream of tokens — never "the tune" itself. And each token reaches it as a plain ID number, which is all the numbers on the right are.
Take a short phrase and break it into tokens yourself — hear each one land — then see the raw numbers the model actually reads.
The same phrase, as the model takes it in.
You hand over the notes; the model first splits them into tokens. A single note is one token — but a chord stacks into several, one per pitch.
tokens = model.tokenize(["C", "D", "E", "G", "Cmaj"]) # → ['C', 'D', 'E', 'G', 'C', 'E', 'G'] len(tokens) # 7 tokens tokens[4:7] # ['C', 'E', 'G'] — one chord, three tokens
Everything is tokens.
The phrase, the answer, every note the model reads or plays — all of it is a sequence of tokens. The model never sees a staff or a feeling directly; it sees these small pieces, and the numbers behind them.
Tokens are the unit an LLM works in. Where the odds over the next token come from — how the model learned to guess it at all — is the next page.