Skip to content

Commit 53aa46f

Browse files
authored
[model] support kimi_k25 (#52)
1 parent f93cbdb commit 53aa46f

6 files changed

Lines changed: 38 additions & 2 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ The following is the list of models supported by MCore-Bridge:
8585
| DeepSeek | deepseek_v3, deepseek_v32 |
8686
| GLM | glm4, glm4_moe, glm4_moe_lite<br />glm4v, glm4v_moe, <br />glm_moe_dsa |
8787
| MiniMax | minimax_m2 |
88-
| Kimi | kimi_k2, kimi_vl |
88+
| Kimi | kimi_k2, kimi_vl, kimi_k25 |
8989
| InternLM | internlm3, internvl_chat, internvl |
9090
| Ovis | ovis2_5 |
9191
| Llama | llama, llama4 |

README_zh.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ uv pip install -e . --torch-backend=auto
8484
| DeepSeek | deepseek_v3, deepseek_v32 |
8585
| GLM | glm4, glm4_moe, glm4_moe_lite<br />glm4v, glm4v_moe, <br />glm_moe_dsa |
8686
| MiniMax | minimax_m2 |
87-
| Kimi | kimi_k2, kimi_vl |
87+
| Kimi | kimi_k2, kimi_vl, kimi_k25 |
8888
| InternLM | internlm3, internvl_chat, internvl |
8989
| Ovis | ovis2_5 |
9090
| Llama | llama, llama4 |

src/mcore_bridge/config/model_config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,7 @@ def __post_init__(self):
321321
self.mcore_model_type = get_mcore_model_type(self.hf_model_type)
322322
self.model_meta = get_model_meta(self.mcore_model_type)
323323
self.is_multimodal = self.model_meta.visual_cls is not None
324+
self.support_multimodal = self.is_multimodal and getattr(self.model_meta.visual_cls, 'support_multimodal', True)
324325
if self.is_multimodal and self.hf_config is None:
325326
raise ValueError('Multimodal model must specify hf_config.')
326327
self.is_moe_model = self.num_moe_experts is not None

src/mcore_bridge/model/constant.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ class MLLMModelType:
2727
kimi_vl = 'kimi_vl'
2828
llama4 = 'llama4'
2929

30+
kimi_k25 = 'kimi_k25'
31+
3032

3133
class ModelType(LLMModelType, MLLMModelType):
3234
pass

src/mcore_bridge/model/mm_gpts/kimi_vl.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,35 @@ def _merge_with_image_features(self, inputs_embeds, input_ids, image_features):
6666
bridge_cls=KimiVLBridge,
6767
visual_cls=KimiVLVit,
6868
))
69+
70+
71+
class KimiK25Vit(HuggingFaceVit):
72+
module_mapping = {'vision_tower': 'vision_tower', 'mm_projector': 'mm_projector'}
73+
_vision_tower = ['vision_tower']
74+
_aligner = ['mm_projector']
75+
support_multimodal = False
76+
77+
def prepare_model(self, hf_config: PretrainedConfig):
78+
output = []
79+
for key in ['MoonViT3dPretrainedModel', 'PatchMergerMLP', 'VisionTowerConfig', 'ProjectorConfig']:
80+
output.append(get_class_from_dynamic_module(f'modeling_kimi_k25.{key}', hf_config.name_or_path))
81+
MoonViT3dPretrainedModel, PatchMergerMLP, VisionTowerConfig, ProjectorConfig = output
82+
assert hf_config.vision_config.mm_projector_type == 'patchmerger'
83+
vit_config = VisionTowerConfig(hf_config.vision_config)
84+
proj_config = ProjectorConfig(hf_config.vision_config)
85+
self.vision_tower = MoonViT3dPretrainedModel._from_config(vit_config)
86+
self.mm_projector = PatchMergerMLP(proj_config).to(self.vision_tower.dtype)
87+
88+
def get_inputs_embeds(self, inputs_embeds, **kwargs):
89+
pixel_values = kwargs.pop('pixel_values', None)
90+
if pixel_values is not None:
91+
raise NotImplementedError('Kimi-K25 currently only supports plain text training.')
92+
return inputs_embeds
93+
94+
95+
register_model(ModelMeta(
96+
ModelType.kimi_k25,
97+
['kimi_k25'],
98+
bridge_cls=KimiVLBridge,
99+
visual_cls=KimiK25Vit,
100+
))

src/mcore_bridge/model/mm_gpts/utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ def new_get_cached_module_file(pretrained_model_name_or_path, *args, **kwargs):
2626

2727
class HuggingFaceVit(_HuggingFaceModule, ABC):
2828
module_mapping = {} # hf -> mcore
29+
support_multimodal = True
2930

3031
@contextmanager
3132
def patch_hf_config(self):

0 commit comments

Comments
 (0)