@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 9572f74f15
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 10, 12:45 UTC

[Model] Enable LoRA support for tower and connector in DotsOCR (#31825)

Signed-off-by: ShaanveerS <shaanver.singh@gmail.com>

ShaanveerS committed Jan 8, 2026 at 07:50 UTC 9572f74f1509e138988bf8288291f1f217f101ae
2 files changed +9 -1
docs/models/supported_models.md
+1 -1
@@ -371,7 +371,7 @@ th {
371 | `DeepseekV2ForCausalLM` | DeepSeek-V2 | `deepseek-ai/DeepSeek-V2`, `deepseek-ai/DeepSeek-V2-Chat`, etc. | ✅︎ | ✅︎ |
372 | `DeepseekV3ForCausalLM` | DeepSeek-V3 | `deepseek-ai/DeepSeek-V3`, `deepseek-ai/DeepSeek-R1`, `deepseek-ai/DeepSeek-V3.1`, etc. | ✅︎ | ✅︎ |
373 | `Dots1ForCausalLM` | dots.llm1 | `rednote-hilab/dots.llm1.base`, `rednote-hilab/dots.llm1.inst`, etc. | | ✅︎ |
374 -| `DotsOCRForCausalLM` | dots_ocr | `rednote-hilab/dots.ocr` | | ✅︎ |
374 +| `DotsOCRForCausalLM` | dots_ocr | `rednote-hilab/dots.ocr` | ✅︎ | ✅︎ |
375 | `Ernie4_5ForCausalLM` | Ernie4.5 | `baidu/ERNIE-4.5-0.3B-PT`, etc. | ✅︎ | ✅︎ |
376 | `Ernie4_5_MoeForCausalLM` | Ernie4.5MoE | `baidu/ERNIE-4.5-21B-A3B-PT`, `baidu/ERNIE-4.5-300B-A47B-PT`, etc. |✅︎| ✅︎ |
377 | `ExaoneForCausalLM` | EXAONE-3 | `LGAI-EXAONE/EXAONE-3.0-7.8B-Instruct`, etc. | ✅︎ | ✅︎ |
vllm/model_executor/models/dots_ocr.py
+8
@@ -765,6 +765,14 @@ class DotsOCRForCausalLM(nn.Module, SupportsMultiModal, SupportsPP, SupportsLoRA
765 def get_language_model(self) -> torch.nn.Module:
766 return self.language_model
767
768 + def get_num_mm_encoder_tokens(self, num_image_tokens: int) -> int:
769 + merge_size = self.vision_tower.spatial_merge_size
770 + return num_image_tokens * (merge_size**2)
771 +
772 + def get_num_mm_connector_tokens(self, num_vision_tokens: int) -> int:
773 + merge_size = self.vision_tower.spatial_merge_size
774 + return num_vision_tokens // (merge_size**2)
775 +
776 def embed_multimodal(self, **kwargs: object) -> MultiModalEmbeddings:
777 image_input = self._parse_and_validate_image_input(**kwargs)
778 if image_input is None: