<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://www.wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_1-2021-2022</id>
	<title>Распределённые системы 1-2021-2022 - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://www.wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_1-2021-2022"/>
	<link rel="alternate" type="text/html" href="https://www.wikicshse.ru/index.php?title=%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_1-2021-2022&amp;action=history"/>
	<updated>2026-06-08T05:15:48Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://www.wikicshse.ru/index.php?title=%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_1-2021-2022&amp;diff=2429&amp;oldid=prev</id>
		<title>imported&gt;SavelyProkhorov: final edit</title>
		<link rel="alternate" type="text/html" href="https://www.wikicshse.ru/index.php?title=%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_1-2021-2022&amp;diff=2429&amp;oldid=prev"/>
		<updated>2022-08-14T18:35:46Z</updated>

		<summary type="html">&lt;p&gt;final edit&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==О курсе==&lt;br /&gt;
&lt;br /&gt;
Этот курс является логическим продолжением курса &amp;quot;Обработка и анализ больших данных&amp;quot;, проходившего в 4-5 модулях&lt;br /&gt;
&lt;br /&gt;
Занятия проводятся в [https://us06web.zoom.us/j/87088072787?pwd=MHlXTjJWM2cyRjNTMFBTbm1BQVA2Zz09 Zoom] &amp;#039;&amp;#039;&amp;#039;по четвергам в 18:00&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Контакты==&lt;br /&gt;
&lt;br /&gt;
Канал курса в TG: [https://t.me/+XgouhLCeXPhlMWQy HighLoad channel link]&lt;br /&gt;
&lt;br /&gt;
Чат курса в TG: [https://t.me/+Ibk2SWMRrQFiOGM6 HighLoad chat link]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Преподаватель !! Контакты &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#eaecf0;&amp;quot; | Илья Косарев ||[https://t.me/purePers Telegram]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Материалы курса==&lt;br /&gt;
Ссылка на плейлист курса на YouTube: https://www.youtube.com/playlist?list=PLmA-1xX7IuzCc_Jh9l9x6oWadW31XhDux&lt;br /&gt;
&lt;br /&gt;
Описание проекта: [https://docs.google.com/document/d/1I4biVBGv_QUENxKm2ketMMBUOwmQf2HInvmdxjonN6A/edit GoogleDoc]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
 ! Неделя !! Тема !! Материалы для подготовки к занятию !! Дополнительные материалы &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#eaecf0;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; || Основы распределённых систем. Координация через RabbitMQ || &lt;br /&gt;
&lt;br /&gt;
Статья PhoenixNAP: [https://phoenixnap.com/kb/ssh-to-connect-to-remote-server-linux-or-windows &amp;quot;How to Use SSH to Connect to a Remote Server in Linux or Windows&amp;quot;],&lt;br /&gt;
&lt;br /&gt;
Статья на doc-странице VSCode [https://code.visualstudio.com/docs/remote/ssh &amp;quot;Remote Development using SSH&amp;quot;],&lt;br /&gt;
&lt;br /&gt;
Splunk: [https://www.splunk.com/en_us/data-insider/what-are-distributed-systems.html#:~:text=A%20distributed%20system%20is%20a,been%20responsible%20for%20the%20task &amp;quot;What are distributed systems&amp;quot;],&lt;br /&gt;
&lt;br /&gt;
Wiki: [https://en.m.wikipedia.org/wiki/Message_Passing_Interface Message Passing Inetrface (MPI)],&lt;br /&gt;
&lt;br /&gt;
[[https://phoenixnap.com/kb/generate-setup-ssh-key-ubuntu генерируем SSH-ключ]]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
[[https://drive.google.com/file/d/1HX_jvfcB6Iu3xn-LvWKdWAVmUVYs_rbO/view?usp=sharing Рабочий конфиг]], должен лежать в папке .ssh &lt;br /&gt;
&lt;br /&gt;
[[https://docs.google.com/presentation/d/1fPIendujCgB-CyHoYFXNzVi9oe8T_pdL/edit?usp=sharing&amp;amp;ouid=117076515595449849677&amp;amp;rtpof=true&amp;amp;sd=true Презентация с занятия]] &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#eaecf0;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; || Консультация по RabbitMQ ДЗ || [https://www.geeksforgeeks.org/chandy-lamports-global-state-recording-algorithm/ Chandy–Lamport’s global state recording algorithm] ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#eaecf0;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039; || MapReduce. MPI. Data processing || &lt;br /&gt;
[https://en.m.wikipedia.org/wiki/Message_Passing_Interface Message Passing Interface]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/MapReduce MapReduce]&lt;br /&gt;
&lt;br /&gt;
 ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#eaecf0;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039; || Разбор MapReduce ДЗ. Препроцессинг целевого датасета ||&lt;br /&gt;
Прогнать на сервере [https://drive.google.com/file/d/1uNegb8qWaq5tEM3_05pCPUmB9uFc3F5e/view?usp=sharing ноутбук &amp;quot;FMA: A Dataset For Music Analysis&amp;quot;]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#eaecf0;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;5&amp;#039;&amp;#039;&amp;#039; || Horovod ||&lt;br /&gt;
[https://horovod.ai/]&lt;br /&gt;
[https://github.com/horovod/horovod]&lt;br /&gt;
[https://horovod.readthedocs.io/en/stable/summary_include.html#why-horovod]&lt;br /&gt;
[https://paperswithcode.com/sota/image-classification-on-imagenet]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#eaecf0;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;6&amp;#039;&amp;#039;&amp;#039; || Parallel training on FMA with Horovod. Enhancement &amp;amp; Inference ||&lt;br /&gt;
[https://horovod.readthedocs.io/en/stable/timeline_include.html]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#eaecf0;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;7&amp;#039;&amp;#039;&amp;#039; || Telegram bot for music genre inference. More enhancements || ||&lt;br /&gt;
&lt;br /&gt;
[https://github.com/AnastasiyaMax/MLDS_python_course_fall21/blob/main/class_6/bot_tutorial.ipynb Туториал по TG-боту]&lt;br /&gt;
&lt;br /&gt;
Референсы хороших проектов (от самого легковесного к тем, что потяжелее): [https://github.com/Dora9000/Telegram_bot @Dora9000], [https://github.com/Cliefspring/hse-mlds-cbrf-telegram-bot @Cliefspring], [https://github.com/AlexeyMegley/advanced_python_course/tree/master/project @AlexeyMegley]&lt;br /&gt;
&lt;br /&gt;
Наши референсы на [https://disk.yandex.ru/d/ouF-uOdrXtGNBw Я.Диске]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
# [&amp;#039;&amp;#039;&amp;#039;0.1 от оценки&amp;#039;&amp;#039;&amp;#039;] Реализовать в Python с помощью rabbitMQ алгоритм для снимка глобального состояния распределённой системы (см. [https://en.wikipedia.org/wiki/Chandy%E2%80%93Lamport_algorithm Chandy–Lamport algorithm on Wiki]). Рекомендуется библиотека [https://pika.readthedocs.io/en/stable/ pika]&lt;br /&gt;
# Реализовать MapReduce решение, позволяющее построить обратный индекс с частотностью слов по коллекции предоставленных документов. Слова достаточно очистить от знаков пунктуации и привести к нижнему регистру. Результат - csv-таблица: по вертикали - слова (токены), по горизонтали - документы. Для каждой пары токен+документ написать количество вхождений. Сравнить время выполнения на одном и нескольких клиентах&lt;br /&gt;
# [&amp;#039;&amp;#039;&amp;#039;0.2 от оценки&amp;#039;&amp;#039;&amp;#039;] Реализовать максимально возможное ускорение обработки датасета путём распараллеливания на MPI для обработки датасета на основе ноутбука /NEW_HDD/HDD_3TB/kosarev/HW3MPI/create_audio_features.ipynb . Данные в той же директории. Также лежит на всякий случай на https://disk.yandex.ru/d/ouF-uOdrXtGNBw&lt;br /&gt;
# [&amp;#039;&amp;#039;&amp;#039;0.3 от оценки&amp;#039;&amp;#039;&amp;#039;] Новое домашнее задание по проекту, выполняем в командах. Реализация обучения свёрточной сети с помощью horovod на 4  видеокартах сервера для данных, полученных в результате предобработки, выполненной в предыдущем задании. Можно выполнить по аналогии с /NEW_HDD/HDD_3TB/kosarev/hvdExample/pytorch_mnist.py&lt;br /&gt;
# [&amp;#039;&amp;#039;&amp;#039;0.2 от оценки&amp;#039;&amp;#039;&amp;#039;] Снова в командах:&lt;br /&gt;
* Экспериментируем со слоями: пробуем убрать dropuot, сравниваем получившееся качество и скорость;&lt;br /&gt;
* С помощью psutil.virtual_memory() (смотрите так же другие функции по желанию) балансируем загрузку данных, так чтобы при использовании [https://os.unil.cloud.switch.ch/fma/fma_medium.zip среднего] или [https://os.unil.cloud.switch.ch/fma/fma_large.zip большого] размера датасета вы всё равно могли произвести обучение на всех данных. Т.е. читаем по частям, пока есть capacity, зачем обучаемся, затем снова читаем, и т.д. Также предлагается сравнить по скорости и качеству обучение по частям, когда мы на каждой части сразу обучаем несколько (вплоть до всех желаемых) эпох, или же сначала проходим по всем данным одной эпохой, потом второй и т.д.&lt;br /&gt;
* [&amp;#039;&amp;#039;&amp;#039;Бонусное задание на 1 балл&amp;#039;&amp;#039;&amp;#039;]: загрузку промоделировать на несколько машин (по факту в любом случае обучаемся на одной) с разделением батча между машинами и суммированием градиентов через mapreduce.&lt;br /&gt;
* С заданной частотой сбрасываем результаты обучения (веса) в файлик для сохранения прогресса&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;6. [&amp;#039;&amp;#039;&amp;#039;До 0.2 от оценки&amp;#039;&amp;#039;&amp;#039;] Улучшения:&lt;br /&gt;
* обернуть решение в TG-бота, который сможет определять жанр отправленного трека&lt;br /&gt;
* реализовать &amp;quot;распределённую&amp;quot; обработку батча с суммированием градиентов с помощью MapReduce&lt;br /&gt;
* запроцессить исходный датасет в фичи &amp;quot;распределённо&amp;quot;, закидывая сэмплы в RabbitMQ&lt;br /&gt;
&lt;br /&gt;
* Реализовать &amp;quot;распределённую&amp;quot; обработку батча с суммированием градиента с помощью MapReduce + подсчёт распределения загрузки между инстансами через RabbitMQ&lt;br /&gt;
&lt;br /&gt;
==Формула оценивания==&lt;/div&gt;</summary>
		<author><name>imported&gt;SavelyProkhorov</name></author>
	</entry>
</feed>