[Pooling] Cap max-length padding for chunked embeddings (#56505)
Signed-off-by: Taneem Ibrahim <taneem.ibrahim@gmail.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Taneem Ibrahim committed
Sep 15, 2026 at 19:31 UTC
1fd119def5a841ada882fa3f33919b96783f9d50
1 file changed
+17
-1
vllm/entrypoints/pooling/base/protocol.py
+17
-1
@@ -171,6 +171,8 @@ class FixedMaxLenTokenizeParamsMixin(PoolingTokenizeParamsMixin):
171
172
173
class EmbeddingTokenizeParamsMixin(PoolingTokenizeParamsMixin):
174
+ padding: Literal["max_length", "do_not_pad"] | None
175
+
176
def build_tok_params(self, model_config: ModelConfig) -> TokenizeParams:
177
default_max_total_tokens = model_config.max_model_len
178
max_total_tokens: int | None = default_max_total_tokens
@@ -184,7 +186,7 @@ class EmbeddingTokenizeParamsMixin(PoolingTokenizeParamsMixin):
186
max_embed_len = pooler_config.max_embed_len or default_max_total_tokens
187
max_output_tokens = default_max_total_tokens - max_embed_len
188
187
- return self._build_pooling_tok_params(
189
+ tok_params = self._build_pooling_tok_params(
190
model_config,
191
add_special_tokens=self.add_special_tokens,
192
max_total_tokens=max_total_tokens,
@@ -192,6 +194,20 @@ class EmbeddingTokenizeParamsMixin(PoolingTokenizeParamsMixin):
194
max_output_tokens_param="max_model_len - max_embed_len",
195
)
196
197
+ if (
198
+ self.padding == "max_length"
199
+ and pooler_config is not None
200
+ and pooler_config.enable_chunked_processing
201
+ ):
202
+ max_padding_len = pooler_config.max_embed_len
203
+ if max_padding_len is None:
204
+ max_padding_len = default_max_total_tokens
205
+ return tok_params.with_kwargs(
206
+ pad_prompt_tokens=min(default_max_total_tokens, max_padding_len)
207
+ )
208
+
209
+ return tok_params
210
+
211
212
class CompletionRequestMixin(OpenAIBaseModel):
213
# --8<-- [start:completion-params]