Skip to content

Commit 34a8559

Browse files
DarkLight1337khluu
authored andcommitted
[Chore] Use tokenizer.encode and tokenizer.decode directly (#29851)
Signed-off-by: DarkLight1337 <[email protected]> (cherry picked from commit 68ffbca)
1 parent 85fb2e3 commit 34a8559

File tree

9 files changed

+36
-40
lines changed

9 files changed

+36
-40
lines changed

tests/models/multimodal/processing/test_common.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@
2222
from vllm.multimodal.cache import MultiModalProcessorOnlyCache
2323
from vllm.multimodal.inputs import MultiModalInputs
2424
from vllm.multimodal.processing import BaseMultiModalProcessor, InputProcessingContext
25-
from vllm.tokenizers import MistralTokenizer, cached_tokenizer_from_config
26-
from vllm.transformers_utils.tokenizer import encode_tokens
25+
from vllm.tokenizers import (
26+
MistralTokenizer,
27+
TokenizerLike,
28+
cached_tokenizer_from_config,
29+
)
2730

2831
from ....multimodal.utils import random_audio, random_image, random_video
2932
from ...registry import (
@@ -151,7 +154,7 @@ def get_text_token_prompts(
151154
mm_data: MultiModalDataDict,
152155
):
153156
dummy_inputs = processor.dummy_inputs
154-
tokenizer = processor.info.get_tokenizer()
157+
tokenizer: TokenizerLike = processor.info.get_tokenizer()
155158
model_config = processor.info.ctx.model_config
156159

157160
model_type = model_config.hf_config.model_type
@@ -188,10 +191,9 @@ def get_text_token_prompts(
188191
assert isinstance(inputs.prompt, str)
189192

190193
text_prompt = inputs.prompt
191-
token_prompt = encode_tokens(
192-
tokenizer,
194+
token_prompt = tokenizer.encode(
193195
text_prompt,
194-
add_special_tokens=_ADD_SPECIAL_TOKENS_OVERRIDES.get(model_type),
196+
add_special_tokens=_ADD_SPECIAL_TOKENS_OVERRIDES.get(model_type, True),
195197
)
196198

197199
return text_prompt, token_prompt

tests/models/multimodal/processing/test_llama4.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import pytest
66

77
from vllm.multimodal import MULTIMODAL_REGISTRY
8-
from vllm.transformers_utils.tokenizer import encode_tokens
98

109
from ....conftest import ImageTestAssets
1110
from ...utils import build_model_context
@@ -48,7 +47,7 @@ def test_processor_override(
4847
]
4948
}
5049
if tokenized_prompt:
51-
prompt = encode_tokens(tokenizer, prompt)
50+
prompt = tokenizer.encode(prompt)
5251

5352
processed_inputs = processor.apply(prompt, mm_data, mm_processor_kwargs)
5453
mm_data = processed_inputs["mm_kwargs"].get_data()

vllm/entrypoints/openai/speech_to_text.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
from vllm.logger import init_logger
3838
from vllm.model_executor.models import SupportsTranscription
3939
from vllm.outputs import RequestOutput
40-
from vllm.transformers_utils.tokenizer import get_tokenizer
40+
from vllm.tokenizers import get_tokenizer
4141
from vllm.utils.import_utils import PlaceholderModule
4242

4343
try:

vllm/entrypoints/renderer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class RenderConfig:
3333
`0` yields an empty list (and skips embeds).
3434
`-1` maps to `model_config.max_model_len`."""
3535

36-
add_special_tokens: bool | None = True
36+
add_special_tokens: bool = True
3737
"""Whether to add model-specific special tokens during tokenization."""
3838

3939
cache_salt: str | None = None
@@ -315,7 +315,7 @@ async def _create_prompt_from_text(
315315
text: str,
316316
max_length: int | None,
317317
truncate_prompt_tokens: int | None,
318-
add_special_tokens: bool | None,
318+
add_special_tokens: bool,
319319
cache_salt: str | None,
320320
) -> EngineTokensPrompt:
321321
"""Tokenize text input asynchronously."""

vllm/entrypoints/score_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from vllm.model_executor.models.interfaces import supports_score_template
2020
from vllm.multimodal.inputs import MultiModalDataDict
2121
from vllm.outputs import PoolingRequestOutput
22-
from vllm.transformers_utils.tokenizer import TokenizerLike
22+
from vllm.tokenizers import TokenizerLike
2323

2424
ScoreContentPartParam: TypeAlias = (
2525
ChatCompletionContentPartImageParam | ChatCompletionContentPartImageEmbedsParam

vllm/model_executor/models/nano_nemotron_vl.py

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@
7575
from vllm.sequence import IntermediateTensors
7676
from vllm.tokenizers import TokenizerLike, cached_tokenizer_from_config
7777
from vllm.transformers_utils.configs.radio import RadioConfig
78-
from vllm.transformers_utils.tokenizer import encode_tokens
7978
from vllm.utils.tensor_schema import TensorSchema, TensorShape
8079

8180
from .utils import _merge_multimodal_embeddings
@@ -454,14 +453,12 @@ def __init__(
454453

455454
# Pre-tokenize special tokens for video processing
456455
# to avoid repeated tokenization
457-
self._img_start_token_ids = encode_tokens(
458-
tokenizer, IMG_START, add_special_tokens=False
456+
self._img_start_token_ids = tokenizer.encode(
457+
IMG_START, add_special_tokens=False
459458
)
460-
self._img_end_token_ids = encode_tokens(
461-
tokenizer, IMG_END, add_special_tokens=False
462-
)
463-
self._img_context_token_ids = encode_tokens(
464-
tokenizer, IMG_CONTEXT, add_special_tokens=False
459+
self._img_end_token_ids = tokenizer.encode(IMG_END, add_special_tokens=False)
460+
self._img_context_token_ids = tokenizer.encode(
461+
IMG_CONTEXT, add_special_tokens=False
465462
)
466463

467464
@property
@@ -1179,14 +1176,12 @@ def __init__(self, *, vllm_config: VllmConfig, prefix: str = ""):
11791176
# Pre-tokenize special tokens for video processing
11801177
# to avoid repeated tokenization
11811178
tokenizer = cached_tokenizer_from_config(vllm_config.model_config)
1182-
self._img_start_token_ids = encode_tokens(
1183-
tokenizer, IMG_START, add_special_tokens=False
1184-
)
1185-
self._img_end_token_ids = encode_tokens(
1186-
tokenizer, IMG_END, add_special_tokens=False
1179+
self._img_start_token_ids = tokenizer.encode(
1180+
IMG_START, add_special_tokens=False
11871181
)
1188-
self._img_context_token_ids = encode_tokens(
1189-
tokenizer, IMG_CONTEXT, add_special_tokens=False
1182+
self._img_end_token_ids = tokenizer.encode(IMG_END, add_special_tokens=False)
1183+
self._img_context_token_ids = tokenizer.encode(
1184+
IMG_CONTEXT, add_special_tokens=False
11901185
)
11911186

11921187
def pixel_shuffle(self, x, scale_factor=0.5):

vllm/model_executor/models/qwen2_5_omni_thinker.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@
8888
)
8989
from vllm.multimodal.profiling import BaseDummyInputsBuilder
9090
from vllm.sequence import IntermediateTensors
91-
from vllm.transformers_utils.tokenizer import encode_tokens
9291
from vllm.utils.tensor_schema import TensorSchema, TensorShape
9392

9493
from .interfaces import (
@@ -591,7 +590,7 @@ def _apply_hf_processor_main(
591590
tokenization_kwargs=tokenization_kwargs,
592591
)
593592
tokenizer = self.info.get_tokenizer()
594-
prompt_ids = encode_tokens(tokenizer, prompt)
593+
prompt_ids = tokenizer.encode(prompt)
595594
else:
596595
prompt_ids = self._apply_hf_processor_tokens_only(prompt)
597596

vllm/multimodal/processing.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
from vllm.logger import init_logger
2626
from vllm.tokenizers import TokenizerLike
2727
from vllm.transformers_utils.processor import cached_processor_from_config
28-
from vllm.transformers_utils.tokenizer import decode_tokens, encode_tokens
2928
from vllm.utils.collection_utils import flatten_2d_lists, full_groupby
3029
from vllm.utils.func_utils import get_allowed_kwarg_only_overrides
3130
from vllm.utils.jsontree import JSONTree, json_map_leaves
@@ -80,21 +79,19 @@ def _cached_encode(
8079
tokenizer: TokenizerLike,
8180
text: str,
8281
*,
83-
add_special_tokens: bool | None = None,
82+
add_special_tokens: bool = True,
8483
) -> list[int]:
85-
return encode_tokens(tokenizer, text, add_special_tokens=add_special_tokens)
84+
return tokenizer.encode(text, add_special_tokens=add_special_tokens)
8685

8786

8887
@lru_cache(maxsize=2048)
8988
def _cached_decode(
9089
tokenizer: TokenizerLike,
9190
token_ids: tuple[int, ...],
9291
*,
93-
skip_special_tokens: bool | None = None,
92+
skip_special_tokens: bool = False,
9493
) -> str:
95-
return decode_tokens(
96-
tokenizer, list(token_ids), skip_special_tokens=skip_special_tokens
97-
)
94+
return tokenizer.decode(list(token_ids), skip_special_tokens=skip_special_tokens)
9895

9996

10097
def _seq2text(
@@ -110,7 +107,7 @@ def _seq2text(
110107
raise ValueError("You cannot decode tokens when `skip_tokenizer_init=True`")
111108

112109
if not use_cache:
113-
return decode_tokens(tokenizer, seq)
110+
return tokenizer.decode(seq)
114111

115112
return _cached_decode(tokenizer, tuple(seq))
116113

@@ -126,7 +123,7 @@ def _seq2tokens(
126123
raise ValueError("You cannot encode text when `skip_tokenizer_init=True`")
127124

128125
if not use_cache:
129-
return encode_tokens(tokenizer, seq, add_special_tokens=False)
126+
return tokenizer.encode(seq, add_special_tokens=False)
130127

131128
return _cached_encode(tokenizer, seq, add_special_tokens=False)
132129

@@ -2198,8 +2195,8 @@ def _get_enc_dec_inputs(
21982195
tokenizer = self.info.get_tokenizer()
21992196
decoder_prompt_raw = self.create_decoder_prompt(prompt, mm_data)
22002197
if isinstance(decoder_prompt_raw, str):
2201-
decoder_prompt_ids = encode_tokens(
2202-
tokenizer, decoder_prompt_raw, add_special_tokens=False
2198+
decoder_prompt_ids = tokenizer.encode(
2199+
decoder_prompt_raw, add_special_tokens=False
22032200
)
22042201
else:
22052202
decoder_prompt_ids = decoder_prompt_raw

vllm/transformers_utils/tokenizer.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import warnings
55
from typing import Any
66

7+
from typing_extensions import deprecated
8+
79
from vllm.logger import init_logger
810
from vllm.tokenizers import TokenizerLike
911

@@ -73,6 +75,7 @@ def __getattr__(name: str):
7375
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
7476

7577

78+
@deprecated("Will be removed in v0.13. Please use `tokenizer.decode()` instead.")
7679
def decode_tokens(
7780
tokenizer: TokenizerLike,
7881
token_ids: list[int],
@@ -94,6 +97,7 @@ def decode_tokens(
9497
return tokenizer.decode(token_ids, **kw_args)
9598

9699

100+
@deprecated("Will be removed in v0.13. Please use `tokenizer.encode()` instead.")
97101
def encode_tokens(
98102
tokenizer: TokenizerLike,
99103
text: str,

0 commit comments

Comments
 (0)