Создавай нейронные сети с помощью PuzzleLib

Фреймворк с открытым исходным кодом для глубокого обучения с поддержкой NVIDIA & AMD

Декоративное изображение облака для страницы 'PuzzleLib' - SOVA.aiДекоративное изображение мозга для страницы 'PuzzleLib' - SOVA.ai

Что такое PuzzleLib

PuzzleLib это фреймворк для глубокого обучения. Фреймворк позволяет собирать нейронные сети, визуализировать ее архитектуру, обучать и экспортировать для использования в телефоне или серверном приложении.

PuzzleLib является аналогом TensorFlow (Google), Torch (Facebook), CNTK (Microsoft).

CPU & GPU Support

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

  • NVIDIA GPU (CUDA backend)
  • AMD GPU (ROCm backend)
  • Intel CPU (mkl-dnn backend)
  • AMD CPU (numpy backend)
  • Elbrus CPU (numpy backend)
Изображение поддерживаемых платформ для страницы 'PuzzleLib' - SOVA.ai

Почему PuzzleLib

Изображение для страницы 'PuzzleLib' - SOVA.AI

Cross-platform

Изображение для страницы 'PuzzleLib' - SOVA.AIPuzzleLib работает на операционных системах семейства Linux, Windows, Mac OS, в том числе на мобильных ОС – iOS and Android.

High Speed

Изображение для страницы 'PuzzleLib' - SOVA.AIОбучение нейросетей может занять несколько дней. Ускорение вычислений даже в 1,5 — 2 раза существенно влияет на весь рабочий процесс. Кроме того, быстрая обработка данных крайне важна в real-time приложениях (например, анализ речи на смартфоне).

Скорость вычислений на PuzzleLib не уступает скорости Facebook Torch и другим фреймворкам. Такая высокая скорость достигается за счет:

  • поддержки GPU
  • параллельных вычислений на нескольких GPU
  • использования низкоуровневых вычислительных библиотек NVIDIA
  • эффективного использование ресурсов процессора
  • наличия модулей конвертации нейросетей в TensorRT Engine

Доступные модули

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

ActivationAddAvgPool1DAvgPool2DAvgPool3DBatchNormBatchNorm1DBatchNorm2DBatchNorm3DConcat
BatchNormNDConv1DConv2DConv3DConvNDCrossMapLRNDeconv1DDeconv2DDeconv3DDeconvND
DepthConcatDropoutDropout2DEmbedderFlattenGlueGroupLinearIdentityInstanceNorKMaxPool
LCNLRNLinearMapLRNMaxPool1DMaxPool2DMaxPool3DMoveAxisMaxUnpool2DMul
MulAddConstNoiseInjectPReluPenaltyPool1DPool2DPool3DRNNReplicateSlice
ReshapeSoftMaxSpatialTfSplitSubtractMeanSumSwapAxesTileToList
TransposeUpsample2DUpsample3D

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

AdaGradAdaDeltaAdamMomentumSGDNesterovSGDRMSPropRMSPropGravesSGDSMORMS3