• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

Efficient Deep Learning Systems

2021/2022
Academic Year
RUS
Instruction in Russian
4
ECTS credits
Course type:
Elective course
When:
4 year, 3 module

Instructors


Космачев Алексей Дмитриевич


Маркович Александр

Программа дисциплины

Аннотация

За последние несколько лет глубинное обучение надёжно закрепилось как инструмент для решения массы практических задач, в которых важны как быстрое время итерации эксперимента, так и высокая производительность моделей на этапе применения. Без сомнения, 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.