Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
seml:seml [2020/05/17 16:12]
user
seml:seml [2024/02/04 17:15]
user
Line 1: Line 1:
 +===== Программная инженерия для анализа данных =====
 +
 +В курсе рассматриваются вопросы разработки систем обработки данных и машинного обучения. 
 +  * Как вывести разработанную модель в продакшен? 
 +  * Что делать для совместной работы над наукоемким ПО? 
 +  * Как не потерять ранее достигнутые исследовательские результаты?
 +
 +В результате освоения курса слушатели приобретают навыки промышленной разработки алгоритмов машинного обучения, проведения повторяемых экспериментов, использования больших данных, тестирования и процессов выполнения проектов в области машинного обучения.
 +
 +Темы курса
 +  * Структурирование программ обработки данных (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 
 +
 +Хританков Антон Сергеевич, к.ф.-м.н. - автор курса
 +