Перейти к основному содержимому

model_interface.model_interface

model_interface.model_interface.model_factory

ModelFactory Objects

class ModelFactory()

Фабрика для создания моделей.

Класс предоставляет методы для регистрации моделей и создания их экземпляров. Модели регистрируются по имени и пути к классу в Python-пакете.

Attributes:

  • _models Dict[str, Type[Any]] - Словарь для хранения зарегистрированных моделей, где ключ — имя модели, а значение — класс модели.

register_model

@classmethod
def register_model(cls, model_name: str, model_path: str) -> None

Регистрирует класс модели по её пути в python-пакете.

Arguments:

  • model_name str - Имя модели, под которым она будет зарегистрирована.
  • model_path str - Путь к классу модели в формате 'module_path:class_name'.

Raises:

  • ImportError - Если модуль не может быть импортирован.
  • AttributeError - Если класс не найден в указанном модуле.

get_model

@classmethod
def get_model(cls,
model_name: str,
model_init_params: Optional[Dict[str, Any]] = None) -> Any

Создает и возвращает экземпляр модели по её имени.

Arguments:

  • model_name str - Имя зарегистрированной модели.
  • model_init_params Optional[Dict[str, Any]] - Параметры для инициализации модели. Если None, передается пустой словарь.

Returns:

  • Any - Экземпляр модели.

Raises:

  • ValueError - Если модель с указанным именем не зарегистрирована.

model_interface.model_interface.model_interface

ModelInterface Objects

class ModelInterface(ABC)

Абстрактный базовый класс для всех моделей.

Этот класс определяет интерфейс, который должны реализовывать все модели. Он включает методы для предсказания на основе одного или нескольких изображений.

Attributes:

  • model_name str - Название модели как у разработчика (например, "Qwen2-VL-2B").
  • system_prompt str - Системный промпт, используемый моделью.
  • cache_dir str - Директория для кэширования данных модели.

__init__

def __init__(model_name: str, system_prompt: str, cache_dir: str) -> None

Инициализирует экземпляр Фабрики моделей.

Arguments:

  • model_name str - Название модели как у разработчика (например, "Qwen2-VL-2B").
  • system_prompt str - Системный промпт, используемый моделью.
  • cache_dir str - Директория для кэширования данных модели.

predict_on_image

@abstractmethod
def predict_on_image(image: Any, question: str) -> str

Абстрактный метод для предсказания на основе одного изображения.

Arguments:

  • image Any - Изображение, на основе которого делается предсказание. Тип может быть специфичным для реализации (например, PIL.Image, np.array и т.д.).
  • question str - промпт-вопрос по изображению изображению.

Returns:

  • str - строка с ответом от модели.

predict_on_images

@abstractmethod
def predict_on_images(images: List[Any], question: str) -> str

Абстрактный метод для предсказания на основе нескольких изображений.

Arguments:

  • images List[Any] - Список изображений, на основе которых делается предсказание. Тип элементов списка может быть специфичным для реализации.
  • question str - промпт-вопрос по изображению изображению.

Returns:

  • str - строка с ответом от модели.

model_interface.model_interface.model_utils

measure_inference_time

def measure_inference_time(model_callable: Callable[..., Any], *args,
**kwargs) -> float

Измеряет время выполнения (inference time) программы или функции.

Arguments:

  • model_callable - Функция или метод модели, который нужно измерить.
  • *args - Аргументы для передачи в model_callable.
  • **kwargs - Ключевые аргументы для передачи в model_callable.

Returns:

Время выполнения в секундах.

Использование:

model = MyModel()
input_data = "Пример входных данных"
inference_time = measure_inference_time(model.predict, input_data)
print(f"Время выполнения: {inference_time:.4f} секунд")