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

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.

Подробнее о настройке режимов см. в разделе Установка и настройка.