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 8, 16:30 UTC
[Bugfix] Voxtral prompt/audio placeholder alignment (#34140)
Signed-off-by: Artus KG <artuskg@gmail.com>
Artus Krohn-Grimberghe committed
Feb 9, 2026 at 20:30 UTC
8fd31f62452960efdd6dd7b912c388f487536b3c
1 file changed
+21
-3
vllm/model_executor/models/voxtral.py
+21
-3
@@ -187,6 +187,7 @@ class VoxtralProcessingInfo(BaseProcessingInfo):
187
def get_data_parser(self):
188
return MultiModalDataParser(
189
target_sr=self.get_hf_processor().sampling_rate,
190
+ target_channels=1,
191
expected_hidden_size=self._get_expected_hidden_size(),
192
)
193
@@ -289,10 +290,24 @@ class VoxtralMultiModalProcessor(BaseMultiModalProcessor[VoxtralProcessingInfo])
290
processor = self.info.get_hf_processor(**hf_processor_mm_kwargs)
291
292
audio_id = processor.audio_token_id
293
+ out_mm_data = out_mm_kwargs.require_data()
294
+ out_audio_items = out_mm_data.get("audio", [])
295
296
def get_replacement(item_idx: int):
294
- audios = mm_items.get_items("audio", AudioProcessorItems)
295
- audio_len = audios.get_audio_length(item_idx)
297
+ if item_idx < len(out_audio_items):
298
+ out_audio_data = out_audio_items[item_idx].get_data()
299
+ audio_arr = out_audio_data["audio_arrays"]
300
+ if isinstance(audio_arr, (torch.Tensor, np.ndarray)):
301
+ audio_len = len(audio_arr)
302
+ else:
303
+ raise TypeError(
304
+ "Unexpected type for audio_arrays in out_mm_kwargs: "
305
+ f"{type(audio_arr)}"
306
+ )
307
+ else:
308
+ # Fallback for unexpected processor outputs.
309
+ audios = mm_items.get_items("audio", AudioProcessorItems)
310
+ audio_len = audios.get_audio_length(item_idx)
311
312
nb_audio_tokens = processor.get_num_audio_tokens(audio_len)
313
@@ -495,7 +510,10 @@ class VoxtralForConditionalGeneration(
510
return TokensPrompt(
511
prompt_token_ids=tokenized.tokens,
512
multi_modal_data={
498
- "audio": (tokenized.audios[0].audio_array, stt_config.sample_rate)
513
+ "audio": [
514
+ (audio.audio_array, stt_config.sample_rate)
515
+ for audio in tokenized.audios
516
+ ],
517
},
518
)
519