tokenizer.py 3.76 KB
Newer Older
1
# SPDX-License-Identifier: Apache-2.0
2
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3

4
import warnings
5
from typing import Any
6

7
8
from typing_extensions import deprecated

Woosuk Kwon's avatar
Woosuk Kwon committed
9
from vllm.logger import init_logger
10
from vllm.tokenizers import TokenizerLike
11

12
13
logger = init_logger(__name__)

14
15
16
17
18
19

def __getattr__(name: str):
    if name == "AnyTokenizer":
        warnings.warn(
            "`vllm.transformers_utils.tokenizer.AnyTokenizer` has been moved to "
            "`vllm.tokenizers.TokenizerLike`. "
20
            "The old name will be removed in v0.14.",
21
22
23
24
25
            DeprecationWarning,
            stacklevel=2,
        )

        return TokenizerLike
26
27
28
29
30
31
    if name == "get_tokenizer":
        from vllm.tokenizers import get_tokenizer

        warnings.warn(
            "`vllm.transformers_utils.tokenizer.get_tokenizer` "
            "has been moved to `vllm.tokenizers.get_tokenizer`. "
32
            "The old name will be removed in v0.14.",
33
34
35
36
37
38
39
40
41
42
43
            DeprecationWarning,
            stacklevel=2,
        )

        return get_tokenizer
    if name == "cached_get_tokenizer":
        from vllm.tokenizers import cached_get_tokenizer

        warnings.warn(
            "`vllm.transformers_utils.tokenizer.cached_get_tokenizer` "
            "has been moved to `vllm.tokenizers.cached_get_tokenizer`. "
44
            "The old name will be removed in v0.14.",
45
46
47
48
49
50
51
            DeprecationWarning,
            stacklevel=2,
        )

        return cached_get_tokenizer
    if name == "cached_tokenizer_from_config":
        from vllm.tokenizers import cached_tokenizer_from_config
52
53

        warnings.warn(
54
55
            "`vllm.transformers_utils.tokenizer.cached_tokenizer_from_config` "
            "has been moved to `vllm.tokenizers.cached_tokenizer_from_config`. "
56
            "The old name will be removed in v0.14.",
57
58
59
60
            DeprecationWarning,
            stacklevel=2,
        )

61
62
        return cached_tokenizer_from_config
    if name == "init_tokenizer_from_configs":
63
        from vllm.tokenizers import cached_tokenizer_from_config
64
65
66

        warnings.warn(
            "`vllm.transformers_utils.tokenizer.init_tokenizer_from_configs` "
67
            "has been moved to `vllm.tokenizers.cached_tokenizer_from_config`. "
68
            "The old name will be removed in v0.14.",
69
70
71
72
            DeprecationWarning,
            stacklevel=2,
        )

73
        return cached_tokenizer_from_config
74
75

    raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
76

77

78
@deprecated("Will be removed in v0.14. Please use `tokenizer.decode()` instead.")
79
def decode_tokens(
80
    tokenizer: TokenizerLike,
81
82
    token_ids: list[int],
    *,
83
    skip_special_tokens: bool | None = None,
84
85
86
) -> str:
    """
    Backend-agnostic equivalent of HF's
87
    `tokenizer.decode(token_ids, ...)`.
88

89
    `skip_special_tokens=None` means to use the backend's default
90
    settings.
91
    """
92
93
    kw_args: dict[str, Any] = {}

94
    if skip_special_tokens is not None:
95
        kw_args["skip_special_tokens"] = skip_special_tokens
96

97
    return tokenizer.decode(token_ids, **kw_args)
98
99


100
@deprecated("Will be removed in v0.14. Please use `tokenizer.encode()` instead.")
101
def encode_tokens(
102
    tokenizer: TokenizerLike,
103
104
    text: str,
    *,
105
106
107
    truncation: bool | None = None,
    max_length: int | None = None,
    add_special_tokens: bool | None = None,
108
109
110
) -> list[int]:
    """
    Backend-agnostic equivalent of HF's
111
    `tokenizer.encode(text, ...)`.
112

113
    `add_special_tokens=None` means to use the backend's default
114
    settings.
115
    """
116
117
118
119
120
121
122
123

    kw_args: dict[str, Any] = {}
    if max_length is not None:
        kw_args["max_length"] = max_length

    if truncation is not None:
        kw_args["truncation"] = truncation

124
    if add_special_tokens is not None:
125
        kw_args["add_special_tokens"] = add_special_tokens
126

127
    return tokenizer.encode(text, **kw_args)