===== Программная инженерия для анализа данных ===== В курсе рассматриваются вопросы разработки систем обработки данных и машинного обучения. * Как вывести разработанную модель в продакшен? * Что делать для совместной работы над наукоемким ПО? * Как не потерять ранее достигнутые исследовательские результаты? В результате освоения курса слушатели приобретают навыки промышленной разработки алгоритмов машинного обучения, проведения повторяемых экспериментов, использования больших данных, тестирования и процессов выполнения проектов в области машинного обучения. Темы курса * Структурирование программ обработки данных (CODE) * Написание надежного кода (CODE) * Проектирование систем и хранение данных в системах машинного обучения (DATA) * Процессы и виды работ в проекте анализа данных (PROC) * Обеспечение повторяемости результатов (PROC) * Тестирование наукоемкого ПО (TEST) {{:seml:seml-topics.doc|Список тем}} для подготовки к зачету. ==== План курса (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 Хританков Антон Сергеевич, к.ф.-м.н. - автор курса