Магистратура
2022/2023![Цель освоения дисциплины](/f/src/global/i/edu/objectives.svg)
![Планируемые результаты обучения](/f/src/global/i/edu/results.svg)
![Содержание учебной дисциплины](/f/src/global/i/edu/sections.svg)
![Промежуточная аттестация](/f/src/global/i/edu/intermediate_certification.svg)
![Список литературы](/f/src/global/i/edu/library.svg)
Обработка и анализ больших массивов данных
Статус:
Курс обязательный (Машинное обучение и высоконагруженные системы)
Направление:
01.04.02. Прикладная математика и информатика
Где читается:
Факультет компьютерных наук
Когда читается:
2-й курс, 1, 2 модуль
Формат изучения:
с онлайн-курсом
Онлайн-часы:
20
Охват аудитории:
для своего кампуса
Преподаватели:
Бардуков Анатолий Андреевич
Прогр. обучения:
Машинное обучение и высоконагруженные системы
Язык:
русский
Кредиты:
6
Контактные часы:
26
Программа дисциплины
Аннотация
В курсе мы говорим об эволюции систем обработки данных, необходимости возникновения таких систем. Курс начинается с повторения bash, Docker и SQL, обсуждаются различные базы данных (RDBMS, NoSQL, MPP). На первых занятиях даются вводные знания по построению хранилищ данных (DWH) и автоматизации загрузки данных (ETL). Основной акцент курса направлен на системы работы с большими данными в парадигме MapReduce - Hadoop стек и Spark. Два основных приложения этих систем - обучение моделей и аналитика. Помимо этих приложений курс также покрывает подходы к работе с данными в реальном времени - Spark Structured Streaming, Kafka и Flink. Студентам предлагается применить свои навыки на практике для реализации проекта, а также решения прикладных задач инфраструктурного, архитектурного и практического характера.
Цель освоения дисциплины
- Курс поможет студентам ориентироваться в устройстве хранения и обработки данных в организациях различного масштаба, от маленьких стартапов до огромных банков и поисковых систем, при этом студент также познакомиться с возможностями обработки этих данных, в частности создание систем машинного обучения и их использование (предоставление доступа пользователям).
Планируемые результаты обучения
- Применение bash команд для работы с файлами, Поиск файлов в unix системе, Установка пакетов в bash, Пайплайны команд в bash, Формат Dockerfile, Запуск контейнера, Использование Docker-compose
- Стандарт SQL, Агрегация, Window-функции, Join и оптимизации в SQL на примере Postgres, Базовый синтаксис запросов в системе MongoDB, Написание сложных запросов в MongoDB, Класс MPP решений на примере Greenplum и связанные возможности (партиционирование)
- Знакомство с классическими концепциями DWH: Inmon и Kimball, Знакомство с концепцией Data Vault, Применение инструмента Airflow для построения ETL процесса, Знакомство с концепцией Data Lake
- Знакомство с HDFS и умение использовать команды для работы с этой ФС, Знакомство с YARN, умение работать с UI и базовыми настройками (в частности тип планировщика), Знакомство с концепцией MapReduce, написание кода для Hadoop Streaming
- Запуск Spark приложений, Конфигурация приложения, Работа с RDD: создание, преобразование, получение результатов, Понимание преимуществ Spark в сравнении с Hadoop MapReduce
- Написание запросов с использованием Spark DataFrame, Написание запросов с использованием Spark SQL, Чтение плана запросов и оптимизация работы с данными, Работа с различными источниками (HDFS, S3), Задача Feature Engineering
- Использование библиотеки SparkML для решения практических задач, Использование Broadcast и Accumulator переменных в Spark, Написание градиентного спуска на Spark, Конвертация данных в parquet и его преимущества, знакомство с другими форматами
- MLFlow для экспериментов, Flask для HTTP API, Синхронный и асинхронный ML сервис, Docker для контейнеризации Python-сервиса
- Обучение с помощью сервера параметров, Обучение с помощью all-reduce алгоритмов (tree-allreduce - VW, ring-allreduce - Horovod), Обучение с помощью дистилляции, Прунинг и квантизация моделей и другие методы оптимизации инференса
- Применение LSH для нахождения близких объектов, Применение HNSW для поиска ближайших объектов
- Понимание основных компонентов Kafka: producer, consumer, Использование Spark Streaming для чтения, обработки и записи данных в Kafka или другие базы данных
- Java/Scala для работы с данными, Синтаксис запросов в Flink, Потоковая обработка запросов в Flink, Window function в Flink
Содержание учебной дисциплины
- Универсальные технологические основы
- SQL, NoSQL, MPP
- DWH и ETL
- Hadoop-стек
- Spark RDD
- SparkSQL и Spark DataFrame API, Feature Engineering
- Spark ML и самописный ML на Spark
- Эксперименты и продакшн ML моделей
- Оптимизация работы с моделями - обучение и инференс
- Приближенный поиск ответа
- Потоковая обработка данных с помощью Spark Streaming и Kafka
- Потоковая обработка данных с помощью Flink
Промежуточная аттестация
- 2022/2023 учебный год 2 модуль0.3 * O_optionalTasks + 0.3 * O_finalProject + 0.4 * O_weeklyHW
Список литературы
Рекомендуемая основная литература
- Kleppmann, M. (2017). Designing Data-Intensive Applications : The Big Ideas Behind Reliable, Scalable, and Maintainable Systems. Sebastopol, CA: O’Reilly Media. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1487643
Рекомендуемая дополнительная литература
- Изучаем Spark: молниеносный анализ данных / Х. Карау, Э. Конвински, П. Венделл, М. Захария. — Москва : ДМК Пресс, 2015. — 304 с. — ISBN 978-5-97060-323-9. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/90118 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.