| |
| |
| |
| |
| |
|
|
| import os |
| from typing import Union |
|
|
| from transformers.configuration_utils import PretrainedConfig |
| from transformers.utils import logging |
| from .configuration_siglip import SiglipVisionConfig |
| logger = logging.get_logger(__name__) |
|
|
|
|
| class MultiBackboneChannelConcatenationVisionModelConfig(PretrainedConfig): |
| r""" |
| This is the configuration class to store the configuration of a [`MultiBackboneChannelConcatenationVisionModelConfig`]. It is used to |
| instantiate a vision encoder according to the specified arguments, defining the model architecture. |
| |
| Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the |
| documentation from [`PretrainedConfig`] for more information. |
| |
| Args: |
| vision_path (str): Path to the vision model or its configuration. |
| mm_vision_select_layer (int, optional): The layer to select from the vision model |
| for multi-modal processing. Defaults to -2. |
| grid_size (int, optional): The size of the grid for vision processing. Defaults to 32. |
| **kwargs: Additional keyword arguments to be passed to the parent PretrainedConfig. |
| |
| """ |
|
|
| model_type = 'MOB' |
|
|
| def __init__( |
| self, |
| vision_path, |
| mm_vision_select_layer=-2, |
| grid_size=32, |
| input_image_size=1024, |
| hidden_size='lazy_calculation', |
| image_size=1024, |
| freeze_backbones=None, |
| moe_version_type=None, |
| delay_load=False, |
| convnext_img_size=1024, |
| vision_tower_siglip_path=None, |
| vision_tower_convnext_path='convnext_xxlarge.clip_laion2b_soup', |
| normalize_type='siglip', |
| **kwargs, |
| ): |
| super().__init__(**kwargs) |
|
|
| self.normalize_type = normalize_type |
| self.vision_path = vision_path |
| self.mm_vision_select_layer = mm_vision_select_layer |
| self.grid_size = grid_size |
| self.input_image_size = input_image_size |
| self.image_size = image_size |
| self.hidden_size = hidden_size |
| self.freeze_backbones = freeze_backbones |
| self.moe_version_type = moe_version_type |
| self.delay_load = delay_load |
| self.convnext_img_size = convnext_img_size |
| |
| self.vision_tower_siglip_path = vision_tower_siglip_path |
| self.vision_tower_convnext_path = vision_tower_convnext_path |
| self.vision_tower = self.vision_path[4:] |
|
|
| |
| assert image_size == input_image_size, f"input_image_size ({input_image_size}) != image_size ({image_size})" |
|
|
| @classmethod |
| def from_pretrained(cls, pretrained_model_name_or_path: Union[str, os.PathLike], **kwargs) -> 'PretrainedConfig': |
| config_dict, kwargs = cls.get_config_dict(pretrained_model_name_or_path, **kwargs) |
|
|
| if 'vision_config' in config_dict: |
| config_dict = config_dict['vision_config'] |
|
|
| if 'model_type' in config_dict and hasattr(cls, 'model_type') and config_dict['model_type'] != cls.model_type: |
| logger.warning( |
| f"You are using a model of type {config_dict['model_type']} to instantiate a model of type " |
| f'{cls.model_type}. This is not supported for all configurations of models and can yield errors.' |
| ) |
|
|
| return cls.from_dict(config_dict, **kwargs) |
|
|