Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ The following is the list of models supported by MCore-Bridge:
| DeepSeek | deepseek_v3, deepseek_v32 |
| GLM | glm4, glm4_moe, glm4_moe_lite<br />glm4v, glm4v_moe, <br />glm_moe_dsa |
| MiniMax | minimax_m2 |
| Kimi | kimi_k2, kimi_vl |
| Kimi | kimi_k2, kimi_vl, kimi_k25 |
| InternLM | internlm3, internvl_chat, internvl |
| Ovis | ovis2_5 |
| Llama | llama, llama4 |
Expand Down
2 changes: 1 addition & 1 deletion README_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ uv pip install -e . --torch-backend=auto
| DeepSeek | deepseek_v3, deepseek_v32 |
| GLM | glm4, glm4_moe, glm4_moe_lite<br />glm4v, glm4v_moe, <br />glm_moe_dsa |
| MiniMax | minimax_m2 |
| Kimi | kimi_k2, kimi_vl |
| Kimi | kimi_k2, kimi_vl, kimi_k25 |
| InternLM | internlm3, internvl_chat, internvl |
| Ovis | ovis2_5 |
| Llama | llama, llama4 |
Expand Down
1 change: 1 addition & 0 deletions src/mcore_bridge/config/model_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,7 @@ def __post_init__(self):
self.mcore_model_type = get_mcore_model_type(self.hf_model_type)
self.model_meta = get_model_meta(self.mcore_model_type)
self.is_multimodal = self.model_meta.visual_cls is not None
self.support_multimodal = self.is_multimodal and getattr(self.model_meta.visual_cls, 'support_multimodal', True)
if self.is_multimodal and self.hf_config is None:
raise ValueError('Multimodal model must specify hf_config.')
self.is_moe_model = self.num_moe_experts is not None
Expand Down
2 changes: 2 additions & 0 deletions src/mcore_bridge/model/constant.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ class MLLMModelType:
kimi_vl = 'kimi_vl'
llama4 = 'llama4'

kimi_k25 = 'kimi_k25'


class ModelType(LLMModelType, MLLMModelType):
pass
32 changes: 32 additions & 0 deletions src/mcore_bridge/model/mm_gpts/kimi_vl.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,35 @@ def _merge_with_image_features(self, inputs_embeds, input_ids, image_features):
bridge_cls=KimiVLBridge,
visual_cls=KimiVLVit,
))


class KimiK25Vit(HuggingFaceVit):
module_mapping = {'vision_tower': 'vision_tower', 'mm_projector': 'mm_projector'}
_vision_tower = ['vision_tower']
_aligner = ['mm_projector']
support_multimodal = False

def prepare_model(self, hf_config: PretrainedConfig):
output = []
for key in ['MoonViT3dPretrainedModel', 'PatchMergerMLP', 'VisionTowerConfig', 'ProjectorConfig']:
output.append(get_class_from_dynamic_module(f'modeling_kimi_k25.{key}', hf_config.name_or_path))
MoonViT3dPretrainedModel, PatchMergerMLP, VisionTowerConfig, ProjectorConfig = output
assert hf_config.vision_config.mm_projector_type == 'patchmerger'
Comment thread
Jintao-Huang marked this conversation as resolved.
vit_config = VisionTowerConfig(hf_config.vision_config)
proj_config = ProjectorConfig(hf_config.vision_config)
self.vision_tower = MoonViT3dPretrainedModel._from_config(vit_config)
self.mm_projector = PatchMergerMLP(proj_config).to(self.vision_tower.dtype)

def get_inputs_embeds(self, inputs_embeds, **kwargs):
pixel_values = kwargs.pop('pixel_values', None)
if pixel_values is not None:
raise NotImplementedError('Kimi-K25 currently only supports plain text training.')
return inputs_embeds


register_model(ModelMeta(
ModelType.kimi_k25,
['kimi_k25'],
bridge_cls=KimiVLBridge,
visual_cls=KimiK25Vit,
))
1 change: 1 addition & 0 deletions src/mcore_bridge/model/mm_gpts/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ def new_get_cached_module_file(pretrained_model_name_or_path, *args, **kwargs):

class HuggingFaceVit(_HuggingFaceModule, ABC):
module_mapping = {} # hf -> mcore
support_multimodal = True

@contextmanager
def patch_hf_config(self):
Expand Down
Loading