Skip to content

Commit 26e673f

Browse files
authored
[V0 Deprecation] Remove V0 Sequence class & Sampler (#25332)
Signed-off-by: Woosuk Kwon <[email protected]> Signed-off-by: Woosuk Kwon <[email protected]>
1 parent 65a5910 commit 26e673f

27 files changed

+70
-3697
lines changed

tests/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@
4848
initialize_model_parallel)
4949
from vllm.inputs import TextPrompt
5050
from vllm.logger import init_logger
51+
from vllm.logprobs import Logprob
5152
from vllm.multimodal.utils import fetch_image
5253
from vllm.outputs import RequestOutput
5354
from vllm.sampling_params import BeamSearchParams
54-
from vllm.sequence import Logprob
5555
from vllm.transformers_utils.utils import maybe_model_redirect
5656
from vllm.utils import set_default_torch_num_threads
5757

tests/models/multimodal/generation/test_granite_speech.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
import pytest
88
from transformers import AutoModelForSpeechSeq2Seq
99

10+
from vllm.logprobs import SampleLogprobs
1011
from vllm.lora.request import LoRARequest
11-
from vllm.sequence import SampleLogprobs
1212

1313
from ....conftest import (AudioTestAssets, HfRunner, PromptAudioInput,
1414
VllmRunner)

tests/models/multimodal/generation/test_phi4mm.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
from transformers import AutoTokenizer
1313

1414
from vllm.assets.image import ImageAsset
15+
from vllm.logprobs import SampleLogprobs
1516
from vllm.lora.request import LoRARequest
1617
from vllm.multimodal.image import convert_image_mode, rescale_image_size
1718
from vllm.platforms import current_platform
18-
from vllm.sequence import SampleLogprobs
1919

2020
from ....conftest import (IMAGE_ASSETS, HfRunner, PromptAudioInput,
2121
PromptImageInput, VllmRunner)

tests/models/multimodal/generation/test_pixtral.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
from transformers import AutoProcessor
1414

1515
from vllm import SamplingParams, TextPrompt, TokensPrompt
16+
from vllm.logprobs import Logprob, SampleLogprobs
1617
from vllm.multimodal import MultiModalDataBuiltins
17-
from vllm.sequence import Logprob, SampleLogprobs
1818

1919
from ....utils import VLLM_PATH, large_gpu_test
2020
from ...utils import check_logprobs_close

tests/models/multimodal/generation/vlm_utils/model_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
GenerationConfig, GenerationMixin)
2020
from transformers.video_utils import VideoMetadata
2121

22-
from vllm.sequence import SampleLogprobs
22+
from vllm.logprobs import SampleLogprobs
2323
from vllm.utils import is_list_of
2424

2525
from .....conftest import HfRunner, ImageAsset, ImageTestAssets

tests/models/multimodal/generation/vlm_utils/types.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from transformers.models.auto.auto_factory import _BaseAutoModelClass
1313

1414
from vllm.config import RunnerOption
15-
from vllm.sequence import SampleLogprobs
15+
from vllm.logprobs import SampleLogprobs
1616
from vllm.transformers_utils.tokenizer import AnyTokenizer
1717

1818
from .....conftest import (AUDIO_ASSETS, IMAGE_ASSETS, HfRunner, ImageAsset,

tests/models/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
from vllm.config import ModelConfig, ModelDType, RunnerOption
1414
from vllm.inputs import InputContext
15-
from vllm.sequence import Logprob, PromptLogprobs, SampleLogprobs
15+
from vllm.logprobs import Logprob, PromptLogprobs, SampleLogprobs
1616

1717
from .registry import HF_EXAMPLE_MODELS
1818

tests/tokenization/test_detokenize.py

Lines changed: 1 addition & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@
88
from transformers import (AutoTokenizer, PreTrainedTokenizer,
99
PreTrainedTokenizerFast)
1010

11-
from vllm.inputs import token_inputs
12-
from vllm.sequence import Logprob, SamplingParams, Sequence, SequenceGroup
13-
from vllm.transformers_utils.detokenizer import Detokenizer
14-
from vllm.transformers_utils.tokenizer import get_tokenizer
11+
from vllm.sampling_params import SamplingParams
1512
from vllm.transformers_utils.tokenizers.mistral import MistralTokenizer
1613
from vllm.v1.engine import EngineCoreRequest
1714
from vllm.v1.engine.detokenizer import (FastIncrementalDetokenizer,
@@ -217,138 +214,3 @@ def test_oov_decode(tokenizer, fast):
217214

218215
assert decoded_text == ''
219216
assert out_ids == [len(tokenizer)]
220-
221-
222-
@pytest.fixture
223-
def detokenizer(tokenizer_name: str) -> Detokenizer:
224-
tokenizer = get_tokenizer(
225-
tokenizer_name,
226-
tokenizer_mode="mistral" if "mistral" in tokenizer_name else "auto",
227-
trust_remote_code=False,
228-
revision=None,
229-
)
230-
231-
return Detokenizer(tokenizer)
232-
233-
234-
@pytest.fixture(name="complete_sequence_token_ids")
235-
def create_complete_sequence_token_ids(complete_sequence: str,
236-
tokenizer) -> list[int]:
237-
return tokenizer(complete_sequence, add_special_tokens=False).input_ids
238-
239-
240-
def create_sequence(prompt_token_ids=None):
241-
prompt_token_ids = prompt_token_ids or []
242-
return Sequence(
243-
seq_id=0,
244-
inputs=token_inputs(prompt_token_ids),
245-
block_size=16,
246-
)
247-
248-
249-
def create_dummy_logprobs(
250-
complete_sequence_token_ids: list[int]) -> list[dict[int, Logprob]]:
251-
return [{
252-
token_id: Logprob(logprob=0.0),
253-
token_id + 1: Logprob(logprob=0.1)
254-
} for token_id in complete_sequence_token_ids]
255-
256-
257-
def create_dummy_prompt_logprobs(
258-
complete_sequence_token_ids: list[int]
259-
) -> list[Optional[dict[int, Any]]]:
260-
# logprob for the first prompt token is None.
261-
logprobs: list[Optional[dict[int, Any]]] = [None]
262-
logprobs.extend(create_dummy_logprobs(complete_sequence_token_ids)[1:])
263-
return logprobs
264-
265-
266-
@pytest.mark.parametrize("complete_sequence", TRUTH)
267-
@pytest.mark.parametrize("tokenizer_name", TOKENIZERS)
268-
@pytest.mark.parametrize("skip_special_tokens", [True, False], indirect=True)
269-
def test_decode_sequence_logprobs(complete_sequence: str,
270-
complete_sequence_token_ids: list[int],
271-
detokenizer: Detokenizer,
272-
skip_special_tokens: bool):
273-
"""Verify Detokenizer decodes logprobs correctly."""
274-
sampling_params = SamplingParams(skip_special_tokens=skip_special_tokens,
275-
logprobs=2)
276-
277-
# Run sequentially.
278-
seq = create_sequence()
279-
dummy_logprobs = create_dummy_logprobs(complete_sequence_token_ids)
280-
sequential_logprobs_text_chosen_token: list[str] = []
281-
sequential_logprobs_text_other_token: list[str] = []
282-
for new_token, logprobs in zip(complete_sequence_token_ids,
283-
dummy_logprobs):
284-
seq.append_token_id(new_token, logprobs)
285-
detokenizer.decode_sequence_inplace(seq, sampling_params)
286-
sequential_logprobs_text_chosen_token.append(
287-
seq.output_logprobs[-1][new_token].decoded_token)
288-
sequential_logprobs_text_other_token.append(
289-
seq.output_logprobs[-1][new_token + 1].decoded_token)
290-
sequential_result = seq.output_text
291-
292-
assert sequential_result == "".join(sequential_logprobs_text_chosen_token)
293-
assert sequential_result != "".join(sequential_logprobs_text_other_token)
294-
295-
if not skip_special_tokens:
296-
# Text for logprobs for the chosen token should be the same as the
297-
# generated text. Note that this will only be true if we skip
298-
# special tokens.
299-
assert sequential_result == complete_sequence
300-
301-
302-
@pytest.mark.parametrize("complete_sequence", TRUTH)
303-
@pytest.mark.parametrize("tokenizer_name", TOKENIZERS)
304-
def test_decode_prompt_logprobs(complete_sequence: str,
305-
complete_sequence_token_ids: list[int],
306-
detokenizer: Detokenizer):
307-
308-
# We want to use skip_special_tokens=False here but Mistral tokenizers
309-
# don't support that.
310-
if complete_sequence not in SPECIAL_TOKS_TRUTH:
311-
skip_special_tokens = True
312-
elif not isinstance(detokenizer.tokenizer, MistralTokenizer):
313-
skip_special_tokens = False
314-
else:
315-
pytest.skip("MistralTokenizers don't support "
316-
"skip_special_tokens=False")
317-
return
318-
"""Verify Detokenizer decodes prompt logprobs correctly."""
319-
sampling_params = SamplingParams(skip_special_tokens=skip_special_tokens,
320-
prompt_logprobs=1)
321-
322-
# Run sequentially.
323-
seq = create_sequence(complete_sequence_token_ids)
324-
seq_group = SequenceGroup(request_id="1",
325-
seqs=[seq],
326-
sampling_params=sampling_params,
327-
arrival_time=0.0)
328-
dummy_logprobs = create_dummy_prompt_logprobs(complete_sequence_token_ids)
329-
detokenizer.decode_prompt_logprobs_inplace(seq_group,
330-
dummy_logprobs,
331-
position_offset=0)
332-
# First logprob is None.
333-
decoded_prompt_logprobs: list[dict[int, Any]] = dummy_logprobs[
334-
1:] # type: ignore
335-
336-
# decoded_prompt_logprobs doesn't contain the first token.
337-
token_ids = complete_sequence_token_ids
338-
tokenizer = detokenizer.tokenizer
339-
text_full = tokenizer.decode(token_ids,
340-
skip_special_tokens=skip_special_tokens)
341-
text_first = tokenizer.decode(token_ids[0],
342-
skip_special_tokens=skip_special_tokens)
343-
text = text_full[len(text_first):]
344-
345-
# Text for logprobs for the chosen token should be the same as the
346-
# prompt text. Note that the first logprob is None.
347-
assert text == "".join([
348-
logprobs[token_id].decoded_token
349-
for token_id, logprobs in zip(token_ids[1:], decoded_prompt_logprobs)
350-
])
351-
assert text != "".join([
352-
logprobs[token_id + 1].decoded_token
353-
for token_id, logprobs in zip(token_ids[1:], decoded_prompt_logprobs)
354-
])

tests/tool_use/test_jamba_tool_parser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from vllm.entrypoints.openai.protocol import (DeltaMessage, FunctionCall,
1313
ToolCall)
1414
from vllm.entrypoints.openai.tool_parsers import JambaToolParser
15-
from vllm.transformers_utils.detokenizer import detokenize_incrementally
15+
from vllm.transformers_utils.detokenizer_utils import detokenize_incrementally
1616
from vllm.transformers_utils.tokenizer import AnyTokenizer, get_tokenizer
1717

1818
MODEL = "ai21labs/Jamba-tiny-dev"

tests/tool_use/test_qwen3coder_tool_parser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
ToolCall)
1414
from vllm.entrypoints.openai.tool_parsers.qwen3coder_tool_parser import (
1515
Qwen3CoderToolParser)
16-
from vllm.transformers_utils.detokenizer import detokenize_incrementally
16+
from vllm.transformers_utils.detokenizer_utils import detokenize_incrementally
1717
from vllm.transformers_utils.tokenizer import AnyTokenizer, get_tokenizer
1818

1919
MODEL = "Qwen/Qwen3-Coder-30B-A3B-Instruct-FP8"

0 commit comments

Comments
 (0)