Table of Contents

Программная инженерия для анализа данных

В курсе рассматриваются вопросы разработки систем обработки данных и машинного обучения.

В результате освоения курса слушатели приобретают навыки промышленной разработки алгоритмов машинного обучения, проведения повторяемых экспериментов, использования больших данных, тестирования и процессов выполнения проектов в области машинного обучения.

Темы курса

Список тем для подготовки к зачету.

План курса (2020)

Тема
1. Введение. Проблемы разработки наукоемкого ПО. Качество программных систем.
2. Понятный код. Оформление и стандарты. Технический долг. Проведение код ревью.
3. Декомпозиция программ обработки данных. Метод постепенного уточнения. Повторное использование.
4. Совместная разработка. Непрерывная интеграция. Гибкие процессы разработки.
5. Процесс анализа данных. Исследовательский анализ (EDA). Представление результатов.
6. Повторное использование. Объектные методы. Структуры репозиториев.
7. Тестирование систем анализа данных. Методы модульного тестирования. Инструменты автоматизации поставки, контейнеризация.
8. Тестирование инвариантами. Adversarial testing. Тестирование наукоемкого ПО.
9. Проблема повторяемости экспериментов. Что входит в эксперимент. Конфигурация. Лаборатория данных
10. Продуктивизация ML в виде сервисов. Реализация микросервисов в Python для поставки моделей. Создание API. Принципы REST и HATEOAS.
11. Хранение данных. Релационная, колоночная, документная и др. модели. Транзакции ACID. Распределенные СУБД. CAP и BASE.
12. Технологии параллельной обработки данных. Master/Slave, MapReduce, RDD(Spark). Если успеем - Kubernetes (pods, svcs, jobs, etc ) для размещения ML сервисов.
13. Технологии GitOps, MLOps. Технологии сжатия и ускорение моделей. Средства представления API моделей. Стандартные протоколы.

Курсовой проект

Курсовой проект посвящен созданию собственного микросервиса с моделью машинного обучения в соответствии с процессами CI/CD или разработки повторно-используемой библиотеки с реализацией алгоритмом решения прикладной ML задачи.

Задания выполняются в соответствии с процессом Scrum и CI/CD. Каждое задание - это отдельный спринт.

#Тема задания
1. Документирование и ревью кода
2. Реализация модели. Структурирование программы
3. Автоматизация поставки и модульное тестирование
4. Тестирование. Непрерывная интеграция
5. Реализация микросервиса или микроесервиса. Использования СУБД. Воспроизводимое обучение
6. Размещение сервиса в облаке, публикация библиотеки.

Критерии оценивания

Итоговая оценка по курсу формируется из успешности выполнения заданий по ходу семестра - по 10% за каждое задание, и подтверждение на устном опросе владения каждой из тем курса (CODE, TEST, DATA, PROC) - 40% оценки.

Литература

  1. Материалы лекций
  2. Davy Cielen, Arno D.B. Meysman, Mohamed Ali. Introducing Data Science (book)
  3. NoSQL Distilled (book)
  4. A Survey on NoSQL Stores (2018) ACM CSUR (paper)
  5. Kanewala U., Bieman J.M. Testing scientific software: A systematic literature review (paper)
  6. Gerardo Cerda Neumann, Héctor Antillanca Espina, Víctor Parada Daza. Development of Scientific Software and Practices for Software Development A Systematic Literature Review (paper)
  7. The Art of Software Testing - Second Edition (book)
  8. Tarek Ziade. Python Microservices Development (book)
  9. ГОСТ Р ИСО/МЭК 25010-2015. Модели качества (standard)
  10. Test your Machine Learning Algorithm with Metamorphic Testing https://trustable.ai/testing-ai-metamorphic-testing/ (paper)
  11. Recent developments in Adversarial Example https://trustable.ai/recent-developments-in-adversarial-example-part-i/ (paper)
  12. MapReduce Design Patterns. Book. Donald Miner, Adam Shook (book)
  13. (2018) On Reproducible AI: Towards Reproducible Research, Open Science, and Digital Scholarship in AI Publications (paper)

Контакты

Контактный адрес: course [at] objectoriented.ru

Хританков Антон Сергеевич, к.ф.-м.н. - автор курса