Архитектурная концепция
VLMHyperBench — это модульный, расширяемый фреймворк для оценки Vision Language Models (VLM), построенный на принципах микросервисной архитектуры и строгой изоляции окружений.
1. Философия
- Изоляция превыше всего: Мы не пытаемся установить все библиотеки в один Python environment. Каждая модель и каждый этап оценки запускаются в собственном изолированном контейнере.
- Everything is a Registry: Модели, Задачи, Метрики — это подключаемые модули (плагины), регистрируемые в системе. Ядро фреймворка агностично к конкретным реализациям.
- Configuration as Code: Весь эксперимент описывается декларативными конфигурационными файлами (CSV/JSON).
- Environment Agnostic: Код этапа не знает, где он выполняется (локальный Docker, Run Pod или HPC Singularity).
2. Компонентная модель (v0.2.0)
Система разделена на три основные плоскости: Management Plane, Execution Plane и Inference Layer.
2.1. Слой управления (Management Plane)
Обеспечивает интерфейс взаимодействия с пользователем и хранение истории экспериментов.
2.1.1. Оркестратор
- Responsibility: Чтение конфига, планирование очереди задач, запуск контейнеров, обработка ошибок.
- Logic:
- Парсинг
user_config.csvи сопоставление с реестрами. - Планирование задач (Scheduling) с поддержкой асинхронного запуска и распараллеливания по GPU.
- Подготовка томов (Volumes).
- Последовательный запуск этапов (Inference -> Eval -> Report).
- Парсинг
2.2. Слой исполнения (Execution Plane)
Изолированные окружения, в которых выполняются конкретные этапы бенчмарка. Все этапы взаимодействуют через общую файловую систему.
3. Ключевые принципы реализации
3.1. Абстракция окружений
Система не привязана к конкретной среде исполнения. Через интерфейс EnvManager поддерживаются Docker, Singularity и облачные провайдеры (RunPod).
3.2. Стандартизация инференса
Использование API Wrapper позволяет ядру системы взаимодействовать с любой моделью через единый OpenAI-совместимый протокол, независимо от используемого бэкенда (vLLM, HF, SGLang).
3.3. Плагинная архитектура
Расширение возможностей (новые модели, задачи, метрики) п роисходит путем добавления новых пакетов, реализующих стандартные интерфейсы, без модификации кода ядра.
3.4. Динамические зависимости
Минимизация количества Docker-образов за счет установки специфичных библиотек "на лету" при старте контейнера.
4. Поток данных (Workflow)
- Initialization: Оркестратор парсит конфиг, подготавливает план запуска.
- Environment Setup:
EnvManagerподнимает контейнер. Выполняется Dynamic Dependency Injection (установка драйверов модели и библиотек метрик). - Data Sync: Если требуется, данные скачиваются из S3 на локальный диск (Smart Sync).
- Inference: Запуск модели, генерация ответов ->
answers.csv. - Evaluation: Запуск лег кого контейнера оценки. Расчет метрик ->
metrics.csv. - Reporting: Агрегация результатов и генерация отчета ->
report.md.
5. Технологический стек
- Core: Python 3.10+, Pydantic.
- Containerization: Docker SDK.
- Inference Backends: vLLM, Transformers, SGLang.
- Data: Pandas, Polars.