From 8b0a68f1bf110fd5e3cc313ff015f344ee514fd0 Mon Sep 17 00:00:00 2001 From: Liangsheng Yin Date: Thu, 18 Dec 2025 16:28:07 +0800 Subject: [PATCH] Monkey patch deepseek-ocr's `v_head_dim` (#15384) Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- python/sglang/srt/utils/hf_transformers_utils.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/python/sglang/srt/utils/hf_transformers_utils.py b/python/sglang/srt/utils/hf_transformers_utils.py index ef04b85c6..f0db619ee 100644 --- a/python/sglang/srt/utils/hf_transformers_utils.py +++ b/python/sglang/srt/utils/hf_transformers_utils.py @@ -232,6 +232,17 @@ def _is_deepseek_ocr_model(config: PretrainedConfig) -> bool: ) +def _override_deepseek_ocr_v_head_dim(config: DeepseekVLV2Config) -> None: + # FIXME: deepseek-ocr's v_head_dim is set to 0 in its config file. + # https://huggingface.co/deepseek-ai/DeepSeek-OCR/blob/main/config.json#L116 + if config.text_config.v_head_dim == 0: + V_HEAD_DIM_PATCH = 128 + config.text_config.v_head_dim = V_HEAD_DIM_PATCH + logger.warning( + f"Overriding deepseek-ocr's v_head_dim from 0 to {V_HEAD_DIM_PATCH} to avoid potential issues." + ) + + @lru_cache_frozenset(maxsize=32) def get_config( model: str, @@ -303,6 +314,10 @@ def get_config( model_type = "deepseek-ocr" config_class = _CONFIG_REGISTRY[model_type] config = config_class.from_pretrained(model, revision=revision) + + if _is_deepseek_ocr_model(config): + _override_deepseek_ocr_v_head_dim(config) + # NOTE(HandH1998): Qwen2VL requires `_name_or_path` attribute in `config`. setattr(config, "_name_or_path", model)