PyTorch — фреймворк машинного обучения для языка Python с открытым исходным кодом, созданный на базе Torch.
Фреймворк создан на базе Torch, библиотеки для языка Lua, которая предназначена для математических расчетов и машинного обучения. Но его особенность — следование стилю Python и философии программирования на этом языке. Некоторые говорят, что PyTorch — один из самых «питоновских» фреймворков для MLops.
PyTorch – это библиотека машинного обучения, которая предназначена для работы с глубоким обучением. Нейронные сети также можно создавать при помощи PyTorch. Основное преимущество PyTorch – это динамический граф вычислений, который позволяет пользователям более гибко определять и изменять модели. PyTorch также предоставляет широкий набор инструментов для работы с данными, оптимизацией моделей и визуализацией результатов. PyTorch является одной из наиболее популярных библиотек для глубокого обучения и используется как исследователями, так и инженерами в различных областях применения искусственного интеллекта.
Используется для решения различных задач: компьютерное зрение, обработка естественного языка. Разрабатывается преимущественно группой искусственного интеллекта Facebook.
PyTorch предоставляет две основные высокоуровневые модели:
- Тензорные вычисления (по аналогии с NumPy) с развитой поддержкой ускорения на GPU
- Глубокие нейронные сети на базе системы autodiff
PyTorch содержит следующие модули:
Модуль Autograd
PyTorch использует метод автоматической дифференциации. Производится запись вычислений, произведенных в прямом направлении, затем производится воспроизведение в обратном порядке для вычисления градиентов (backpropagation). Этот метод особенно полезен при построении нейронных сетей, так как позволяет рассчитывать дифференциальные поправки параметров одновременно с прямым проходом.
Модуль Optim
torch.optim — модуль, реализующий несколько алгоритмов оптимизации, используемых при построении нейронных сетей. Реализовано большинство наиболее часто используемых методов.
Модуль nn
Модуль PyTorch autograd позволяет легко определять вычислительные графы и работать с градиентами, однако может быть слишком низким уровнем для определения сложных нейронных сетей. Более высокоуровневой абстракцией для таких применений является модуль nn.
Чаще всего глубокое обучение и в частности PyTorch используются в следующих отраслях:
- распознавание образов на изображениях;
- компьютерное зрение, обнаружение движущихся объектов;
- поиск закономерностей, анализ данных, в том числе неструктурированных;
- обработка естественного языка, распознавание речи и машинный перевод;
- создание машинных описаний для изображений;
- анализ текстов и поиск в них информации;
- генерация текстового контента и картинок.
Все перечисленные задачи актуальны и нужны во множестве отраслей — начиная с аналитики и заканчивая творчеством.
Вокруг фреймворка PyTorch сложилась целая экосистема, состоящая из дополнительных и вспомогательных библиотек, подпрограмм и иных решений. Компоненты этой экосистемы обычно интересны только продвинутым пользователям PyTorch, которые работают с фреймворком профессионально. Но знать об их существовании полезно и на начальных уровнях изучения.
Создание и запуск проектов. Classy Vision и PyTorch Lightning — фреймворки, которые упрощают и расширяют работу с PyTorch. Они реализованы на более высоком уровне абстракции и предоставляют среду для запуска проектов на PyTorch.
С помощью этих фреймворков проще работать. В них реализованы полезные функции, утилиты и «синтаксический сахар» — нововведения, упрощающие синтаксис команд. В результате те же действия можно выполнить проще и быстрее, в пару строк кода.
Развертывание. Перед специалистами может встать задача развертывания программ на PyTorch в продакшене — на серверах, доступных конечным пользователям. Обычно это нужно, когда нейросеть — сама по себе коммерческий продукт, например, «умный» фоторедактор.
Собственного модуля для развертывания в PyTorch нет, поэтому для него используются инструменты TorchScript, ONNX и Caffe2. Caffe2 изначально был отдельным фреймворком машинного обучения, но потом влился в PyTorch.
Репозитории. На GitHub существует несколько репозиториев с библиотеками и расширениями PyTorch для конкретных задач. Например, Transformers — решение для распознавания естественного языка: текста, звуков, чтения с картинок. Или Detectron2 — библиотека компьютерного зрения, которая умеет распознавать движущиеся объекты, сегментировать их и выделять ключевые точки.