def load_multimodal_model_and_get_preprocessors(model_name: str, model_properties: Optional[dict] = None,
                                                device: Optional[str] = None,
                                                model_auth: Optional[ModelAuth] = None,
                                                normalize_embeddings: bool = get_default_normalization()) \
        -> Tuple[Any, Preprocessors]:
    """Load the model and return preprocessors for different modalities.

    Args:
        model_name (str): The name of the model to load.
        model_properties (dict): The validated properties of the model.
        device (str): The device to load the model on.
        model_auth: Authorisation details for downloading a model (if required)
        normalize_embeddings (bool): Whether to normalize the embeddings.

    Returns:
        Tuple[Any, Dict[str, Optional[Compose]]]: The loaded model and a dictionary of preprocessors for different modalities.

    Raises:
        InternalError: If the device is not set.
    """
    if not device:
        raise InternalError(message=f"vectorise (internal function) cannot be called without setting device!")

    # if model_properties.get("type") in ['languagebind', 'imagebind']:
    #    model = load_multimodal_model(model_name, model_properties, device)

    model_cache_key = _create_model_cache_key(model_name, device, model_properties)

    _update_available_models(
        model_cache_key, model_name, model_properties, device, normalize_embeddings,
        model_auth=model_auth
    )

    model = _available_models[model_cache_key][AvailableModelsKey.model]

    if model_properties.get("type") in ['languagebind']:
        preprocessors = model.get_preprocessors()
    elif model_properties.get("type") in [ModelType.OpenCLIP, ModelType.CLIP]:
        preprocessors = {"image": getattr(model, "preprocess", None)}
    else:
        raise InternalError(f"Model type {model_properties.get('type')} does not support preprocessors pre loading in"
                            f"add_document ")
    return model, Preprocessors(**preprocessors)
Load the model and return preprocessors for different modalities.

    Args:
        model_name (str): The name of the model to load.
        model_properties (dict): The validated properties of the model.
        device (str): The device to load the model on.
        model_auth: Authorisation details for downloading a model (if required)
        normalize_embeddings (bool): Whether to normalize the embeddings.

    Returns:
        Tuple[Any, Dict[str, Optional[Compose]]]: The loaded model and a dictionary of preprocessors for different modalities.

    Raises:
        InternalError: If the device is not set.
    
src/marqo/s2_inference/s2_inference.py