Workflow разработки
Мы используем итеративный подход к разработке, начиная с прототипирования в playground и заканчивая фиксацией стабильных версий пакетов.
1. Этап Playground (Прототипирование)
- Где: Основной репозиторий
vlmhyperbench_playground. - Что делаем:
- Реализуем базовые абстрактные классы и компоненты ядра VLMHyperBench.
- Проводим быстрые эксперименты и проверку гипотез.
- Код пишется в режиме
dev(editable packages).
2. Этап Integration (Подключение модулей)
- Что делаем:
- Монтируем необходимые репозитории (с реализациями конкретных
Task,Model,Metric) как git submodules в папкуpackages/. - Разрабатываем реализации для конкретных задач, используя базовые абстракции из ядра.
- Монтируем необходимые репозитории (с реализациями конкретных
Работа с Git submodules
# Клонирование с инициализацией всех подмодулей
git clone --recursive https://github.com/VLMHyperBenchTeam/vlmhyperbench_playground.git
# Добавление нового пакета
git submodule add https://github.com/ORG/new_pkg.git packages/new_pkg
# Обновление всех подмодулей
git submodule update --remote --merge
3. Этап Pipeline & Testing
- Что делаем:
- Прогоняем полный пайплайн (Inference -> Eval -> Report) на тестовых данных.
- Убеждаемся, что все компоненты взаимодействуют корректно.
- Исправляем баги как в ядре, так и в подключаемых модулях.
Запуск скриптов
Для зап уска кода используйте uv run, это гарантирует актуальность окружения:
uv run python my_script.py
Или активируйте виртуальную среду вручную:
source .venv/bin/activate
python my_script.py
4. Этап Release (Фиксация версий)
- Что делаем:
- Пушим работающие версии кода в соответствующие удаленные репозитории пакетов.
- Создаем git tags (например,
v0.1.0) в репозиториях пакетов. - В
uv.lock(дляprodпрофиля) фиксируем точные версии пакетов (через git tags), совместимые с текущей версией ядра.
Работа с релизными режимами
- dev: Используем
workspace = true. - staging: Используем ссылки на dev-теги.
- prod: Используем ссылки на стабильные git tags.
Подробнее о настройке режимов см. в разделе Установка и настройка.