Полезные материалы про PyTorch

Полезные материалы про PyTorch

Evgenii Nikitin

Внутренности торча

Даже если вы не хотите контрибьютить в Пайторч, хотя бы поверхностное понимание устройства его внутренностей - небесполезная инвестиция времени. Всё-таки это ключевая библиотека многих продакшн DL-систем (у нас - всех).

Помимо документации и блога (очень рекомендую), в этом плане мне особенно нравятся два материала. Один называется PyTorch Internals, он был опубликован в 2019 году, так что в некоторых местах устарел, но основные концепты (тензор, storage, autograd, ATen, kernel) описаны хорошо и с симпатичными слайдами.

В декабре 2023 года появилась вот такая презентация, к сожалению, видео выступления было утеряно в процесса записи. В начале идёт разбор основных компонентов торча, а вторая часть фокусируется на новинках второй версии - TorchDynamo, Inductor, ExecuTorch.

Если вы только знакомитесь с библиотекой, то могу порекомендовать старую серию постов от Paperspace. Много интересного можно почерпнуть в ответах на StackOverflow (пример про Storage) и даже в дискуссии с GPT-4.

Autograd

PyTorch по своей сути изначально явлется фреймворком Autograd - обратного автоматического дифференциирования. Материалы для более глубокого понимания автограда:

  • Autograd Mechanics - текстовое описание основных принципов в документации Пайторча
  • A Gentle Introduction to torch.autograd - официальный туториал, в котором в том числе упоминается, что torch.autograd вообще-то считает произведение вектора (градиентов) и Якобиана (матрицы производных). Просто обычно мы применяем .backward(gradient) к скалярному лоссу - например, сумме, и в качестве вектора имплицитно берётся единица. В этой статье разбираются разные варианты инпутов и аутпутов и эксплицитное прокидывание градиентов. Ещё объяснения и примеры можно найти тут и тут.
  • Когда-то в университетах мы учили сеточки, реализуя слои с нуля в numpy. Аналогично можно реализовать и свой autograd-движок, как это сделал Андрей Карпаты. Вот ссылка на весь плейлист.

Прочее

Ещё несколько рандомных около-пайторч материалов, которые мне нравятся:

  • How Are Convolutions Actually Performed Under the Hood? - как ускорить наивную имплементацию конволюции почти до уровня Пайторча. Помогает разобраться во внутренностях конволюции.
  • Tensor Puzzles - реализуем разные операции на тензорах с помощью бродкаста. Когда устаю работать, пробую решить 1-2 примерчика в перерывах.
  • Pytorch Toolbelt - либа с разными фишками, от TTA и тайл-инференса до ансамблирования моделей.
  • minitorch - учебная библиотека, которая реимплементирует Пайторч на чистом Питоне
  • PyTorch Performance Tuning Guide - преза от NVIDIA 2020 года с советами по оптимизации
  • Feeding the Beast: The Data Loading Path for DL Training - не про пайторч, но интересная ссылка про оптимизации чтения данных при обучении
  • Making DL Go Brrrr From First Principles - оптимизация нейронок с точки зрения compute и memory bandwidth, ищем боттлнеки

Report Page