From f4505e2ee395a581439839ef6e4383c0b308e8fc Mon Sep 17 00:00:00 2001 From: Liangsheng Yin Date: Tue, 31 Mar 2026 12:54:34 -0700 Subject: [PATCH] Fix ineffective is_base_mistral CI patch for HF API rate limiting (#21729) --- .../sglang/srt/utils/hf_transformers_utils.py | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/python/sglang/srt/utils/hf_transformers_utils.py b/python/sglang/srt/utils/hf_transformers_utils.py index faf43db97..68ad651b1 100644 --- a/python/sglang/srt/utils/hf_transformers_utils.py +++ b/python/sglang/srt/utils/hf_transformers_utils.py @@ -714,16 +714,19 @@ class TokenizerWarningsFilter(logging.Filter): _is_base_mistral_patched = False -# transformers version where is_base_mistral calls model_info() on every tokenizer load +# transformers version where _patch_mistral_regex calls model_info() on every tokenizer load _TRANSFORMERS_PATCHED_VERSION = "5.3.0" def _patch_is_base_mistral_in_ci(): - """Patch transformers' is_base_mistral to avoid HF API calls in CI. + """Patch transformers' _patch_mistral_regex to avoid HF API calls in CI. - transformers calls model_info() inside _patch_mistral_regex -> is_base_mistral - for every tokenizer load, which hits HF API even with HF_HUB_OFFLINE=1. - In CI this exhausts the 3000 req/5min rate limit and causes 429 errors. + transformers defines is_base_mistral as a local function inside + _patch_mistral_regex, so it cannot be patched via module attribute. + Instead we replace the entire _patch_mistral_regex classmethod with a + version that simply returns the tokenizer unchanged. + + In CI this prevents exhausting the 3000 req/5min HF API rate limit. """ global _is_base_mistral_patched if _is_base_mistral_patched: @@ -739,18 +742,23 @@ def _patch_is_base_mistral_in_ci(): if transformers.__version__ != _TRANSFORMERS_PATCHED_VERSION: logger.warning( "transformers version changed to %s (expected %s), " - "is_base_mistral patch skipped — may need update if 429 errors recur", + "_patch_mistral_regex patch skipped — may need update if 429 errors recur", transformers.__version__, _TRANSFORMERS_PATCHED_VERSION, ) _is_base_mistral_patched = True # don't warn repeatedly return - import transformers.tokenization_utils_tokenizers as tut + from transformers import PreTrainedTokenizerFast - if hasattr(tut, "is_base_mistral"): - tut.is_base_mistral = lambda *a, **kw: False - logger.info("CI: patched is_base_mistral to skip HF API calls") + if hasattr(PreTrainedTokenizerFast, "_patch_mistral_regex"): + + @classmethod + def _noop_patch_mistral_regex(cls, tokenizer, *args, **kwargs): + return tokenizer + + PreTrainedTokenizerFast._patch_mistral_regex = _noop_patch_mistral_regex + logger.info("CI: patched _patch_mistral_regex to skip HF API calls") _is_base_mistral_patched = True