Эффективные системы глубинного обучения
Преподаватель : Рябинин Максим Константинович
За последние несколько лет глубинное обучение трансформировалось из предмета академических исследований в инструмент для решения практических задач. Ожидаемым образом это приводит к необходимости задумываться о производительности систем на его основе: уже сейчас неосторожно поставленные эксперименты могут длиться неделями, утилизируя ваше железо от силы на 10 процентов. Вне зависимости от того, какие задачи вы решаете, большее понимание устройства фреймворков и знание подходов к оптимизации работы с нейросетями поможет вам рациональнее использовать имеющиеся ресурсы и быстрее получать результаты. В отличие от большинства курсов по глубинному обучению мы сделаем акцент на практические аспекты обучения и применения нейросетей. В частности, мы расскажем вам:
● как устроено распределённое обучение на нескольких видеокартах и даже серверах
● что делать, если нужно обучить модель, не влезающую в одну видеокарту
● чем находить узкие места в коде обучения и инференса, а также на что стоит обращать внимание для NLP и CV-задач
На семинарах будем использовать PyTorch и покажем вам, как пользоваться популярными библиотеками и инструментами для эффективного DL, а домашние задания научат вас реализовывать различные парадигмы распределённого обучения. Критерии оценки знаний В программе факультатива предусмотрены 3 домашних задания на реализацию техник распределённого обучения. Оценка за курс представляет собой среднее арифметическое оценок за все задания.
План занятий:
Неделя 1
Введение в эффективное глубинное обучение. Параллельное обучение стандартных алгоритмов машинного обучения и word2vec на примере парадигмы Parameter Server. Асинхронное обучение: Hogwild, BytePS. Домашнее задание: распределённое обучение GloVe.
Неделя 2
Data-parallel training. Реализации подхода AllReduce, протокол Gossip. Знакомство с модулем torch.distributed, использование протоколов взаимодействия между узлами, реализация аналога PyTorch DistributedDataParallel. Домашнее задание: реализация Synchronized BatchNorm, распределённый подсчёт валидационных метрик.
Неделя 3 Model-parallel training. Улучшения: tensor model parallelism and pipelining. Sharded data-parallel training (ZeRO)+CPU offloading. Библиотеки для обучения моделей с большим числом параметров: DeepSpeed, fairscale. Домашнее задание: реализация pipelined model parallel, сравнение производительности.
Неделя 4 Профайлинг производительности нейросетей: nvprof, NVIDIA Nsight Systems, встроенные средства PyTorch. Ответы на вопросы слушателей.
Для кого: студенты 4 курса ПМИ, 1-2 курса НОД
Расписание: понедельник 18:10-19:30 онлайн с 19 апреля
Подключиться к занятию
За последние несколько лет глубинное обучение трансформировалось из предмета академических исследований в инструмент для решения практических задач. Ожидаемым образом это приводит к необходимости задумываться о производительности систем на его основе: уже сейчас неосторожно поставленные эксперименты могут длиться неделями, утилизируя ваше железо от силы на 10 процентов. Вне зависимости от того, какие задачи вы решаете, большее понимание устройства фреймворков и знание подходов к оптимизации работы с нейросетями поможет вам рациональнее использовать имеющиеся ресурсы и быстрее получать результаты. В отличие от большинства курсов по глубинному обучению мы сделаем акцент на практические аспекты обучения и применения нейросетей. В частности, мы расскажем вам:
● как устроено распределённое обучение на нескольких видеокартах и даже серверах
● что делать, если нужно обучить модель, не влезающую в одну видеокарту
● чем находить узкие места в коде обучения и инференса, а также на что стоит обращать внимание для NLP и CV-задач
На семинарах будем использовать PyTorch и покажем вам, как пользоваться популярными библиотеками и инструментами для эффективного DL, а домашние задания научат вас реализовывать различные парадигмы распределённого обучения. Критерии оценки знаний В программе факультатива предусмотрены 3 домашних задания на реализацию техник распределённого обучения. Оценка за курс представляет собой среднее арифметическое оценок за все задания.
План занятий:
Неделя 1
Введение в эффективное глубинное обучение. Параллельное обучение стандартных алгоритмов машинного обучения и word2vec на примере парадигмы Parameter Server. Асинхронное обучение: Hogwild, BytePS. Домашнее задание: распределённое обучение GloVe.
Неделя 2
Data-parallel training. Реализации подхода AllReduce, протокол Gossip. Знакомство с модулем torch.distributed, использование протоколов взаимодействия между узлами, реализация аналога PyTorch DistributedDataParallel. Домашнее задание: реализация Synchronized BatchNorm, распределённый подсчёт валидационных метрик.
Неделя 3 Model-parallel training. Улучшения: tensor model parallelism and pipelining. Sharded data-parallel training (ZeRO)+CPU offloading. Библиотеки для обучения моделей с большим числом параметров: DeepSpeed, fairscale. Домашнее задание: реализация pipelined model parallel, сравнение производительности.
Неделя 4 Профайлинг производительности нейросетей: nvprof, NVIDIA Nsight Systems, встроенные средства PyTorch. Ответы на вопросы слушателей.
Для кого: студенты 4 курса ПМИ, 1-2 курса НОД
Расписание: понедельник 18:10-19:30 онлайн с 19 апреля
Подключиться к занятию