vllm.models.inkling.nvidia.logits_processor ¶
Inkling logits processor (muP + LoRA aware).
Inkling divides the final logits by a muP width multiplier (logits_mup_width_multiplier). This applies it two ways, depending on whether an lm_head LoRA is attached:
- No LoRA: fold
1/mupinto the lm_head GEMM alpha (fp32 epilogue) -- no separate elementwise kernel, no extra rounding, no weight mutation. - LoRA attached: the LoRA manager wraps this layer in
LogitsProcessorWithLoRA, whoseforwardcallstype(base_layer).forward(self=wrapper)-- so thisforwardruns withselfbound to the wrapper. We detect that viabase_layerand take the LoRA path: run the wrapper's_get_logits(base logits + the lm_head LoRA delta), then divide the full logits by the multiplier so the delta is scaled too. muP thus composes with the LoRA delta, with the dispatch as the only model-side branching.
Classes:
-
InklingLogitsProcessor–LogitsProcessorthat applies Inkling's muP logits width multiplier.
InklingLogitsProcessor ¶
Bases: LogitsProcessor
LogitsProcessor that applies Inkling's muP logits width multiplier.
Parameters:
-
(vocab_size¶int) –Padded vocabulary size.
-
(org_vocab_size¶int | None, default:None) –Unpadded vocabulary size (defaults to
vocab_size). -
(scale¶float, default:1.0) –Base logits scale (kept
1.0for the served checkpoint). -
(logits_as_input¶bool, default:False) –Whether the input is already logits.
-
(soft_cap¶float | None, default:None) –Optional logit soft cap (
Nonefor the served checkpoint). -
(logits_mup_width_multiplier¶float | None, default:None) –muP width divisor for the final logits;
Noneor0disables it.
Source code in vllm/models/inkling/nvidia/logits_processor.py
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | |