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

Efficient Deep Learning Systems

2023/2024
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-сервисов
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Введение в курс
  • Управление экспериментами, версионирование артефактов и тестирование DL-систем
  • Профилирование кода на GPU. Оптимизация обучения для конкретных доменов
  • Введение в распределенное машинное обучение
  • Data-parallel training. Семейство алгоритмов All-Reduce
  • Model-parallel training
  • Основы создания сетевых сервисов на Python
  • Трансформация обученных моделей в сервисы и оптимизация их выполнения программными средствами: inference-серверы, выполнение в браузере и на устройстве
  • Оптимизация выполнения нейросетей архитектурными средствами: квантизация, дистилляция, сжатие
Элементы контроля

Элементы контроля

  • неблокирующий Домашнее задание по torch.distributed
  • неблокирующий Домашнее задание по large-scale обучению
  • неблокирующий Домашнее задание по оптимизации обучения и профилированию кода
  • неблокирующий Домашнее задание по тестированию моделей
  • неблокирующий Домашнее обучение по веб-сервисам с использованием нейросетей
  • неблокирующий Домашнее задание по основам распределенного обучения
  • неблокирующий Домашнее задание по оптимизации моделей
Промежуточная аттестация

Промежуточная аттестация

  • 2023/2024 учебный год 3 модуль
    0.134 * Домашнее задание по large-scale обучению + 0.133 * Домашнее задание по torch.distributed + 0.2 * Домашнее задание по оптимизации моделей + 0.1 * Домашнее задание по оптимизации обучения и профилированию кода + 0.133 * Домашнее задание по основам распределенного обучения + 0.1 * Домашнее задание по тестированию моделей + 0.2 * Домашнее обучение по веб-сервисам с использованием нейросетей
Список литературы

Список литературы

Рекомендуемая основная литература

  • 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.