@@ -46,6 +46,10 @@ def __init__(self, model_id: str):
4646 self ._engine_args_kimi_vl ,
4747 self ._load_kimi_vl ,
4848 ),
49+ "deepseek-ai/deepseek-vl2" : (
50+ self ._engine_args_deepseek_vl2 ,
51+ self ._load_deepseek_vl2 ,
52+ ),
4953 }
5054
5155 for internvl_model in INTERNVL_MODELS :
@@ -199,6 +203,36 @@ def _load_internvl(
199203
200204 return ModelRequestData (prompts = prompts , stop_token_ids = stop_token_ids )
201205
206+ def _engine_args_deepseek_vl2 (self ) -> EngineArgs :
207+ return EngineArgs (
208+ model = self .model_id ,
209+ max_model_len = 4096 ,
210+ max_num_seqs = 2 ,
211+ hf_overrides = {"architectures" : ["DeepseekVLV2ForCausalLM" ]},
212+ limit_mm_per_prompt = {self .modality : 1 },
213+ )
214+
215+ def _load_deepseek_vl2 (
216+ self , texts : list [str ], images_list : list [list [Image .Image ]]
217+ ) -> ModelRequestData :
218+ if len (texts ) != len (images_list ):
219+ msg = "texts and images_list must have identical length"
220+ raise ValueError (msg )
221+
222+ prompts : list [str ] = []
223+ for text , images in zip (texts , images_list ):
224+ num_images = len (images )
225+ if num_images > 0 :
226+ image_placeholders = " " .join ("<image>" for _ in range (num_images ))
227+ user_prefix = f"<|User|>: { image_placeholders } \n "
228+ else :
229+ user_prefix = "<|User|>:\n "
230+
231+ prompt = f"{ user_prefix } { text } \n \n <|Assistant|>:"
232+ prompts .append (prompt )
233+
234+ return ModelRequestData (prompts = prompts )
235+
202236
203237def _generate_dummy_images (count : int ) -> list [Image .Image ]:
204238 """Return placeholder PIL images for prompt-construction tests."""
@@ -248,6 +282,20 @@ def preview_internvl_requests(
248282 return registry .build_requests (texts , images_list )
249283
250284
285+ def preview_deepseek_vl2_requests (
286+ texts : list [str ], image_counts : list [int ]
287+ ) -> ModelRequestData :
288+ """Build prompts for Deepseek-VL2 using dummy images (testing helper)."""
289+
290+ if len (texts ) != len (image_counts ):
291+ msg = "texts and image_counts must have identical length"
292+ raise ValueError (msg )
293+
294+ images_list = [_generate_dummy_images (count ) for count in image_counts ]
295+ registry = VLLMModelRegistry ("deepseek-ai/deepseek-vl2" )
296+ return registry .build_requests (texts , images_list )
297+
298+
251299def _parse_cli_args () -> argparse .Namespace :
252300 parser = argparse .ArgumentParser (
253301 description = "Preview prompts generated by the VLLM model registry." ,
@@ -258,6 +306,7 @@ def _parse_cli_args() -> argparse.Namespace:
258306 choices = [
259307 "Qwen/Qwen3-VL-30B-A3B-Instruct" ,
260308 "moonshotai/Kimi-VL-A3B-Instruct" ,
309+ "deepseek-ai/deepseek-vl2" ,
261310 * INTERNVL_MODELS ,
262311 ],
263312 help = "Registered model identifier to preview." ,
@@ -308,6 +357,7 @@ def _preview_cli() -> None:
308357 preview_dispatch : dict [str , Callable [[list [str ], list [int ]], ModelRequestData ]] = {
309358 "Qwen/Qwen3-VL-30B-A3B-Instruct" : preview_qwen3_vl_requests ,
310359 "moonshotai/Kimi-VL-A3B-Instruct" : preview_kimi_vl_requests ,
360+ "deepseek-ai/deepseek-vl2" : preview_deepseek_vl2_requests ,
311361 }
312362
313363 for internvl_model in INTERNVL_MODELS :
0 commit comments