БИБЛИОТЕКА PUZZLELIB

Что это такое?

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

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

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

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

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

  • Мы не уступаем по скорости самой быстрой библиотеке Torch от компании Facebook. Высокая скорость обеспечивается тем, что мы используем только низкоуровневые утилиты для видеокарт NVIDIA и эффективно работаем с ресурсами процессорного модуля.
  • Поддерживаем работу на CPU и GPU (центральные процессоры и видеокарты).
  • Поддержка процессоров Intel, ARM, Байкал.
  • Библиотека может работать на всех основных операционных системах (семейство 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)
Специальные модули:
  • Embedder
  • SpatialTf
Вспомогательные модули:
  • Add
  • Concat
  • DepthConcat
  • Flatten
  • Glue
  • Identity
  • MoveAxis
  • Mul
  • MulAddConst
  • NoiseInjector
  • Penalty
  • Replicate
  • Reshape
  • Split
  • Sum
  • SwapAxes
  • Tile
  • ToList
  • Transpose

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

Для обучения нейронной сети необходимо итерационно обновлять её веса с помощью алгоритма, называемого «оптимизатором». Для разных задач (например, регрессия, классификация текстов или изображений) нужны разные оптимизаторы.
  • AdaDelta
  • AdaGrad
  • Adam
  • Hooks
  • LBFGS
  • MomentumSGD
  • NesterovSGD
  • RMSProp
  • RMSPropGraves
  • SGD
  • SMORMS3

‹  Вернуться к технологиям