PyTorch

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 — библиотека компьютерного зрения, которая умеет распознавать движущиеся объекты, сегментировать их и выделять ключевые точки.

Обсуждение закрыто.