Что такое PyTorch и почему он популярен

Знакомимся с PyTorch: что это за инструмент и почему на нём пишут исследователи и продакшен.

PyTorch — библиотека для работы с тензорами и автоматического дифференцирования, на которой строят и обучают нейронные сети.

Зачем вообще отдельная библиотека

Вы уже знаете теорию: нейросеть — это слои с весами, прямой проход (forward) считает предсказание, а обратный (backprop) считает градиенты, по которым градиентный спуск двигает веса. На чистом Python и numpy это писать можно, но больно: каждый градиент придётся выводить и кодировать руками, а считать на видеокарте numpy не умеет. PyTorch снимает обе боли. Он даёт тензоры (как массивы numpy, но умеют жить на GPU) и autograd — механизм, который сам считает градиенты любой функции, что вы написали. Вам остаётся описать только forward.

Динамический граф — главная фишка

Чтобы посчитать градиенты, нужно знать, какие операции и в каком порядке привели к результату. Этот порядок называют графом вычислений. Есть два подхода. В статическом графе (ранний TensorFlow) вы сначала описываете весь граф как схему, компилируете его, и только потом прогоняете данные. В динамическом графе PyTorch граф строится на лету, прямо когда выполняется обычный Python-код: написали a + b — узел графа создался в этот же момент.

Что это даёт на практике: внутри модели можно использовать обычные if, циклы for, печатать промежуточные тензоры через print и ставить точки останова в отладчике. Модель — это просто Python-код, который выполняется строка за строкой. Поэтому PyTorch так любят за «питоничность»: он не заставляет учить отдельный язык описания графов.

Где PyTorch используют

Это де-факто стандарт в исследованиях ИИ: большинство свежих статей выходят с кодом на PyTorch. На нём построены целые экосистемы — torchvision для картинок, Hugging Face Transformers для языковых моделей, PyTorch Lightning для удобного цикла обучения. Те же языковые модели, что стоят за современными чат-ботами, обучают и дообучают в основном на PyTorch.

Что хотимЧто даёт PyTorch
Считать на GPUТензор переносится на устройство одной командой .to(device)
Не выводить градиенты рукамиautograd считает их сам по графу вычислений
Отлаживать как обычный коддинамический граф: print, if, отладчик работают
Готовые слои и моделимодуль torch.nn и предобученные сети

Как выглядит код

Чтобы почувствовать стиль, посмотрите на крошечный пример. Запускать его в браузере мы не будем (PyTorch в песочнице не работает), но прочитать важно — дальше весь torch-код оформлен так же, для чтения:

import torch

# два тензора
a = torch.tensor([1.0, 2.0, 3.0])
b = torch.tensor([10.0, 20.0, 30.0])

# обычная арифметика — это и есть построение графа на лету
c = a + b
print(c)          # tensor([11., 22., 33.])
print(c.sum())    # tensor(66.)

Никаких «сессий» и компиляции — пишете арифметику, и она сразу считается. Это и есть динамический граф в действии.

Что нужно для старта

В этом курсе предполагается, что вы знаете Python и базовую теорию нейросетей (forward, backprop, градиентный спуск). Видеокарта не обязательна: всё, что мы разбираем, прекрасно считается на CPU — просто медленнее. Установку разберём в следующем уроке.

Итог

  • PyTorch = тензоры (массивы, умеющие на GPU) + autograd (автоматические градиенты).
  • Граф вычислений динамический: строится на лету во время выполнения обычного Python-кода.
  • Отсюда питоничность: обычные if, циклы, print и отладчик работают внутри модели.
  • Это стандарт в исследованиях и основа экосистем torchvision, Hugging Face, Lightning.
Проверьте себя
1. В чём ключевая особенность динамического графа вычислений PyTorch?
AГраф нужно заранее скомпилировать перед запуском данных
BГраф строится на лету во время выполнения обычного Python-кода
CГраф работает только на GPU и недоступен на CPU
DГраф запрещает использовать if и циклы внутри модели
2. Что из перечисленного PyTorch берёт на себя, избавляя вас от ручной работы?
AНаписание прямого прохода (forward) за вас
BПодбор архитектуры сети автоматически
CВычисление градиентов любой написанной вами функции
DВыбор задачи, которую решает модель
3. Нужна ли видеокарта (GPU), чтобы проходить этот курс?
AДа, без GPU PyTorch не запускается
BНет, всё считается и на CPU, просто медленнее
CДа, autograd работает только на GPU
DНет, но тензоры тогда недоступны
Поддержать проект