Технологии программной инженерии
Материал из MachineLearning.
Содержание |
Технологии программной инженерии
Основная страница - http://pps-design.org/dokuwiki/doku.php?id=seml:seml
О курсе
В курсе рассматриваются вопросы разработки систем обработки данных и машинного обучения.
- Как вывести разработанную модель в продакшен?
- Что делать для совместной работы над наукоемким ПО?
- Как не потерять ранее достигнутые исследовательские результаты?
В результате освоения курса слушатели приобретают навыки промышленной разработки алгоритмов машинного обучения, проведения повторяемых экспериментов, использования больших данных, тестирования и процессов выполнения проектов в области машинного обучения.
Темы курса
- Структурирование программ обработки данных (CODE)
- Написание надежного кода (CODE)
- Проектирование систем и хранение данных в системах машинного обучения (DATA)
- Процессы и виды работ в проекте анализа данных (PROC)
- Обеспечение повторяемости результатов (PROC)
- Тестирование наукоемкого ПО (TEST)
Список тем для подготовки к зачету.
План курса (2020)
№ | Тема |
---|---|
1. | Введение. Проблемы разработки наукоемкого ПО. Качество программных систем. |
2. | Понятный код. Оформление и стандарты. Технический долг. Проведение код ревью. |
3. | Декомпозиция программ обработки данных. Метод постепенного уточнения. Повторное использование. |
4. | Совместная разработка. Непрерывная интеграция. Гибкие процессы разработки. |
5. | Процесс анализа данных. Исследовательский анализ (EDA). Представление результатов. |
6. | Тестирование систем анализа данных. Методы модульного тестирования. Инструменты. |
7. | Тестирование инвариантами. Adversarial testing. Тестирование наукоемкого ПО. |
8. | Введение в Domain Driven Design. Микросервисы и DevOps. Контейнеризация Docker. |
9. | Реализация микросервисов в Python для поставки моделей. Создание API. Принципы REST и HATEOAS. |
10. | Хранение данных. Релационная, колоночная, документная и др. модели. Транзакции ACID. Распределенные СУБД. CAP и BASE. |
11. | Архитектуры систем Big Data. Обзор MapReduce. Лямбда архитектура. Технологический стек SMACK/CASK. |
12. | Обработка данных в Spark/PySpark. Представление данных. RDD, Dataframe, Dataset. Оптимизация планов исполнения. |
13. | Повторяемость экспериментов. Контроль версий данных. Процесс MLOps. Программные инструменты. |
Курсовой проект
Курсовой проект посвящен созданию собственного микросервиса с моделью машинного обучения в соответствии с процессами CI/CD.
Задания выполняются в соответствии с процессом 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
Хританков Антон Сергеевич Участник:khritankov, к.ф.-м.н. - автор курса