Пакет ANN2SNN

Пакет ANN2SNN предназначен для создания нейронных сетей, которые можно преобразовать в импульсные нейронные сети и разместить для их исполнения на нейроморфном процессоре Алтай-1. Пакет ANN2SNN реализован на языке программирования Python.

Для создания нейронных сетей необходимо использовать специальные тернарные слои, в которых учитываются ограничения, характерные для нейроморфного процессора Алтай-1. Тернарные слои, используемые для создания нейронной сети, соответствуют слоям библиотеки Keras, со следующими основными отличиями:

При обучении нейронной сети, созданной с помощью тернарных слоев, стоит учитывать следующие особенности:

Сериализация и десериализация нейронных сетей проводится стандартными методами, предоставляемыми библиотекой Keras, с указанием параметра custom_objects в виде словаря тернарных слоев и функции активации heaviside.

Во время размещения нейронная сеть проверяется на соответствие ограничениям процессора. Проверка нейронной сети производится относительно параметров конфигурации нейроморфного процессора, указанных в YAML-файле. В результате размещения выдается информация о количестве ядер, необходимых для запуска нейронной сети на нейроморфном процессоре Алтай-1. Нейронная сеть переводится в формат, поддерживаемый процессором для ее дальнейшего запуска на аппаратном процессоре или его программном эмуляторе. Если нейронную сеть невозможно исполнить на нейроморфном процессоре из-за превышения допустимого количества ядер, выдается соответствующая ошибка.

В нейроморфном процессоре Алтай-1 предусмотрена возможность масштабирования за счет увеличения количества СБИС. По вопросам масштабирования вам нужно обратиться к специалистам "Лаборатории Касперского".

Вы можете провести примерную оценку количества ядер, необходимых для исполнения нейронной сети, по формуле, представленной на рисунке ниже, где:

Количество ядер, необходимых для размещения полносвязного слоя TernaryDense, зависит от количества входных нейронов в слое. Если количество входных нейронов не больше 512, то вы можете рассчитать необходимое количество ядер по формуле, представленной ниже, где:

Если количество входных нейронов больше 512, то вы можете рассчитать необходимое количество ядер по формуле, представленной ниже, где:

Для нейронных сетей, созданных на базе пакета ANN2SNN, возможны следующие варианты инференса:

В начало