VLMHyperBench
— open-source фреймворк для оценки возможностей Vision language models (VLM)
распознавать документы на русском языке с целью оценки их потенциала для автоматизации документооборота.
- Дать исследователям удобный инструмент для оценки VLM.
- Дать инженерам удобный инструмент для оценки VLM, запускаемых в
production
на таких фреймворках инференса какvLLM
иSGLang
. - Упростить и ускорить внедрение самых передовых технологий из мира
Deep Learning
в контуры компаний.
Сейчас для обработки каждого нового документа со своей структурой разрабатываются специальные решения с использованием подходов Optical character recognition (OCR)
.
Используя VLM
, можно заменить разработку нового узкоспециализированного решения под новую структуру документа на подбор подходящего промпта для извлечения нужных данных из сканов документов.
В настоящее время область мультимодальных моделей интенсивно развивается: появляются новые модели и фреймворки для их инференса, — в связи с чем инструменты, позволяющие объективно сравнивать модели по метрикам, потребляемым ресурсам и скорости инференса на наборах данных компаний/исследователей, востребованы как никогда.
Разрабатываемый фреймворк VLMHyperBench
позволяет запускать каждую VLM в своем собственном изолированном окружении (сейчас изоляция осуществляется с помощью Docker-контейнеров
).
- Сравнивать между собой модели несовместимые по зависимостям.
- Сравнивать модели, запускаемые на разных фреймворках инференса (
Hugging Face
,vLLM
,SGLang
). - Автоматизировать тестирование
Docker-контейнеров
с VLM в CI/CD-пайплайнах компаний. - Оценивать подбираемые промпты для каждого отдельного типа документа и каждого отдельного поля документа.
- Использовать разные коллекции промптов и системных промптов, подобранных индивидуально для каждой модели на одном и том же датасете, благодаря компонентам
PromptAdapter
иTXTPromptAdapter
(ссылка).
-
Является
open-source
инструментом, рассчитанным на исследователей и инженеров (с лицензией разрешающей коммерческое использование). -
Обладает модульной архитектурой для легкого добавления дополнительных наборов данных, моделей, метрик и визуализаций результатов оценки.
-
Модульность:
-
Все компоненты — это
python-пакеты
.Мы хотим, чтобы Вы могли использовать их в Ваших проектах, связанных с VLM, независимо от нашего основного проекта.
-
Docker-контейнеры
VLMHyperBench
также опубликованы и доступны для свободного скачивания и использования в Ваших проектах.
-
- Сайт с документаций проекта (ссылка)
- GitHub организации VLMHyperBenchTeam (ссылка)
- Container registry с нашими Docker-образами VLMHyperBenchTeam (ссылка)
Процесс оценки моделей состоит из 4-х этапов:
На данном этапе пользователь формирует csv-файл (см. user_config.csv
) со списком задач.
Одна задача — один Evaluation run
.
Понятие Evaluation run
включает в себя выбор:
- датасета, на котором будет оцениваться модель;
- фреймворка для инференса модели (
Hugging Face
,vLLM
,SGLang
); - модели VLM (например,
Qwen2.5-VL-3B
); коллекции промптов
для VLM (опционально);системного промпта
для VLM (опционально);ML-метрик
, которыми необходимо оценить ответы от VLM (опционально).
Каждая строка csv-файла (см. user_config.csv
) описывает все параметры для одного Evaluation run
.
ПО считывает из csv-файла от пользователя набор всех Evaluation run
, которые далее распределяются по исполнителям
каждого Evaluation run
.
Сейчас один исполнитель
— это одна GPU в рамках одного ПК, на котором запускается VLMHyperBench
.
Используя указанные параметры в Evaluation run
, ПО:
- скачивает из нашего
Container Registry
(ссылка) Docker-образ (с поддержкой вычислений на GPU) для выбранной VLM с настроенным внутри рабочим окружением для модели; - поднимает
Docker-контейнер
с VLM; - загружает указанный датасет;
- загружает указанную
коллекцию промптов
для VLM; - загружает указанный
системный промпт
для VLM; - инициализирует VLM;
- осуществляет итерирование по датасету;
- сохраняет ответы модели в csv-файл.
Note
Данный этап опционален и может не выполняться, если требуется произвести только оценку ответов модели по новым метрикам.
Используя указанные параметры в Evaluation run
, ПО:
- скачивает из нашего
Container Registry
(ссылка) Docker-образ (с поддержкой вычислений на CPU) для нашегоMetricEvaluator
с настроенным внутри рабочим окружением; - считывает исходный датасет;
- считывает ответы модели;
- производит расчет указанных метрик;
- сохраняет полученные метрики в csv-файл.
Note
Данный этап опционален и может не выполняться, если требуется получить только ответы от модели без расчета метрик.
Мы хотим формировать отчеты с важными для исследователей и инженеров:
- ML-метриками;
- параметрами работы моделей (время инференса, потребляемые ресурсы);
- диаграммами.
Note
В настоящий момент мы собираем обратную связь о том, что должно войти в подобный отчет.
В планах разработать отдельный модуль, который будет создавать эти отчеты по результатам, полученным на каждом Evaluation run
.
-
Добавить поддержку изоляции окружения для VLM на уровне
python venv
.- Изоляция окружения для VLM с помощью
Docker
требуетroot
прав на его использование. Не везде есть такая возможность. - Хочется иметь возможность работы самого
VLMHyperBench
внутриDocker-контейнера
.
- Изоляция окружения для VLM с помощью
Многие облачные провайдеры предлагают запуск Docker-контейнера
на своих облачных GPU. При этом возможность запуска Docker-контейнеров in Docker
заблокирована по соображениям безопасности.
Возможность использования изоляции окружения для запуска VLM на уровне python venv
потенциально позволяет решить эти проблемы.
- Добавить поддержку системы контейнеризации
Singularity
в качестве способа изоляции окружения моделей.
Singularity
популярна на GPU-кластерах IT-компаний и университетов.
- Добавить поддержку работы с удаленными
pod
наRunPod
(ссылка) для запуска моделей.
Данный облачный провайдер предлагает недорогую аренду облачных GPU. Мы надеемся, что данный кейс будет полезен небольшим исследовательским группам или инженерам небольших компаний и стартапов.
- Ширяев Антон, GitHub account
- Овчинникова Юлия, GitHub account
- Лукин Семен, GitHub account
- Капустин Евгений, GitHub account