├── .dvc Конфигурация DVC
├── data Данные и иные артефакты ML
├── docs Документация
├── model Файлы обученной модели
├── notebooks Интерактивные скрипты Jupyter
├── reports Отчёты, графики и метрики
├── scripts Скрипты для регулярных задач
├── tests Тесты проекта
├── yoric Основной код Python-пакета
├── .dvcignore Файл исключений DVC
├── .flake8 Конфигурация линтера Flake8
├── .gitignore Файл исключений Git
├── .pre-commit-config.yaml Конфигурация автопроверок при commit и push
├── .pylintrc Конфигурация линтера Pylint
├── Makefile Конфигурация GNU Make для быстрых команд
├── dvc.lock Сохраненное состояние пайплайна DVC
├── dvc.yaml Конфигурация пайплайна DVC
├── params.yaml Конфигурация гиперпараметров для пайплайна DVC
├── pyproject.toml Прочие настройки Python-проекта
├── readme-en.md Описание проекта EN (TODO)
├── readme-ru.md Описание проекта RU
├── requirements.txt Python-зависимости проекта
└── setup.py Скрипт сборки Python-пакета
- Хранение артефактов и метрик: DVC
- Качество кода: Mypy, Pylint, Flake8
- Форматирование: Black, iSort, Unify, Pyupgrade
- Прототипирование: Jupyter Notebook
- Прочее: Pre-commit, GNU Make
Для удобства разработки регулярные команды вынесены в Makefile (GNU Make). Утилита Make, как правило предостановлена на дистрибутивах Linux, но, если необходимо, её можно установить:
sudo apt install make -yС помощью Make рекомендуется делать локальные проверки перед коммитами и форматировать код. Подробнее о доступных командах можно посмотреть в справке (выполняя из корня проекта):
make help # или просто makeПри разработке на Windows (без WSL) эти команды работать не будут и их нужно будет запускать вручную, копируя из Makefile.
В целом текущая версия репозитория не расчитана под разработку на Windows.
В репозиториии настроены pre-commit хуки на действия commit, push и checkout. В нашем случае хуки проверяют:
- согласованность версий файлов в удаленном хранилище, кеше DVC и самом репозитории
- отсутствие ошибок в используемых типах
- отсутствие логических и стилевых ошибок
- прохождение тестов
- отсутствие больших файлов в коммитах и прочие мелкие проверки
И дополнительно:
- автоформатируют код, чтобы он был консистентен и единообразен
- очищают файлы кешей, сборки, мусор, оставленные при работе инструментов
Основные шаги pre-commit переиспользуют соответствующие команды Make.
В проекте предполагается использование версии Python >=3.9!
-
Создать виртуальное окружение Python с помощью Make:
make venv
Или вручную:
python -m venv venv && \ source /venv/bin/activate && \ pip install --upgrade setuptools wheel pip && \ pip install -e . && \ pre-commit install
-
Выгрузить данные из DVC.
Команды выполняются из корня проекта! Если по какой-то причине DVC не подхватывает корень, достаточно установить переменную окружения
PYTHONPATH=$(pwd).Посмотреть каких данных не хватает:
dvc status
Выгрузить недостающие данные или все:
dvc pull -R
Данные взяты из русской Википедии с помощью библиотеки corus. Хранение и версионирование реализовано с помощью DVC:
-
Скрипты для получения данных находятся в директории scripts
-
Пайплайн вызова соответствующих скриптов доступен в dvc.yaml
-
Параметры для вызова скриптов подставляются DVC из файла params.yaml автоматически
-
Датасет можно пересобрать заново при необходимости (или изменении параметров):
dvc repro
Подробнее о работе с пайплайнами DVC можно ознакомиться в документации.
- Внести правки в репозитории или добавить новый эксперимент.
- Добавить тесты в tests и проверить их работу:
pytest [tests/path/to/concrete/test.py]
- Проверить, что ваши правки не внесли регресс, запустив все тесты:
make tests
- Опционально, проверить себя до коммита: вручную запустить линтер, форматтер, статический анализ с помощью Make:
make all # [style|types|...] см. справку: make help - Сделать коммит и отправить в репозиторий
- Оформить PR по завершению работ