@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 885ca6d31d
Fork 0

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 14, 05:30 UTC

[Misc] Fix warnings for mistral model (#23552)

Signed-off-by: zjy0516 <riverclouds.zhu@qq.com> Signed-off-by: Jiangyun Zhu <riverclouds.zhu@qq.com> Co-authored-by: Patrick von Platen <patrick.v.platen@gmail.com>

Jiangyun Zhu committed Aug 29, 2025 at 14:58 UTC 885ca6d31db8816ee08e3fa634fbb58add289898
3 files changed +31 -23
vllm/model_executor/models/pixtral.py
+7 -5
@@ -15,7 +15,7 @@ from mistral_common.protocol.instruct.messages import (ImageChunk, TextChunk,
15 from mistral_common.protocol.instruct.request import ChatCompletionRequest
16 from mistral_common.tokens.tokenizers.multimodal import ImageEncoder
17 from PIL import Image
18 -from transformers import PixtralVisionConfig, TensorType
18 +from transformers import BatchFeature, PixtralVisionConfig, TensorType
19 from transformers.image_utils import ImageInput
20 from transformers.models.pixtral.image_processing_pixtral import (
21 _num_image_tokens as _get_pixtral_hf_num_image_tokens)
@@ -163,10 +163,12 @@ class PixtralProcessorAdapter:
163 images_processed.append(image_processed)
164 images_tokens.append(image_tokens)
165
166 - return {
167 - "input_ids": torch.cat(images_tokens)[None].expand(len(text), -1),
168 - "images": images_processed,
169 - }
166 + return BatchFeature({
167 + "input_ids":
168 + torch.cat(images_tokens)[None].expand(len(text), -1),
169 + "images":
170 + images_processed,
171 + })
172
173
174 class PixtralProcessingInfo(BaseProcessingInfo):
vllm/model_executor/models/voxtral.py
+7 -5
@@ -17,7 +17,7 @@ from mistral_common.protocol.instruct.messages import (AudioChunk, RawAudio,
17 from mistral_common.protocol.instruct.request import ChatCompletionRequest
18 from mistral_common.protocol.transcription.request import TranscriptionRequest
19 from mistral_common.tokens.tokenizers.audio import Audio, AudioEncoder
20 -from transformers import TensorType, WhisperConfig
20 +from transformers import BatchFeature, TensorType, WhisperConfig
21 from transformers.tokenization_utils_base import TextInput
22
23 from vllm.config import ModelConfig, SpeechToTextConfig, VllmConfig
@@ -156,10 +156,12 @@ class VoxtralProcessorAdapter:
156 audios_tokens.append(torch.tensor(audio_tokens))
157 audios_processed.append(torch.tensor(audio))
158
159 - return {
160 - "input_ids": torch.cat(audios_tokens)[None].expand(len(text), -1),
161 - "audio_arrays": audios_processed,
162 - }
159 + return BatchFeature({
160 + "input_ids":
161 + torch.cat(audios_tokens)[None].expand(len(text), -1),
162 + "audio_arrays":
163 + audios_processed,
164 + })
165
166
167 class VoxtralProcessingInfo(BaseProcessingInfo):
vllm/transformers_utils/tokenizers/mistral.py
+17 -13
@@ -204,18 +204,16 @@ class MistralTokenizer(TokenizerBase):
204 self.version: int = int(_mistral_version_str.split("v")[-1])
205
206 tokenizer_ = tokenizer.instruct_tokenizer.tokenizer
207 - from mistral_common.tokens.tokenizers.tekken import (
208 - SpecialTokenPolicy, Tekkenizer)
207 + from mistral_common.tokens.tokenizers.base import SpecialTokenPolicy
208 + from mistral_common.tokens.tokenizers.tekken import Tekkenizer
209 +
210 self.is_tekken = isinstance(tokenizer_, Tekkenizer)
211 from mistral_common.tokens.tokenizers.sentencepiece import (
212 SentencePieceTokenizer)
213 self.is_spm = isinstance(tokenizer_, SentencePieceTokenizer)
213 - if self.is_tekken:
214 - # Make sure special tokens will not raise
215 - tokenizer_.special_token_policy = SpecialTokenPolicy.IGNORE
216 - elif self.is_spm:
217 - pass
218 - else:
214 + self._special_token_policy = (SpecialTokenPolicy.IGNORE
215 + if self.is_tekken else None)
216 + if not (self.is_tekken or self.is_spm):
217 raise TypeError(f"Unsupported tokenizer: {type(tokenizer_)}")
218
219 self._vocab = tokenizer_.vocab()
@@ -430,7 +428,8 @@ class MistralTokenizer(TokenizerBase):
428 return self.tokenizer.unk_id
429
430 ids = [_token_to_id(t) for t in tokens]
433 - decoded = self.tokenizer.decode(ids)
431 + decoded = self.tokenizer.decode(ids,
432 + self._special_token_policy)
433 else:
434 decoded = "".join(tokens)
435 else:
@@ -444,7 +443,8 @@ class MistralTokenizer(TokenizerBase):
443 if token in special_tokens:
444 if regular_tokens:
445 decoded_list.append(
447 - self.tokenizer.decode(regular_tokens))
446 + self.tokenizer.decode(regular_tokens,
447 + self._special_token_policy))
448 regular_tokens = []
449 decoded_list.append(token)
450 else:
@@ -452,7 +452,8 @@ class MistralTokenizer(TokenizerBase):
452
453 if regular_tokens:
454 decoded_list.append(
455 - self.tokenizer.decode(regular_tokens)) # type: ignore
455 + self.tokenizer.decode(regular_tokens,
456 + self._special_token_policy))
457
458 decoded = ''.join(decoded_list)
459
@@ -470,7 +471,7 @@ class MistralTokenizer(TokenizerBase):
471
472 if isinstance(ids, int):
473 ids = [ids]
473 - return self.tokenizer.decode(ids)
474 + return self.tokenizer.decode(ids, self._special_token_policy)
475
476 def convert_ids_to_tokens(
477 self,
@@ -511,6 +512,9 @@ class MistralTokenizer(TokenizerBase):
512 # See: https://github.com/vllm-project/vllm/pull/8640
513 # https://github.com/vllm-project/vllm/pull/9625
514 # if underlying tokenizeir is sentencepiece, we just add "�"
514 - tokens = [self.tokenizer.id_to_byte_piece(id) for id in ids]
515 + tokens = [
516 + self.tokenizer.id_to_byte_piece(id, self._special_token_policy)
517 + for id in ids
518 + ]
519
520 return tokens