Где читается: кафедра ИАД ФПМИ МФТИ, магистратура, 1 курс, бакалавриат, 4 курс.

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

  • Как вывести разработанную модель в продакшен?
  • Что делать для совместной работы над наукоемким ПО?
  • Как не потерять ранее достигнутые исследовательские результаты?

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

Темы курса

  • Структурирование программ обработки данных (CODE)
  • Написание надежного кода (CODE)
  • Проектирование систем и хранение данных в системах машинного обучения (DATA)
  • Процессы и виды работ в проекте анализа данных (PROC)
  • Обеспечение повторяемости результатов (PROC)
  • Тестирование наукоемкого ПО и верификация систем ML (TEST)

Примерный список тем для подготовки к зачету.

Тема
1. Введение. Проблемы разработки наукоемкого ПО. Качество программных систем.
2. Понятный код. Оформление и стандарты. Технический долг. Проведение код ревью.
3. Декомпозиция программ обработки данных. Метод постепенного уточнения. Повторное использование.
4. Совместная разработка. Непрерывная интеграция. Гибкие процессы разработки.
5. Процесс анализа данных. Исследовательский анализ (EDA). Представление результатов.
6. Повторное использование. Объектные методы. Структуры репозиториев.
7. Тестирование систем анализа данных. Методы модульного тестирования. Инструменты автоматизации поставки, контейнеризация.
8. Тестирование инвариантами. Атаки с соперником на модели ML. Методы противодействия.
9. Проблема повторяемости экспериментов. Гипотезы и планирование эксперимента. Конфигурация. Лаборатория данных
10. Хранение данных. Релационная, колоночная, документная и др. модели. Транзакции ACID. Распределенные СУБД. CAP и BASE.
11. Продуктивизация ML в виде сервисов. Реализация микросервисов в Python для поставки моделей. Создание API. Принципы REST и HATEOAS.
12. Облачные приложения. Инфраструктура 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. Poulton, N., 2023. The kubernetes book. NIGEL POULTON LTD. (book)
  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. Serban, A., Poll, E., & Visser, J. (2020). Adversarial examples on object recognition: A comprehensive survey. ACM Computing Surveys (CSUR), 53(3), 1-38.
  9. Tarek Ziade. Python Microservices Development (book)
  10. ГОСТ Р ИСО/МЭК 25010-2015. Модели качества (standard)

Дополнительные статьи

  1. Yakusheva, S. F., & Khritankov, A. S. (2024). A systematic review of methods for deriving metamorphic relations. Программные системы: теория и приложения, 15(2), 37-86. (paper)
  2. A Survey on NoSQL Stores (2018) ACM CSUR (paper)
  3. Test your Machine Learning Algorithm with Metamorphic Testing https://trustable.ai/testing-ai-metamorphic-testing/ (paper)
  4. MapReduce Design Patterns. Book. Donald Miner, Adam Shook (book)
  5. (2018) On Reproducible AI: Towards Reproducible Research, Open Science, and Digital Scholarship in AI Publications (paper)
  6. Recent developments in Adversarial Example https://trustable.ai/recent-developments-in-adversarial-example-part-i/ (paper)

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

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