AI и машинное обучение

Учебник PyTorch для начинающих

27 уроков · 6 разделов · бесплатно, без регистрации

PyTorch — главная библиотека для глубокого обучения: на ней пишут исследователи и обучают модели в продакшене. Этот курс — практический: вы научитесь реально обучать нейросети, а не только читать про них. Мы разберём тензоры и автоматическое дифференцирование (autograd), соберём модели из слоёв nn.Module, напишем настоящий цикл обучения, подключим данные через DataLoader и дойдёте до свёрточных сетей и transfer learning. Предполагается, что вы знаете Python и основы нейросетей (forward, backprop, градиентный спуск). Видеокарта не нужна — всё работает и на CPU.

Курс «PyTorch» состоит из 6 разделов и 27 уроков: Введение и тензоры, Autograd — автоматическое дифференцирование, Построение моделей (nn.Module), Цикл обучения, Данные и реальные модели и Практика и экосистема. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Введение и тензоры

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

      PyTorch — библиотека для глубокого обучения с динамическим графом и питоничным API. Чем он отличается и почему его выбирают.

    2. Установка и устройства: CPU и GPU

      Как поставить PyTorch через pip, проверить версию и доступность GPU, и как переносить тензоры на устройство через .to(device).

    3. Тензоры: создание, типы, форма, индексация

      Главный объект PyTorch — тензор. Как его создавать, какие бывают dtype, что такое shape, как индексировать и менять форму через reshape и view.

    4. Операции и броадкастинг

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

    5. Мост с numpy

      Как переводить тензоры в массивы numpy и обратно, что такое общая память между ними и когда возникают подводные камни.

  2. 2 Autograd — автоматическое дифференцирование

    1. requires_grad и граф вычислений

      Как PyTorch строит граф вычислений: флаг requires_grad, листовые тензоры, grad_fn и почему именно отсюда берётся автоматический backprop.

    2. backward() и .grad: как считаются градиенты

      Вызов .backward() запускает backprop по графу, а градиенты оседают в .grad. Разбираем на простом примере и сверяем с производной, посчитанной руками.

    3. detach и no_grad: когда градиенты не нужны

      Как выключить построение графа: torch.no_grad() для инференса и валидации, .detach() для вывода тензора из графа. Зачем это экономит память и время.

    4. zero_grad: почему градиенты обнуляют

      PyTorch накапливает градиенты в .grad, а не перезаписывает. Поэтому перед каждым backward их обнуляют. Что будет, если забыть — и почему так сделано.

  3. 3 Построение моделей (nn.Module)

    1. nn.Module и слой nn.Linear

      Базовый класс всех моделей PyTorch — nn.Module. Что такое слой nn.Linear, как он хранит веса и bias и как применяется к батчу.

    2. Сборка сети: __init__ и forward

      Как собрать собственную нейросеть, унаследовав nn.Module: слои объявляют в __init__, а порядок вычислений описывают в forward.

    3. Активации и функции потерь

      Нелинейности (ReLU, Sigmoid) и функции потерь PyTorch: nn.MSELoss для регрессии и nn.CrossEntropyLoss для классификации — что они ждут на входе.

    4. nn.Sequential и параметры модели

      Быстрая сборка сети через nn.Sequential без класса и доступ к обучаемым параметрам: model.parameters(), named_parameters и подсчёт их числа.

  4. 4 Цикл обучения

    1. Классический training loop

      Пять шагов любого обучения в PyTorch: forward, loss, zero_grad, backward, step. Разбираем порядок и смысл каждой строки.

    2. Оптимизаторы: SGD и Adam

      Что делает torch.optim, как устроен learning rate, чем Adam отличается от SGD и как руками воспроизвести шаг градиентного спуска.

    3. Режимы train/eval и валидация

      Зачем переключать модель в model.train() и model.eval(), как это влияет на dropout и batchnorm, и как правильно считать качество на валидации.

    4. Полный пример обучения построчно

      Собираем всё вместе: данные, модель, loss, оптимизатор и цикл обучения на простой задаче регрессии — с разбором каждой строки кода.

  5. 5 Данные и реальные модели

    1. Dataset и DataLoader

      Как PyTorch подаёт данные батчами: класс Dataset описывает доступ к примерам, а DataLoader нарезает их на батчи и перемешивает.

    2. Переобучение и регуляризация

      Что такое переобучение, как его заметить по разрыву train/val loss и как с ним бороться: dropout и weight decay в PyTorch.

    3. Сохранение и загрузка модели (state_dict)

      Как правильно сохранять и загружать обученную модель через state_dict, почему не стоит пиклить модель целиком и как устроен чекпойнт.

    4. GPU-обучение

      Как перенести обучение на видеокарту: модель и данные на device, частые ошибки с несовпадением устройств и почему перенос внутри цикла.

    5. Типичные ошибки начинающих

      Чек-лист самых частых граблей PyTorch: несовпадение размерностей, забытый zero_grad, перепутанный режим eval, неверный loss и устройства.

  6. 6 Практика и экосистема

    1. CNN для классификации изображений

      Структура свёрточной сети: nn.Conv2d, пулинг и полносвязный хвост. Как картинка превращается в предсказание класса и почему свёртки работают.

    2. Transfer learning: дообучение готовых моделей

      Идея переноса обучения: берём предобученную сеть, замораживаем её и переучиваем только последний слой под свою задачу. Почему это работает.

    3. Экосистема данных: torchvision и torchtext

      Обзор официальных библиотек для данных: torchvision (датасеты, трансформы, готовые модели картинок) и подход к работе с текстом.

    4. Инференс, деплой, отладка и профилирование

      Как запускать обученную модель в проде: чистый инференс, экспорт в TorchScript и ONNX, и как находить узкие места через отладку и профилировщик.

    5. Экосистема и что дальше

      Обзор экосистемы вокруг PyTorch: Lightning для удобного цикла обучения, Hugging Face для готовых моделей, и план дальнейшего развития.