From ec360646542c553a6cde0d8f95a21965ef0250d8 Mon Sep 17 00:00:00 2001 From: Nick Hill Date: Wed, 8 Oct 2025 14:41:14 -0700 Subject: [PATCH 1/2] [Bugfix] Catch and log invalid token ids in detokenizer This is an update to the "workaround" added in https://github.com/vllm-project/vllm/pull/24351. That PR insulates against occasional negative token ids that can be produced occasionally, though we still don't know the root cause. With the update to tokenizers 0.22.1, this error manifests as a TypeError rather than an OverflowError, so the patch needs to be updated to account for this. Signed-off-by: Nick Hill --- vllm/v1/engine/detokenizer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vllm/v1/engine/detokenizer.py b/vllm/v1/engine/detokenizer.py index 9d1d7558b1ed..3c5a7bce2b87 100644 --- a/vllm/v1/engine/detokenizer.py +++ b/vllm/v1/engine/detokenizer.py @@ -227,7 +227,7 @@ def decode_next(self, next_token_id: int) -> str: def _protected_step(self, next_token_id: int) -> Optional[str]: try: token = self.stream.step(self.tokenizer, next_token_id) - except OverflowError: + except (OverflowError, TypeError): # Handle rare observed overflow, still to be diagnosed. # See https://github.com/vllm-project/vllm/issues/21951. logger.exception("Encountered invalid token id: %d", next_token_id) From d327da02c7271b976810ea8c275010c773da1f49 Mon Sep 17 00:00:00 2001 From: Nick Hill Date: Wed, 8 Oct 2025 14:54:11 -0700 Subject: [PATCH 2/2] change format specifier Signed-off-by: Nick Hill --- vllm/v1/engine/detokenizer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vllm/v1/engine/detokenizer.py b/vllm/v1/engine/detokenizer.py index 3c5a7bce2b87..5efde9e2ff87 100644 --- a/vllm/v1/engine/detokenizer.py +++ b/vllm/v1/engine/detokenizer.py @@ -230,7 +230,7 @@ def _protected_step(self, next_token_id: int) -> Optional[str]: except (OverflowError, TypeError): # Handle rare observed overflow, still to be diagnosed. # See https://github.com/vllm-project/vllm/issues/21951. - logger.exception("Encountered invalid token id: %d", next_token_id) + logger.exception("Encountered invalid token id: %r", next_token_id) token = None except Exception as e: if not str(e).startswith(INVALID_PREFIX_ERR_MSG):