Ashmanov.net

Нейросети
Ашманова

Библиотека PuzzleLib

Что такое PuzzleLib

PuzzleLib – это нейросетевая библиотека, т. е. ПО, которое позволяет собрать нейронную сеть под конкретную задачу, визуализировать её архитектуру, запустить обучение этой нейронной сети и выгрузить обученную сеть для использования.

Аналоги: иностранные библиотеки TensorFlow, Torch, CNTK, разработанные компаниями Google, Facebook, Microsoft.

Что для библиотеки важно?

  • Алгоритмы: иметь поддержку классических нейросетевых алгоритмов, которые в рамках библиотеки реализуются в виде отдельных модулей вычислений.
  • Поддержка CPU и GPU: обучение нейронной сети выгоднее проводить на GPU, но поддержка CPU может потребоваться для случаев, когда нет возможности использовать дорогостоящие GPU.
  • Кроссплатформенность: нужна возможность запускать нейросети на различных операционных системах и процессорных архитектурах, в частности – на мобильных устройствах.
  • Скорость: в задачах с большими данными обучение нейросети может занимать дни. Ускорение в 1.5-2 раза – уже существенно для рабочего процесса. Кроме того, быстрая обработка данных важна в задачах, где нужна работа в реальном времени (например, анализ видео на борту).

Преимущества PuzzleLib

  • Высокая скорость: мы используем только низкоуровневые утилиты для видеокарт NVIDIA и AMD и эффективно задействуем ресурсы процессора.
  • Поддерживаем работу на CPU и GPU (центральные процессоры и видеокарты).
  • Библиотека может работать на всех основных операционных системах (семейство Linux, Windows, Mac OS, iOS и Android).
  • Автоматическая оптимизация вычислений. В некоторых случаях это ускоряет обучение нейросети в 2 раза.
  • Более 60 видов нейросетевых модулей, которые позволяют строить свёрточные, рекуррентные нейросети и сети с произвольными графами вычислений. Список модулей – в соответствующем разделе ниже.
  • Порог входа в PuzzleLib для пользователя гораздо ниже, чем для других библиотек.
  • PuzzleLib – полностью отечественная разработка.

Список модулей, реализованных в PuzzleLib

Любая нейросеть представляет из себя граф вычислений: каждый элемент графа – это модуль нашей библиотеки, производящий операции над переданными ему данными. Ниже приводится список модулей, которые сейчас есть в PuzzleLib. Они позволяют собрать любую современную нейронную архитектуру.

Базовые модули:

  • Activation (Sigmoid, Tanh, ReLU, ELU, LeakyReLU, SoftMaxPlus)
  • AvgPool (1D, 2D, 3D)
  • BatchNorm (1D, 2D, 3D, ND)
  • Conv (1D, 2D, 3D, ND)
  • CrossMapLRN
  • Deconv (1D, 2D, 3D, ND)
  • Dropout (1D, 2D)
  • GroupLinear
  • InstanceNorm2D
  • KMaxPool
  • LCN
  • Linear
  • LRN
  • MapLRN
  • MaxPool (1D, 2D, 3D)
  • MaxUnpool2D
  • Pool (1D, 2D, 3D)
  • RNN
  • SoftMax
  • SubtractNorm
  • Upsample (2D, 3D)

Специальные модули:

Вспомогательные модули:

Список алгоритмов оптимизации, реализованных в PuzzleLib

Для обучения нейронной сети необходимо итерационно обновлять её веса с помощью алгоритма, называемого «оптимизатором». Для разных задач (например, регрессия, классификация текстов или изображений) нужны разные оптимизаторы.

  • AdaDelta
  • AdaGrad
  • Adam
  • Hooks
  • LBFGS
  • MomentumSGD
  • NesterovSGD
  • RMSProp
  • RMSPropGraves
  • SGD
  • SMORMS3