Бакалавриат
2023/2024
Эффективные системы глубинного обучения
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Лучший по критерию «Новизна полученных знаний»
Статус:
Курс по выбору (Прикладная математика и информатика)
Направление:
01.03.02. Прикладная математика и информатика
Где читается:
Факультет компьютерных наук
Когда читается:
4-й курс, 3 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для всех кампусов НИУ ВШЭ
Язык:
русский
Кредиты:
4
Контактные часы:
40
Программа дисциплины
Аннотация
За последние несколько лет глубинное обучение надёжно закрепилось как инструмент для решения массы практических задач, в которых важны как быстрое время итерации эксперимента, так и высокая производительность моделей на этапе применения. Без сомнения, 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.