Context that follows the card
How long a context a card can hold depends on how much VRAM is left for the KV
pool, and the 5090 profile runs the 27B at 917,504 tokens (896K) with vision and
DFlash2 on. Both models were trained over 262,144 positions, so a context past
that needs a rescaled rotary table. ignis computes it for you: auto leaves
positions alone up to 262,144 and applies YaRN at max_context / 262,144 beyond,
so changing the context changes the table with it and a mismatch cannot happen
silently.
How it works
Section titled “How it works”Before ADR 0057 each profile spelled a matching yarn:F per model, and a factor
that did not match the context was silent: a lower one leaves positions
extrapolated, a higher one degrades short contexts for nothing. Now auto
resolves per model at load from its effective model.max_context. Within 262,144
it is no scaling at all, the original table and not “YaRN at 1”. Beyond it, it
is YaRN at the exact ratio with the default temperature and ramp: 2 at 524,288,
3 at 786,432, 3.5 at the 5090’s 917,504, 4 at 1,048,576. Past 64 times the
envelope (16,777,216 tokens) the start is refused, naming the context.
Flash-Next applies YaRN’s attention factor on queries and keys alike, from one
table that serves its attention, its sparse-attention indexer and its MTP head
(ADR 0059). none and
yarn:F[,t=..][,bf=..][,bs=..] override auto from any source, a model’s own
section included. Because the factor follows the context, a check that compares
two runs of the 27B must pin max_context: when free VRAM changes the
context a load can hold, the factor changes with it.
Which contexts fit on which card, and what they cost in KV, is in Profiles and Context and speculation.
The numbers
Section titled “The numbers”| Figure | Measured on | Source |
|---|---|---|
Trained envelope 262,144 positions; factor = max_context / 262,144; widest factor 64 |
the rule, not a measurement | ADR 0057 |
| The 5090 profile’s 27B context 917,504 tokens with vision and DFlash2 on and a KV pool of 944,832 tokens; 950,272 is refused by 59 MB | RTX 5090, the plan raised until it refuses | Prefill attention without prompt planes |
A needle at 320,076 tokens is recalled both with yarn:4 and with none |
27B, one needle | YaRN needle at 320K does not discriminate |
Flash-Next at about 512K on the 5090: auto 5/5 needles and 1/2 chains, none 4/5 and 1/2. At 1M on the RTX PRO 6000 with MTP: auto 4/5 and 0/2, none 5/5 and 1/2 |
one seed, one filler, one question per cell | Flash-Next YaRN in the reference engines |
The last two rows are the whole evidence on quality, and neither separates the
tables: the none control did not degrade past 262,144 on these probes, so they
cannot say what auto is worth. The ADR itself calls the 27B’s factor on the
5090 profile unmeasured against the yarn:4 it replaces, and Flash-Next’s
factors unmeasured at long context.
See it, control it
Section titled “See it, control it”- The setting:
model.rope_scaling(auto,noneoryarn:F[,...];autoby default, patchable with a reload), andmodel.max_context. - At load: the
ignis.model.loadedline names the table that ran (rope_scaling) beside the setting (rope_scaling_setting). - Live:
GET /v1/configshows the setting as configured, and the Playground’s Server view shows the running configuration.
Limits
Section titled “Limits”- A literal needle at 320K does not discriminate. A probe of long-context quality has to ask about relative position, and no such probe has yet separated the tables.
- Context costs KV. The 5090’s 1,048,576 tokens for the 27B is 1.07 GB short of fitting, which is why its profile stops at 917,504.
- Flash-Next prefill at 1M tokens takes longer than the default request timeout; raise it for such a prompt (Deadlines).
Read more
Section titled “Read more”- Context and speculation: the flag and its neighbours.
- Profiles: the context each card class runs.
- Every byte planned at load: why 917,504 and not 1,048,576.
