Обработка и анализ больших массивов данных (МОиВС, осень21, 2022) — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
м (add playlist link)
м (final UPD)
 
(не показано 9 промежуточных версии этого же участника)
Строка 1: Строка 1:
 
==О курсе==
 
==О курсе==
  
Занятия проводятся в [ Zoom] по ... в ...
+
Занятия проводятся в [https://us06web.zoom.us/j/84811522468?pwd=aWFQSHJUdzFOYm5ETSthMlhTcEVrZz09 Zoom] '''по пятницам в 19:00'''
  
 
==Контакты==
 
==Контакты==
Строка 9: Строка 9:
 
Чат курса в TG: [https://t.me/+5GtB_oOuSA45Y2Vi chat link]
 
Чат курса в TG: [https://t.me/+5GtB_oOuSA45Y2Vi chat link]
  
'''Преподаватель''': Бардуков Анатолий
+
'''Преподаватели''': Бардуков Анатолий (TG: [https://t.me/sindq @sindq]), Свиридов Иван, Соозарь Мария
 
+
{| class="wikitable"
+
|-
+
! Преподаватель !! Контакты
+
|-
+
| style="background:#eaecf0;" |  ||[https://t.me/ Telegram]
+
|-
+
| style="background:#eaecf0;" |  ||[https://t.me/ Telegram]
+
|-
+
| style="background:#eaecf0;" |  ||[https://t.me/ Telegram]
+
|}
+
  
 
==Материалы курса==
 
==Материалы курса==
 
Ссылка на плейлист курса на YouTube: https://www.youtube.com/playlist?list=PLmA-1xX7IuzAcOe1hOaDW8Jj4mVaLOoDD
 
Ссылка на плейлист курса на YouTube: https://www.youtube.com/playlist?list=PLmA-1xX7IuzAcOe1hOaDW8Jj4mVaLOoDD
  
Ссылка на GitHub с материалами курса: [[ GitHub]]
+
Ссылка на GitHub с материалами курса: [[https://github.com/Sindbag/mlhl-bigdata GitHub]]
  
 
{| class="wikitable"
 
{| class="wikitable"
Строка 31: Строка 20:
 
  ! Занятие !! Тема !! Дата !! Преподаватель !! Материалы для самоподготовки к семинарам !! Дополнительные материалы
 
  ! Занятие !! Тема !! Дата !! Преподаватель !! Материалы для самоподготовки к семинарам !! Дополнительные материалы
 
|-
 
|-
| style="background:#eaecf0;" | '''1''' || || || || ||  
+
| style="background:#eaecf0;" | '''1''' [[https://www.youtube.com/watch?v=GfIYKt0BgB0&list=PLmA-1xX7IuzAcOe1hOaDW8Jj4mVaLOoDD Запись]] || Введение в распределенные системы. Bash & Docker || 12.09.22 || Анатолий Бардуков  ||  
 
|-
 
|-
| style="background:#eaecf0;" | '''2''' || || || || ||
+
| style="background:#eaecf0;" | '''2''' [[https://www.youtube.com/watch?v=x4BMfe8-75k&list=PLmA-1xX7IuzAcOe1hOaDW8Jj4mVaLOoDD Запись]] || SQL, NoSQL, MPP-format. Знакомство с видами БД, синтаксис запросов || 16.09.22 || Иван Свиридов|| ||
 
|-
 
|-
| style="background:#eaecf0;" | '''3''' || || || || ||
+
| style="background:#eaecf0;" | '''3''' [[https://www.youtube.com/watch?v=N7M1i7Wlvms&list=PLmA-1xX7IuzAcOe1hOaDW8Jj4mVaLOoDD Запись]] || Hadoop || 30.09.22 || Иван Свиридов || ||
 
|-
 
|-
| style="background:#eaecf0;" | '''4''' || || || || ||
+
| style="background:#eaecf0;" | '''4''' [[https://www.youtube.com/watch?v=_8TeUlJSJEQ&list=PLmA-1xX7IuzAcOe1hOaDW8Jj4mVaLOoDD Запись]] || YARN package manager, HDFS, MapReduce || 07.10.22 || Анатолий Бардуков || ||
 
|-
 
|-
| style="background:#eaecf0;" | '''5''' || || || || ||
+
| style="background:#eaecf0;" | '''5''' [[https://www.youtube.com/watch?v=zMkAo7u9KQc&list=PLmA-1xX7IuzAcOe1hOaDW8Jj4mVaLOoDD Запись]] || Spark RDD || 14.10.22 || Мария Соозарь || || [https://blog.acolyer.org/2016/05/03/gorilla-a-fast-scalable-in-memory-time-series-database/ Статья от Facebook] про сжатие колоночных данных
 
|-
 
|-
| style="background:#eaecf0;" | '''6''' || || || || ||
+
| style="background:#eaecf0;" | '''6''' [[https://www.youtube.com/watch?v=Xn3cCUP5LTE&list=PLmA-1xX7IuzAcOe1hOaDW8Jj4mVaLOoDD Запись]] || Spark DataFrame + Spark SQL || 21.10.22 || Анатолий Бардуков || ||
 +
|-
 +
|
 +
|-
 +
| style="background:#eaecf0;" | '''7''' [[https://www.youtube.com/watch?v=uVI5F9lvDx4&list=PLmA-1xX7IuzAcOe1hOaDW8Jj4mVaLOoDD Запись]] || Spark ML + handcrafted ML on Spark || 11.11.22 || Анатолий Бардуков ||
 +
[https://drive.google.com/file/d/1IPEyLVpcfMRsFGyyAv5YspuBfwcmsOUo/view?usp=sharing Презентация] про полный цикл разработки ML-сервиса,
 +
 
 +
[https://drive.google.com/file/d/11bW_cnisaEjuWUNFi29BwntT5Jo6Tstf/view?usp=sharing Презентация] про развертывание ML-моделей
 +
||
 +
|-
 +
| style="background:#eaecf0;" | '''8''' [[https://www.youtube.com/watch?v=Uzad_U5L4wg&list=PLmA-1xX7IuzAcOe1hOaDW8Jj4mVaLOoDD Запись]] || MLOps (model -> Docker -> prod + balancer), MLFlow || 16.11.22 || Анатолий Бардуков || ||
 +
|-
 +
| style="background:#eaecf0;" | '''9''' [[https://www.youtube.com/watch?v=N7CXWqY3uyc&list=PLmA-1xX7IuzAcOe1hOaDW8Jj4mVaLOoDD Запись]] || Distributed Learning. Quantization, Distillation and Prunning || 18.11.22 || Анатолий Бардуков || ||
 +
|-
 +
| style="background:#eaecf0;" | '''10''' [[https://www.youtube.com/watch?v=J2ZilprCUYM&list=PLmA-1xX7IuzAcOe1hOaDW8Jj4mVaLOoDD Запись]] || Approximate answer searching: LSH + HNSW || 24.11.22 || Иван Свиридов || ||
 +
|-
 +
| style="background:#eaecf0;" | '''11''' [[https://www.youtube.com/watch?v=rNLOMxAS-bk&list=PLmA-1xX7IuzAcOe1hOaDW8Jj4mVaLOoDD Запись]] || Streaming (Spark + Kafka) || 02.12.22 || Анатолий Бардуков || ||
 +
|-
 +
| style="background:#eaecf0;" | '''12''' [[https://www.youtube.com/watch?v=BL9MH5d1Qco&list=PLmA-1xX7IuzAcOe1hOaDW8Jj4mVaLOoDD Запись]] || [[https://drive.google.com/file/d/1J-EMv4vnNKoFGg4jWf49Lzqt-s--606l/view?usp=sharing Презентация]] Оргвопросы || 07.12.22 || Анатолий Бардуков || ||
 +
|-
 +
| style="background:#eaecf0;" | '''13''' [[https://www.youtube.com/watch?v=ptm0r7DOuYk&list=PLmA-1xX7IuzAcOe1hOaDW8Jj4mVaLOoDD Запись]] || Scala || 09.12.22 || Мария Соозарь || ||
 +
|-
 +
| style="background:#eaecf0;" | '''14''' [[https://www.youtube.com/watch?v=Ios0c66i-bQ&list=PLmA-1xX7IuzAcOe1hOaDW8Jj4mVaLOoDD Запись]] || [[https://habr.com/ru/company/yandex/blog/520134/ Слайды (Хабр)], [https://web.stanford.edu/class/ee380/Abstracts/101110-slides.pdf Слайды (Стэнфорд)]] Оптимизация инференса || 14.12.22 || Анатолий Бардуков || ||
 
|-
 
|-
 
|}
 
|}
Строка 47: Строка 58:
 
==Формула оценивания==
 
==Формула оценивания==
  
Оценка = 0.3*тесты + 0.7*ДЗ
+
min(10, 0.6 ДЗ + 0.4 проект + 0.3 бонусы)
  
В начале занятия - тест (4-5 несложных вопросов) по теме предыдущего занятия.
+
Лист с оценками: https://docs.google.com/spreadsheets/d/158tztQ-jFFErWMk7k3INnSs8tjDTWP9j1SBE-uxFfMw/edit?usp=sharing
  
 
== Домашние задания ==
 
== Домашние задания ==
 +
''' Наиболее подробно оцениваемые задания описаны в репозитории. И в презентации с 12-го занятия'''
 +
 +
В папках занятий на Гитхабе есть Docker'ы с заданиями для запуска
 +
 +
Базовый подход к сдаче заданий нижеследующий:
 +
 +
1. запустить Docker-контейнер по выбранной теме
 +
 +
<code>docker run -d -p <local>:<container> sindq/lsml-w<N>[-<task>]-ru</code>
 +
 +
2. решить задания в контейнере, в результате чего вы получите некоторый файл с решением (в контейнере)
 +
 +
3. сделать специфический запрос в грейдер (параметры - задание, ваш идентификатор (аккаунт в тг), номер задания, решение (тело post запроса))
 +
 +
<code>curl -F @filename <IP>/<COURSE>/<USER>/w<N>/<task></code>
 +
 +
4. оценку автоматически сохранится в документ с оценками (''сохраняется не лучшая, а последняя попытка, комментарии к ячейке будут содержать доп информацию'')
 +
 +
=== Бонусные задания ===
 +
Каждое защищённое задание даёт '''1 балл от итоговой оценки'''.
 +
 +
По своей сути они похожи на '''архитектурные собеседования''', у вас будет 25 минут на презентацию вашего решения (обычно даётся 1 час, но и решается задание на месте)
 +
 +
==== Процесс сдачи ====
 +
Устная защита решения, прорабатываемого вами самостоятельно, выглядит так:
 +
 +
* выбираете тему
 +
* придумываете решение, примерные критерии будут описаны в самом задании
 +
* договариваетесь о дате созвона с кем-то из преподавателей
 +
* звонок длится ~40 минут (15 минут закладываем на вопросы, постановку и общение на смежные темы)
 +
* получаете оценку :)
  
 
== Литература ==
 
== Литература ==
 +
* «Hadoop: The Definitive Guide», Tom White
 +
* «Spark для профессионалов», Сэнди Риза, Ури Лезерсон, Шон Оуэн и Джош Уиллс
 +
* Та самая "книжка с кабанчиком" «Designing Data-Intensive Applications» by Martin Kleppman
 +
* «Big Data: Principles and Best Practices Of Scalable Real-Time Data Systems» by Nathan Marz and James Warren

Текущая версия на 17:46, 8 января 2023

О курсе

Занятия проводятся в Zoom по пятницам в 19:00

Контакты

Канал курса в TG: channel link

Чат курса в TG: chat link

Преподаватели: Бардуков Анатолий (TG: @sindq), Свиридов Иван, Соозарь Мария

Материалы курса

Ссылка на плейлист курса на YouTube: https://www.youtube.com/playlist?list=PLmA-1xX7IuzAcOe1hOaDW8Jj4mVaLOoDD

Ссылка на GitHub с материалами курса: [GitHub]

Занятие Тема Дата Преподаватель Материалы для самоподготовки к семинарам Дополнительные материалы
1 [Запись] Введение в распределенные системы. Bash & Docker 12.09.22 Анатолий Бардуков
2 [Запись] SQL, NoSQL, MPP-format. Знакомство с видами БД, синтаксис запросов 16.09.22 Иван Свиридов
3 [Запись] Hadoop 30.09.22 Иван Свиридов
4 [Запись] YARN package manager, HDFS, MapReduce 07.10.22 Анатолий Бардуков
5 [Запись] Spark RDD 14.10.22 Мария Соозарь Статья от Facebook про сжатие колоночных данных
6 [Запись] Spark DataFrame + Spark SQL 21.10.22 Анатолий Бардуков
7 [Запись] Spark ML + handcrafted ML on Spark 11.11.22 Анатолий Бардуков

Презентация про полный цикл разработки ML-сервиса,

Презентация про развертывание ML-моделей

8 [Запись] MLOps (model -> Docker -> prod + balancer), MLFlow 16.11.22 Анатолий Бардуков
9 [Запись] Distributed Learning. Quantization, Distillation and Prunning 18.11.22 Анатолий Бардуков
10 [Запись] Approximate answer searching: LSH + HNSW 24.11.22 Иван Свиридов
11 [Запись] Streaming (Spark + Kafka) 02.12.22 Анатолий Бардуков
12 [Запись] [Презентация] Оргвопросы 07.12.22 Анатолий Бардуков
13 [Запись] Scala 09.12.22 Мария Соозарь
14 [Запись] [Слайды (Хабр), Слайды (Стэнфорд)] Оптимизация инференса 14.12.22 Анатолий Бардуков

Формула оценивания

min(10, 0.6 ДЗ + 0.4 проект + 0.3 бонусы)

Лист с оценками: https://docs.google.com/spreadsheets/d/158tztQ-jFFErWMk7k3INnSs8tjDTWP9j1SBE-uxFfMw/edit?usp=sharing

Домашние задания

Наиболее подробно оцениваемые задания описаны в репозитории. И в презентации с 12-го занятия

В папках занятий на Гитхабе есть Docker'ы с заданиями для запуска

Базовый подход к сдаче заданий нижеследующий:

1. запустить Docker-контейнер по выбранной теме

docker run -d -p <local>:<container> sindq/lsml-w<N>[-<task>]-ru

2. решить задания в контейнере, в результате чего вы получите некоторый файл с решением (в контейнере)

3. сделать специфический запрос в грейдер (параметры - задание, ваш идентификатор (аккаунт в тг), номер задания, решение (тело post запроса))

curl -F @filename <IP>/<COURSE>/<USER>/w<N>/<task>

4. оценку автоматически сохранится в документ с оценками (сохраняется не лучшая, а последняя попытка, комментарии к ячейке будут содержать доп информацию)

Бонусные задания

Каждое защищённое задание даёт 1 балл от итоговой оценки.

По своей сути они похожи на архитектурные собеседования, у вас будет 25 минут на презентацию вашего решения (обычно даётся 1 час, но и решается задание на месте)

Процесс сдачи

Устная защита решения, прорабатываемого вами самостоятельно, выглядит так:

  • выбираете тему
  • придумываете решение, примерные критерии будут описаны в самом задании
  • договариваетесь о дате созвона с кем-то из преподавателей
  • звонок длится ~40 минут (15 минут закладываем на вопросы, постановку и общение на смежные темы)
  • получаете оценку :)

Литература

  • «Hadoop: The Definitive Guide», Tom White
  • «Spark для профессионалов», Сэнди Риза, Ури Лезерсон, Шон Оуэн и Джош Уиллс
  • Та самая "книжка с кабанчиком" «Designing Data-Intensive Applications» by Martin Kleppman
  • «Big Data: Principles and Best Practices Of Scalable Real-Time Data Systems» by Nathan Marz and James Warren