def load_owl_vit(model_name: str, device: str) -> Dict:
    """loader for owl vit for image reranking

    Args:
        model_name (str): _description_
        device (str, optional): _description_. No default.

    Returns:
        Dict: _description_
    """

    model_cache_key = _create_model_cache_key(model_name, device)

    if model_cache_key in get_available_models():
        logger.info(f"loading {model_cache_key} from cache...")
        model, processor = get_available_models()[model_cache_key][AvailableModelsKey.model]
    else:
        processor = OwlViTProcessor.from_pretrained(model_name)
        model = OwlViTForObjectDetection.from_pretrained(model_name).to(device)
        get_available_models()[model_cache_key] = {AvailableModelsKey.model: (model, processor),
                                             AvailableModelsKey.most_recently_used_time : datetime.datetime.now()}

    model.eval()

    # TODO use a small class to store the different model pieces and configs
    return {'model':model, 'processor':processor}
loader for owl vit for image reranking

    Args:
        model_name (str): _description_
        device (str, optional): _description_. No default.

    Returns:
        Dict: _description_
    
src/marqo/s2_inference/reranking/model_utils.py