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} секунд")