Открыть сервисСервис

PyTorch — фреймворк глубокого обучения

PyTorch — открытый фреймворк для выполнения тензорных вычислений и построения нейронных сетей, разработанный компанией Meta (организация признана экстремистской, деятельность запрещена в РФ) AI (в 2022 году переименована в Meta Platforms) и представленный в январе 2017 года. Основан на библиотеке Torch, написанной на Lua, но полностью переписан на Python с сохранением акцента на динамическую вычислительную графику. PyTorch широко применяется в исследовательских лабораториях и промышленности для задач компьютерного зрения, обработки естественного языка, генеративных моделей и обучения с подкреплением.

История создания

Разработка PyTorch началась в лаборатории Facebook (продукт Meta, признанной экстремистской и запрещённой в РФ) AI Research (FAIR) под руководством Саши Бейлажа (Sasha Rush). Публичный анонс состоялся в январе 2017 года на конференции ICML. Первая версия (0.1) была выпущена в августе 2017 года и представляла собой обёртку над Caffe2 с добавлением динамического графа вычислений.

Ключевым отличием от существовавшего на тот момент доминирующего фреймворка TensorFlow (Google, 2015) стало использование динамического (define-by-run) подхода: граф вычислений строится на лету по мере выполнения программы, что упрощает отладку и делает код более естественным для Python-разработчиков.

В сентябре 2018 года вышел PyTorch 1.0, объединивший статический граф Caffe2 с динамическим графом PyTorch. В 2021 году Meta и Microsoft создали совместную инициативу PyTorch Foundation под эгидой Linux Foundation, обеспечив независимость проекта от конкретной компании.

Основные концепции

Тензор

Центральная структура данных PyTorch — тензор (класс torch.Tensor), многомерный массив, поддерживающий вычисления на графических процессорах (CUDA) и ускорителях (ROCm, XLA). Тензоры создаются из Python-списков, NumPy-массивов или инициализируются случайными распределениями.

Динамическая вычислительная графа

В отличие от статического графа (TensorFlow 1.x), динамический граф перестраивается при каждом запуске. Операции над тензорами автоматически записываются в граф, а обратный проход (backpropagation) выполняется методом backward(). Механизм автоматического дифференцирования реализован через модуль torch.autograd.

Модули нейронных сетей

Базовый строительный блок сетей — класс nn.Module, от которого наследуются все слои и модели. Стандартные слои (линейные, свёрточные, рекуррентные, трансформерные) собраны в пакете torch.nn. Оптимизаторы (torch.optim) реализуют SGD, Adam, AdamW и другие алгоритмы.

Экосистема

Вокруг ядра PyTorch сформировалась обширная экосистема:

  • TorchVision — модели и датасеты для компьютерного зрения (ResNet, EfficientNet, наборы ImageNet, COCO);
  • TorchText — обработка текстов;
  • TorchAudio — аудиосигналы и речь;
  • TorchServe — сервер для развёртывания моделей в продакшене (разработан совместно с Amazon Web Services);
  • PyTorch Lightning — высокоуровневая обёртка, унифицирующая цикл обучения;
  • Hugging Face Transformers — библиотека предобученных моделей, изначально построенная на PyTorch;
  • TorchDynamo / torch.compile — компиляция графа, представленная в версии 2.0 (2023), для ускорения выполнения.

Простой пример

```python import torch import torch.nn as nn

model = nn.Sequential( nn.Linear(784, 128), nn.ReLU(), nn.Linear(128, 10) ) optimizer = torch.optim.Adam(model.parameters(), lr=1e-3) loss_fn = nn.CrossEntropyLoss()

Предполагается, что batch_x и batch_y — тензоры данных

output = model(batch_x) loss = loss_fn(output, batch_y) loss.backward() optimizer.step() ```

Применение

PyTorch является основой большинства публикаций в области глубокого обучения за последние годы. На нём построены крупнейшие языковые модели: GPT, LLaMA, BLOOM, Whisper. В России фреймворк активно используется в вузах и исследовательских центрах, включая разработку моделей для распознавания речи и обработки русского языка.

Согласно данным ежегодного опроса Kaggle State of ML, PyTorch стабильно занимает первое место среди используемых фреймворков глубокого обучения, обойдя TensorFlow по популярности к 2022 году.

Версии и совместимость

PyTorch поддерживает Linux, macOS и Windows, интегрируется с Python (основной интерфейс), C++ (модуль LibTorch) и Java. Начиная с версии 2.0 поддерживается компиляция через OpenAI Triton. Для мобильных устройств существует мобильный рантайм (PyTorch Mobile), а для встраиваемых систем — ExecuTorch.

Источники

  • Документация PyTorch (pytorch.org)
  • Paszke A. et al. PyTorch: An Imperative Style, High-Performance Deep Learning Library // Advances in Neural Information Processing Systems, 2019
  • Сайт Linux Foundation — PyTorch Foundation
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru