Пакет ANN2SNN
предназначен для создания нейронных сетей, которые можно преобразовать в импульсные нейронные сети и разместить для их исполнения на нейроморфном процессоре Алтай-1. Пакет ANN2SNN
реализован на языке программирования Python.
Для создания нейронных сетей необходимо использовать специальные тернарные слои, в которых учитываются ограничения, характерные для нейроморфного процессора Алтай-1. Тернарные слои, используемые для создания нейронной сети, соответствуют слоям библиотеки Keras, со следующими основными отличиями:
{-1,0,1}
.-32 768
до 32 767
.При обучении нейронной сети, созданной с помощью тернарных слоев, стоит учитывать следующие особенности:
Сериализация и десериализация нейронных сетей проводится стандартными методами, предоставляемыми библиотекой Keras, с указанием параметра custom_objects
в виде словаря тернарных слоев и функции активации heaviside
.
Во время размещения нейронная сеть проверяется на соответствие ограничениям процессора. Проверка нейронной сети производится относительно параметров конфигурации нейроморфного процессора, указанных в YAML-файле. В результате размещения выдается информация о количестве ядер, необходимых для запуска нейронной сети на нейроморфном процессоре Алтай-1. Нейронная сеть переводится в формат, поддерживаемый процессором для ее дальнейшего запуска на аппаратном процессоре или его программном эмуляторе. Если нейронную сеть невозможно исполнить на нейроморфном процессоре из-за превышения допустимого количества ядер, выдается соответствующая ошибка.
В нейроморфном процессоре Алтай-1 предусмотрена возможность масштабирования за счет увеличения количества СБИС. По вопросам масштабирования вам нужно обратиться к специалистам "Лаборатории Касперского".
Вы можете провести примерную оценку количества ядер, необходимых для исполнения нейронной сети, по формуле, представленной на рисунке ниже, где:
Формула оценки количества ядер
Количество ядер, необходимых для размещения полносвязного слоя TernaryDense
, зависит от количества входных нейронов в слое. Если количество входных нейронов не больше 512, то вы можете рассчитать необходимое количество ядер по формуле, представленной ниже, где:
Формула оценки количества ядер для слоя TernaryDense
Если количество входных нейронов больше 512, то вы можете рассчитать необходимое количество ядер по формуле, представленной ниже, где:
Формула оценки количества ядер для слоя TernaryDense
Для нейронных сетей, созданных на базе пакета ANN2SNN
, возможны следующие варианты инференса: