Программная инженерия для анализа данных
В курсе рассматриваются вопросы разработки систем обработки данных и машинного обучения.
- Как вывести разработанную модель в продакшен?
- Что делать для совместной работы над наукоемким ПО?
- Как не потерять ранее достигнутые исследовательские результаты?
В результате освоения курса слушатели приобретают навыки промышленной разработки алгоритмов машинного обучения, проведения повторяемых экспериментов, использования больших данных, тестирования и процессов выполнения проектов в области машинного обучения.
Темы курса
- Структурирование программ обработки данных (CODE)
- Написание надежного кода (CODE)
- Проектирование систем и хранение данных в системах машинного обучения (DATA)
- Процессы и виды работ в проекте анализа данных (PROC)
- Обеспечение повторяемости результатов (PROC)
- Тестирование наукоемкого ПО (TEST)
Список тем для подготовки к зачету.
План курса (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% оценки.
Литература
- Материалы лекций
- Davy Cielen, Arno D.B. Meysman, Mohamed Ali. Introducing Data Science (book)
- NoSQL Distilled (book)
- A Survey on NoSQL Stores (2018) ACM CSUR (paper)
- Kanewala U., Bieman J.M. Testing scientific software: A systematic literature review (paper)
- 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)
- The Art of Software Testing - Second Edition (book)
- Tarek Ziade. Python Microservices Development (book)
- ГОСТ Р ИСО/МЭК 25010-2015. Модели качества (standard)
- Test your Machine Learning Algorithm with Metamorphic Testing https://trustable.ai/testing-ai-metamorphic-testing/ (paper)
- Recent developments in Adversarial Example https://trustable.ai/recent-developments-in-adversarial-example-part-i/ (paper)
- MapReduce Design Patterns. Book. Donald Miner, Adam Shook (book)
- (2018) On Reproducible AI: Towards Reproducible Research, Open Science, and Digital Scholarship in AI Publications (paper)
Контакты
Контактный адрес: course [at] objectoriented.ru
Хританков Антон Сергеевич, к.ф.-м.н. - автор курса