При создании проектов в машинном обучении зачастую сложнее всего бывает начать работу. Какой должна быть структура репозитория? Каким стандартам следовать? Смогут ли ваши коллеги воспроизвести результаты экспериментов? Автор материала делится шаблоном проекта, наработанным за годы изучения науки о данных, а наш флагманский курс по Data Science стартует 25 января. Вместо попыток найти идеальную структуру репозитория самостоятельно, не лучше ли иметь шаблон, с которого можно было бы начать? Поэтому я создала шаблон data-science-template, где обобщены лучшие практики, о которых я узнала за годы работы над структурированием проектов в области науки о данных. Этот шаблон — итог моего многолетнего поиска наилучшей структуры проекта в науке о данных. Он позволит вам: Это легковесный шаблон, в нём используются только инструменты, которые могут быть универсальными для разных случаев: Начинаем Начните с установки Cookiecutter для загрузки шаблона: Cоздайте проект на основе шаблона: И опробуйте его согласно этим инструкциям. Далее некоторые важные фичи шаблона обсудим в деталях. Структура проекта на основе этого шаблона стандартизирована и проста для понимания:  Вот краткое описание ролей этих файлов: Poetry — это инструмент управления зависимостями в Python, альтернатива pip. С его помощью можно: Инструкции по установке Poetry можно найти здесь. Makefile позволяет создавать короткие и читаемые команды для задач. Если вы не знакомы с Makefile, посмотрите это краткое руководствоl. Makefile можно использовать для автоматизации таких задач, как настройка окружения: Теперь, когда люди захотят настроить среду для ваших проектов, им достаточно будет выполнить: И последовательность команд будет исполнена!  make полезен, если хочется запускать задачу всякий раз, когда меняются её зависимости.  В качестве примера изобразим связь файлов в Makefile:  Для создания файла models/svc.pkl можно выполнить: Поскольку data/processed/xy.pkl и src/train_model.py являются предварительными требованиями для цели models/svc.pkl, make запускает рецепты создания и data/processed/xy.pkl, и models/svc.pkl. Если в предварительном условии (prerequisite) models/svc.pkl нет изменений, make пропустит обновление models/svc.pkl. Таким образом make поможет избежать потери времени на запуск ненужных задач. В этом шаблоне используется Prefect, чтобы наблюдать запуски из Perfect UI:  Помимо прочего, Prefect может помочь: Вы можете получить доступ к этим функциям, просто превратив свою функцию в поток Prefect. Pydantic — библиотека Python для валидации данных с привлечением аннотаций типов. Модели Pydantic устанавливают типы данных для параметров потока и проверяют их значения при выполнении потока.  Если значение поля не соответствует аннотации типа, вы получите ошибку в рантайме: Все модели Pydantic хранятся в файле src/config.py. Перед коммитом в Git необходимо убедиться, что код: Однако ручная проверка этих критериев может утомить. pre-commit — фреймворк, который выявляет проблемы в коде до коммита. Вы можете добавлять различные плагины в конвейер pre-commit. Перед коммитом файлы будут проверены на соответствие стандартам соответствующих инструментов — это black, flake, isort и iterrogate. Если проверки не пройдут, код не будет отправлен в коммит.  Все плагины в этом шаблоне можно найти в этом файле   Дата-сайентисты при работе над проектом часто взаимодействуют с другими членами команды. Поэтому очень важно создать хорошую документацию. Чтобы создать документацию API на основе docstrings ваших файлов и объектов Python, выполните команду: Вывод: Теперь документацию можно увидеть по адресу http://localhost:8080:  GitHub Actions автоматизируют интеграцию приложения, ускоряют сборку, тестирование и развертывание кода. Тесты из папки tests при создании коммита выполняются автоматически.   Поздравляем! Вы только что узнали, как пользоваться шаблоном для создания проекта ML, который можно использовать вторично и редактировать. Этот шаблон задуман как гибкий. Не стесняйтесь корректировать проект в соответствии с вашими потребностями.  Data Science и Machine Learning Python, веб-разработка Мобильная разработка Java и C# От основ — в глубину А также