Бакалавриат
2021/2022![Цель освоения дисциплины](/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/controls.svg)
![Промежуточная аттестация](/f/src/global/i/edu/intermediate_certification.svg)
![Список литературы](/f/src/global/i/edu/library.svg)
Эффективные системы глубинного обучения
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Лучший по критерию «Новизна полученных знаний»
Статус:
Курс по выбору (Прикладная математика и информатика)
Направление:
01.03.02. Прикладная математика и информатика
Где читается:
Факультет компьютерных наук
Когда читается:
4-й курс, 3 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для всех кампусов НИУ ВШЭ
Преподаватели:
Космачев Алексей Дмитриевич,
Маркович Александр,
Рябинин Максим Константинович,
Семенкин Антон Александрович
Язык:
русский
Кредиты:
4
Контактные часы:
44
Программа дисциплины
Аннотация
За последние несколько лет глубинное обучение надёжно закрепилось как инструмент для решения массы практических задач, в которых важны как быстрое время итерации эксперимента, так и высокая производительность моделей на этапе применения. Без сомнения, Deep Learning — активно растущая область, однако уже сейчас неосторожно поставленные эксперименты могут длиться неделями, нагружая ваши серверы с сильно пониженной эффективностью. Вне зависимости от решаемых задач большее понимание устройства фреймворков, их взаимодействия с аппаратной частью компьютера, а также знание актуальных подходов к оптимизации работы с нейросетями и организации работы с ML-моделями в целом помогут вам рациональнее использовать имеющиеся ресурсы и быстрее получать результаты, порой почти не прикладывая усилий по изменению кода. В отличие от большинства курсов по глубинному обучению, мы не будем в сотый раз рассказывать вам про рекуррентные сети и дропаут. Вместо этого сделаем акцент на практические аспекты обучения и применения нейросетей на практике, которые обычно оставляют за рамками образовательных программ.
В частности, мы расскажем вам:
* Как вообще устроено распределённое обучение на нескольких видеокартах или даже серверах;
* Что делать, если нужно обучить модель, не влезающую в одну видеокарту и при этом не состариться;
* Как развернуть вашу модель в облаке, чтобы пользоваться ей мог кто-то кроме вас
* Как оптимизировать обученную модель, чтобы для быстрой обработки запросов не требовался отдельный суперкомпьютер
* Чем находить узкие места в коде обучения и инференса, а также на что стоит обращать внимание в NLP и CV-задачах
* Как организовывать эксперименты по обучению нейросетей с максимальной воспроизводимостью и версионируемостью всех этапов, а также тестировать их наряду с обычным кодом
На семинарах мы покажем вам, как пользоваться популярными библиотеками и инструментами для эффективного DL. Домашние задания научат вас оптимизировать разные компоненты обучения и превращать готовую модель в несложный сервис.
Цель освоения дисциплины
- Знать различные парадигмы распределённого глубинного обучения
- Знать о способах экономии GPU-памяти при обучении моделей
Планируемые результаты обучения
- Уметь находить и устранять субоптимальные фрагменты в коде, задействующем обучение или применение нейронных сетей
- Уметь оптимизировать нейросетевые модели для обработки высокого числа запросов с использованием стандартных инструментов
- Уметь работать с библиотекой PyTorch Distributed на уровне как использования низкоуровневых примитивов, так и адаптации имеющегося кода
- Уметь разворачивать нейросети в виде простейших Web-сервисов
Содержание учебной дисциплины
- Введение в курс
- Краткое повторение основ глубинного обучения и операционных систем
- Data-parallel training. Семейство алгоритмов All-Reduce
- Model-parallel training
- Профилирование кода на GPU. Оптимизация обучения для конкретных доменов
- Основы создания сетевых сервисов на Python
- Трансформация обученных моделей в сервисы и оптимизация их выполнения программными средствами: inference-серверы, выполнение в браузере и на устройстве
- Оптимизация выполнения нейросетей архитектурными средствами: квантизация, дистилляция, сжатие
- Отслеживание экспериментов, версионирование моделей и данных
- Тестирование, отладка, мониторинг и поддержка DL-систем
Элементы контроля
- Домашнее задание 1Выдаётся частями после 2, 3 и 4 лекций и содержит задания по различным методам распределённого обучения нейросетей, а также эффективности обучения с точки зрения затрат памяти.
- Домашнее задание 2Выдаётся после 5 лекции и содержит задания по профилированию и оптимизации кода обучения.
- Домашнее задание 3Выдаётся после 6, 7, 8 лекций и содержит задания по развертыванию DL-моделей для практического использования и оптимизации времени их работы.
- Домашнее задание 4Выдаётся после 9 лекции и содержит задания по созданию версионируемых пайплайнов обучения моделей, а также их тестированию.
Промежуточная аттестация
- 2021/2022 учебный год 3 модуль0.3 * Домашнее задание 1 + 0.2 * Домашнее задание 4 + 0.1 * Домашнее задание 2 + 0.4 * Домашнее задание 3
Список литературы
Рекомендуемая основная литература
- Ilharco, G., Ilharco, C., Turc, I., Dettmers, T., Ferreira, F., & Lee, K. (2020). High Performance Natural Language Processing. Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: Tutorial Abstracts. https://doi.org/10.18653/v1/2020.emnlp-tutorials.4
Рекомендуемая дополнительная литература
- Huang, Y., Cheng, Y., Bapna, A., Firat, O., Chen, M. X., Chen, D., Lee, H., Ngiam, J., Le, Q. V., Wu, Y., & Chen, Z. (2018). GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism.
- Rajbhandari, S., Rasley, J., Ruwase, O., & He, Y. (2019). ZeRO: Memory Optimizations Toward Training Trillion Parameter Models.
- Shoeybi, M., Patwary, M., Puri, R., LeGresley, P., Casper, J., & Catanzaro, B. (2019). Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism.