Технологии программной инженерии

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск

Khritankov (Обсуждение | вклад)
(Новая: == Технологии программной инженерии == Основная страница - http://pps-design.org/dokuwiki/doku.php?id=seml:seml === О курсе === В ...)
К следующему изменению →

Текущая версия

Содержание

Технологии программной инженерии

Основная страница - 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% оценки.

Литература

  1. Материалы лекций
  2. Davy Cielen, Arno D.B. Meysman, Mohamed Ali. Introducing Data Science (book)
  3. NoSQL Distilled (book)
  4. A Survey on NoSQL Stores (2018) ACM CSUR (paper)
  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. Tarek Ziade. Python Microservices Development (book)
  9. ГОСТ Р ИСО/МЭК 25010-2015. Модели качества (standard)
  10. Test your Machine Learning Algorithm with Metamorphic Testing https://trustable.ai/testing-ai-metamorphic-testing/ (paper)
  11. Recent developments in Adversarial Example https://trustable.ai/recent-developments-in-adversarial-example-part-i/ (paper)
  12. MapReduce Design Patterns. Book. Donald Miner, Adam Shook (book)
  13. (2018) On Reproducible AI: Towards Reproducible Research, Open Science, and Digital Scholarship in AI Publications (paper)

Контакты

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

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

Личные инструменты