A high-throughput and memory-efficient inference and serving engine for LLMs
Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git
Synced Nov 10, 16:30 UTC
[Model] rename use_pad_token to use_sep_token (#31784)
Signed-off-by: wang.yuqi <yuqi.wang@daocloud.io>
wang.yuqi committed
Jan 6, 2026 at 22:16 UTC
96860af655688163d0228e128a06dd6c462be271
5 files changed
+33
-25
examples/pooling/score/convert_model_to_seq_cls.py
+7
-7
@@ -108,7 +108,7 @@ method_map = {
108
109
110
def converting(
111
- model_name, classifier_from_tokens, path, method, use_pad_token=False, device="cpu"
111
+ model_name, classifier_from_tokens, path, method, use_sep_token=False, device="cpu"
112
):
113
"""
114
Main conversion function to transform a CausalLM model to SequenceClassification.
@@ -118,7 +118,7 @@ def converting(
118
classifier_from_tokens: List of tokens used for classification
119
path: Output path to save the converted model
120
method: Conversion method ('from_2_way_softmax' or 'no_post_processing')
121
- use_pad_token: Whether to use padding token in the sequence classification model
121
+ use_sep_token: Whether to use separating token in the sequence classification model
122
device: Device to load the model on ('cpu' or 'cuda')
123
"""
124
assert method in method_map, f"Unknown method: {method}"
@@ -149,10 +149,10 @@ def converting(
149
causal_lm, seq_cls_model, tokenizer, classifier_from_tokens, device
150
)
151
152
- # Configure padding token settings
153
- # Note: Reranker models typically don't use padding tokens by default
154
- seq_cls_model.config.use_pad_token = use_pad_token
155
- seq_cls_model.config.pad_token_id = tokenizer.pad_token_id
152
+ # Configure separating token settings
153
+ # Note: `llm as reranker` defaults to not using separating token.
154
+ seq_cls_model.config.use_sep_token = use_sep_token
155
+ seq_cls_model.config.sep_token_id = tokenizer.sep_token_id
156
157
# Save the converted model and tokenizer
158
seq_cls_model.save_pretrained(path)
@@ -203,6 +203,6 @@ if __name__ == "__main__":
203
model_name=args.model_name,
204
classifier_from_tokens=json.loads(args.classifier_from_tokens),
205
method=args.method,
206
- use_pad_token=args.use_pad_token,
206
+ use_sep_token=args.use_sep_token,
207
path=args.path,
208
)
tests/entrypoints/pooling/score/test_utils.py
+8
-8
@@ -51,9 +51,9 @@ def llm_reranker_model_config():
51
CROSS_ENCODER_MODEL_ID,
52
runner="pooling",
53
)
54
- # use_pad_token is a property that reads from hf_config,
54
+ # use_sep_token is a property that reads from hf_config,
55
# so we set it there to override the default (True)
56
- config.hf_config.use_pad_token = False
56
+ config.hf_config.use_sep_token = False
57
return config
58
59
@@ -230,7 +230,7 @@ class TestGetScorePrompt:
230
cross_encoder_tokenizer, full_prompt, engine_prompt
231
)
232
233
- def test_fallback_with_pad_token(
233
+ def test_fallback_with_sep_token(
234
self,
235
cross_encoder_model_config,
236
cross_encoder_tokenizer,
@@ -238,7 +238,7 @@ class TestGetScorePrompt:
238
mock_model_no_score_template,
239
):
240
"""Test fallback path when ChatTemplateResolutionError
241
- and use_pad_token=True."""
241
+ and use_sep_token=True."""
242
with (
243
patch(
244
"vllm.model_executor.model_loader.get_model_cls",
@@ -250,7 +250,7 @@ class TestGetScorePrompt:
250
),
251
):
252
full_prompt, engine_prompt = get_score_prompt(
253
- cross_encoder_model_config, # use_pad_token=True
253
+ cross_encoder_model_config, # use_sep_token=True
254
cross_encoder_tokenizer,
255
tokenization_kwargs,
256
"query",
@@ -281,7 +281,7 @@ class TestGetScorePrompt:
281
add_special_tokens=False,
282
)
283
284
- def test_fallback_without_pad_token(
284
+ def test_fallback_without_sep_token(
285
self,
286
llm_reranker_model_config,
287
cross_encoder_tokenizer,
@@ -289,7 +289,7 @@ class TestGetScorePrompt:
289
mock_model_no_score_template,
290
):
291
"""Test fallback path when ChatTemplateResolutionError
292
- and use_pad_token=False."""
292
+ and use_sep_token=False."""
293
with (
294
patch(
295
"vllm.model_executor.model_loader.get_model_cls",
@@ -301,7 +301,7 @@ class TestGetScorePrompt:
301
),
302
):
303
full_prompt, engine_prompt = get_score_prompt(
304
- llm_reranker_model_config, # use_pad_token=False
304
+ llm_reranker_model_config, # use_sep_token=False
305
cross_encoder_tokenizer,
306
tokenization_kwargs,
307
"query",
vllm/config/model.py
+12
-4
@@ -1434,10 +1434,18 @@ class ModelConfig:
1434
return getattr(self.hf_config, "matryoshka_dimensions", None)
1435
1436
@property
1437
- def use_pad_token(self) -> bool:
1438
- # cross_encoder models defaults to using pad_token.
1439
- # `llm as reranker` models defaults to not using pad_token.
1440
- return getattr(self.hf_config, "use_pad_token", True)
1437
+ def use_sep_token(self) -> bool:
1438
+ # cross_encoder models defaults to using separating token.
1439
+ # `llm as reranker` defaults to not using separating token.
1440
+
1441
+ use_pad_token = getattr(self.hf_config, "use_pad_token", None)
1442
+ if use_pad_token is not None:
1443
+ logger.warning_once(
1444
+ "use_pad_token has been deprecated; please use use_sep_token instead."
1445
+ )
1446
+ return use_pad_token
1447
+
1448
+ return getattr(self.hf_config, "use_sep_token", True)
1449
1450
@property
1451
def head_dtype(self) -> torch.dtype:
vllm/entrypoints/score_utils.py
+3
-3
@@ -199,14 +199,14 @@ def get_score_prompt(
199
full_prompt = _apply_model_score_template(model_config, prompt_1, prompt_2)
200
prompt_inputs = tokenizer(full_prompt, **tokenization_kwargs)
201
else:
202
- if model_config.use_pad_token:
203
- # cross_encoder models defaults to using pad_token.
202
+ if model_config.use_sep_token:
203
+ # cross_encoder models defaults to using separating token.
204
prompt_inputs = tokenizer(
205
text=prompt_1, text_pair=prompt_2, **tokenization_kwargs
206
)
207
full_prompt = tokenizer.decode(prompt_inputs["input_ids"])
208
else:
209
- # `llm as reranker` models defaults to not using pad_token.
209
+ # `llm as reranker` defaults to not using separating token.
210
full_prompt = prompt_1 + prompt_2
211
prompt_inputs = tokenizer(text=full_prompt, **tokenization_kwargs)
212
return full_prompt, prompt_inputs
vllm/model_executor/models/adapters.py
+3
-3
@@ -382,9 +382,9 @@ class SequenceClassificationConfig(VerifyAndUpdateConfig):
382
else:
383
text_config.num_labels = len(tokens)
384
385
- # `llm as reranker` defaults to not using pad_token
386
- use_pad_token = getattr(text_config, "use_pad_token", False)
387
- text_config.use_pad_token = use_pad_token
385
+ # `llm as reranker` defaults to not using separating token.
386
+ use_sep_token = getattr(text_config, "use_sep_token", False)
387
+ text_config.use_sep_token = use_sep_token
388
389
390
def load_weights_using_from_2_way_softmax(