@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 6cd4ae8acd
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 15, 06:00 UTC

[Frontend] Add tqdm_leave_pbar to control progress bar visibility (#19357)

Signed-off-by: reidliu41 <reid201711@gmail.com> Co-authored-by: reidliu41 <reid201711@gmail.com>

Reid committed Jun 10, 2025 at 12:55 UTC 6cd4ae8acdaacdfc89d2e025b24ba1f1927af260
1 file changed +52 -30
vllm/entrypoints/llm.py
+52 -30
@@ -281,7 +281,7 @@ class LLM:
281 sampling_params: Optional[Union[SamplingParams,
282 Sequence[SamplingParams]]] = None,
283 *,
284 - use_tqdm: bool = True,
284 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
285 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
286 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
287 guided_options_request: Optional[Union[LLMGuidedOptions,
@@ -297,7 +297,7 @@ class LLM:
297 sampling_params: Optional[Union[SamplingParams,
298 list[SamplingParams]]] = None,
299 prompt_token_ids: Optional[list[int]] = None,
300 - use_tqdm: bool = True,
300 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
301 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
302 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
303 guided_options_request: Optional[Union[LLMGuidedOptions,
@@ -313,7 +313,7 @@ class LLM:
313 sampling_params: Optional[Union[SamplingParams,
314 list[SamplingParams]]] = None,
315 prompt_token_ids: Optional[list[list[int]]] = None,
316 - use_tqdm: bool = True,
316 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
317 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
318 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
319 guided_options_request: Optional[Union[LLMGuidedOptions,
@@ -330,7 +330,7 @@ class LLM:
330 list[SamplingParams]]] = None,
331 *,
332 prompt_token_ids: list[int],
333 - use_tqdm: bool = True,
333 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
334 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
335 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
336 guided_options_request: Optional[Union[LLMGuidedOptions,
@@ -347,7 +347,7 @@ class LLM:
347 list[SamplingParams]]] = None,
348 *,
349 prompt_token_ids: list[list[int]],
350 - use_tqdm: bool = True,
350 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
351 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
352 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
353 guided_options_request: Optional[Union[LLMGuidedOptions,
@@ -362,7 +362,7 @@ class LLM:
362 prompts: None,
363 sampling_params: None,
364 prompt_token_ids: Union[list[int], list[list[int]]],
365 - use_tqdm: bool = True,
365 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
366 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
367 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
368 guided_options_request: Optional[Union[LLMGuidedOptions,
@@ -382,7 +382,7 @@ class LLM:
382 sampling_params: Optional[Union[SamplingParams,
383 Sequence[SamplingParams]]] = None,
384 prompt_token_ids: Optional[Union[list[int], list[list[int]]]] = None,
385 - use_tqdm: bool = True,
385 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
386 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
387 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
388 guided_options_request: Optional[Union[LLMGuidedOptions,
@@ -404,7 +404,10 @@ class LLM:
404 When it is a single value, it is applied to every prompt.
405 When it is a list, the list must have the same length as the
406 prompts and it is paired one by one with the prompt.
407 - use_tqdm: Whether to use tqdm to display the progress bar.
407 + use_tqdm: If `True`, shows a tqdm progress bar.
408 + If a callable (e.g., `functools.partial(tqdm, leave=False)`),
409 + it is used to create the progress bar.
410 + If `False`, no progress bar is created.
411 lora_request: LoRA request to use for generation, if any.
412 prompt_adapter_request: Prompt Adapter request to use for
413 generation, if any.
@@ -678,7 +681,7 @@ class LLM:
681 list[list[ChatCompletionMessageParam]]],
682 sampling_params: Optional[Union[SamplingParams,
683 list[SamplingParams]]] = None,
681 - use_tqdm: bool = True,
684 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
685 lora_request: Optional[LoRARequest] = None,
686 chat_template: Optional[str] = None,
687 chat_template_content_format: ChatTemplateContentFormatOption = "auto",
@@ -709,7 +712,10 @@ class LLM:
712 is a single value, it is applied to every prompt. When it
713 is a list, the list must have the same length as the
714 prompts and it is paired one by one with the prompt.
712 - use_tqdm: Whether to use tqdm to display the progress bar.
715 + use_tqdm: If `True`, shows a tqdm progress bar.
716 + If a callable (e.g., `functools.partial(tqdm, leave=False)`),
717 + it is used to create the progress bar.
718 + If `False`, no progress bar is created.
719 lora_request: LoRA request to use for generation, if any.
720 chat_template: The template to use for structuring the chat.
721 If not provided, the model's default chat template will be used.
@@ -823,7 +829,7 @@ class LLM:
829 Sequence[PoolingParams]]] = None,
830 *,
831 truncate_prompt_tokens: Optional[int] = None,
826 - use_tqdm: bool = True,
832 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
833 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
834 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
835 ) -> list[PoolingRequestOutput]:
@@ -838,7 +844,7 @@ class LLM:
844 Sequence[PoolingParams]]] = None,
845 prompt_token_ids: Optional[list[int]] = None,
846 truncate_prompt_tokens: Optional[int] = None,
841 - use_tqdm: bool = True,
847 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
848 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
849 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
850 ) -> list[PoolingRequestOutput]:
@@ -853,7 +859,7 @@ class LLM:
859 Sequence[PoolingParams]]] = None,
860 prompt_token_ids: Optional[list[list[int]]] = None,
861 truncate_prompt_tokens: Optional[int] = None,
856 - use_tqdm: bool = True,
862 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
863 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
864 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
865 ) -> list[PoolingRequestOutput]:
@@ -869,7 +875,7 @@ class LLM:
875 *,
876 prompt_token_ids: list[int],
877 truncate_prompt_tokens: Optional[int] = None,
872 - use_tqdm: bool = True,
878 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
879 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
880 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
881 ) -> list[PoolingRequestOutput]:
@@ -885,7 +891,7 @@ class LLM:
891 *,
892 prompt_token_ids: list[list[int]],
893 truncate_prompt_tokens: Optional[int] = None,
888 - use_tqdm: bool = True,
894 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
895 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
896 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
897 ) -> list[PoolingRequestOutput]:
@@ -899,7 +905,7 @@ class LLM:
905 pooling_params: None,
906 prompt_token_ids: Union[list[int], list[list[int]]],
907 truncate_prompt_tokens: Optional[int] = None,
902 - use_tqdm: bool = True,
908 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
909 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
910 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
911 ) -> list[PoolingRequestOutput]:
@@ -918,7 +924,7 @@ class LLM:
924 Sequence[PoolingParams]]] = None,
925 prompt_token_ids: Optional[Union[list[int], list[list[int]]]] = None,
926 truncate_prompt_tokens: Optional[int] = None,
921 - use_tqdm: bool = True,
927 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
928 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
929 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
930 ) -> list[PoolingRequestOutput]:
@@ -935,7 +941,10 @@ class LLM:
941 for more details about the format of each prompts.
942 pooling_params: The pooling parameters for pooling. If None, we
943 use the default pooling parameters.
938 - use_tqdm: Whether to use tqdm to display the progress bar.
944 + use_tqdm: If `True`, shows a tqdm progress bar.
945 + If a callable (e.g., `functools.partial(tqdm, leave=False)`),
946 + it is used to create the progress bar.
947 + If `False`, no progress bar is created.
948 lora_request: LoRA request to use for generation, if any.
949 prompt_adapter_request: Prompt Adapter request to use for
950 generation, if any.
@@ -1005,7 +1014,7 @@ class LLM:
1014 /,
1015 *,
1016 truncate_prompt_tokens: Optional[int] = None,
1008 - use_tqdm: bool = True,
1017 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
1018 pooling_params: Optional[Union[PoolingParams,
1019 Sequence[PoolingParams]]] = None,
1020 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
@@ -1024,7 +1033,10 @@ class LLM:
1033 for more details about the format of each prompts.
1034 pooling_params: The pooling parameters for pooling. If None, we
1035 use the default pooling parameters.
1027 - use_tqdm: Whether to use tqdm to display the progress bar.
1036 + use_tqdm: If `True`, shows a tqdm progress bar.
1037 + If a callable (e.g., `functools.partial(tqdm, leave=False)`),
1038 + it is used to create the progress bar.
1039 + If `False`, no progress bar is created.
1040 lora_request: LoRA request to use for generation, if any.
1041 prompt_adapter_request: Prompt Adapter request to use for
1042 generation, if any.
@@ -1051,7 +1063,7 @@ class LLM:
1063 prompts: Union[PromptType, Sequence[PromptType]],
1064 /,
1065 *,
1054 - use_tqdm: bool = True,
1066 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
1067 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
1068 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
1069 ) -> list[ClassificationRequestOutput]:
@@ -1066,7 +1078,10 @@ class LLM:
1078 prompts: The prompts to the LLM. You may pass a sequence of prompts
1079 for batch inference. See [PromptType][vllm.inputs.PromptType]
1080 for more details about the format of each prompts.
1069 - use_tqdm: Whether to use tqdm to display the progress bar.
1081 + use_tqdm: If `True`, shows a tqdm progress bar.
1082 + If a callable (e.g., `functools.partial(tqdm, leave=False)`),
1083 + it is used to create the progress bar.
1084 + If `False`, no progress bar is created.
1085 lora_request: LoRA request to use for generation, if any.
1086 prompt_adapter_request: Prompt Adapter request to use for
1087 generation, if any.
@@ -1092,7 +1107,7 @@ class LLM:
1107 text_1: list[Union[str, TextPrompt, TokensPrompt]],
1108 text_2: list[Union[str, TextPrompt, TokensPrompt]],
1109 truncate_prompt_tokens: Optional[int] = None,
1095 - use_tqdm: bool = True,
1110 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
1111 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
1112 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
1113 ) -> list[ScoringRequestOutput]:
@@ -1126,7 +1141,7 @@ class LLM:
1141 text_1: list[str],
1142 text_2: list[str],
1143 truncate_prompt_tokens: Optional[int] = None,
1129 - use_tqdm: bool = True,
1144 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
1145 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
1146 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
1147 ) -> list[ScoringRequestOutput]:
@@ -1178,7 +1193,7 @@ class LLM:
1193 /,
1194 *,
1195 truncate_prompt_tokens: Optional[int] = None,
1181 - use_tqdm: bool = True,
1196 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
1197 lora_request: Optional[Union[list[LoRARequest], LoRARequest]] = None,
1198 prompt_adapter_request: Optional[PromptAdapterRequest] = None,
1199 ) -> list[ScoringRequestOutput]:
@@ -1198,7 +1213,10 @@ class LLM:
1213 text_2: The texts to pair with the query to form the input
1214 to the LLM. See [PromptType][vllm.inputs.PromptType] for
1215 more details about the format of each prompts.
1201 - use_tqdm: Whether to use tqdm to display the progress bar.
1216 + use_tqdm: If `True`, shows a tqdm progress bar.
1217 + If a callable (e.g., `functools.partial(tqdm, leave=False)`),
1218 + it is used to create the progress bar.
1219 + If `False`, no progress bar is created.
1220 lora_request: LoRA request to use for generation, if any.
1221 prompt_adapter_request: Prompt Adapter request to use for
1222 generation, if any.
@@ -1379,7 +1397,7 @@ class LLM:
1397 params: Union[SamplingParams, Sequence[SamplingParams], PoolingParams,
1398 Sequence[PoolingParams]],
1399 *,
1382 - use_tqdm: bool,
1400 + use_tqdm: Union[bool, Callable[..., tqdm]] = True,
1401 lora_request: Optional[Union[Sequence[LoRARequest], LoRARequest]],
1402 prompt_adapter_request: Optional[PromptAdapterRequest],
1403 tokenization_kwargs: Optional[dict[str, Any]] = None,
@@ -1417,7 +1435,8 @@ class LLM:
1435 # Add requests to the engine.
1436 it = prompts
1437 if use_tqdm:
1420 - it = tqdm(it, desc="Adding requests")
1438 + tqdm_func = use_tqdm if callable(use_tqdm) else tqdm
1439 + it = tqdm_func(it, desc="Adding requests")
1440
1441 for i, prompt in enumerate(it):
1442 self._add_request(
@@ -1474,12 +1493,15 @@ class LLM:
1493 return params
1494
1495 def _run_engine(
1477 - self, *, use_tqdm: bool
1496 + self,
1497 + *,
1498 + use_tqdm: Union[bool, Callable[..., tqdm]] = True
1499 ) -> list[Union[RequestOutput, PoolingRequestOutput]]:
1500 # Initialize tqdm.
1501 if use_tqdm:
1502 num_requests = self.llm_engine.get_num_unfinished_requests()
1482 - pbar = tqdm(
1503 + tqdm_func = use_tqdm if callable(use_tqdm) else tqdm
1504 + pbar = tqdm_func(
1505 total=num_requests,
1506 desc="Processed prompts",
1507 dynamic_ncols=True,