Библиотека PuzzleLib
Что такое PuzzleLib
PuzzleLib – это нейросетевая библиотека, т. е. ПО, которое позволяет собрать нейронную сеть под конкретную задачу, визуализировать её архитектуру, запустить обучение этой нейронной сети и выгрузить обученную сеть для использования.
Нейросетевая библиотека PuzzleLib внесена в реестр российского ПО под номером 4924 от 03.12.2018
Аналоги: иностранные библиотеки 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