Обмен данными в Kaspersky Neuromorphic Platform
При работе с исходным кодом необходимо учитывать особенности механизма обмена данными в платформе.
Kaspersky Neuromorphic Platform обеспечивает обмен данными между популяциями и проекциями, а также между другими объектами платформы и внешними объектами.
Обмен данными между бэкендом и внешней средой
Передача данных между бэкендом и внешней средой осуществляется посредством сообщений, содержащих спайки. На бэкенде сообщения со спайками принимают входные проекции. Во внешнюю среду сообщения со спайками отправляются по подпискам.
Сообщения со спайками могут быть переданы в синхронном режиме (по запросу пользователя) или по сигналу бэкенда. Для получения спайков в синхронном режиме вызывается блокирующий метод источника данных.
Если требуется, вы можете реализовать и использовать асинхронный режим для обмена данными между бэкендом и внешней средой.
Обмен данными между нейронной сетью и внешней средой
Из внешней среды в нейронную сеть данные поступают через каналы ввода. Каналы ввода используются для преобразования полученных данных в сообщения, содержащие спайки.
Типовой цикл получения нейронной сетью данных от внешней среды включает следующие шаги:
- В соответствии с заданной функцией преобразователь данных
IndexConverterилиSequenceConverterпреобразует данные, полученные от внешней среды, в сообщенияSpikeMessage. - Канал ввода
InputChannelполучает преобразованные сообщения от преобразователя данных. - Точка подключения
MessageEndpoint, связанная с каналом вводаInputChannel, отправляет спайки во входную проекцию нейронной сетиNetwork.
Во внешнюю среду нейронная сеть передает спайки, преобразованные в данные, через каналы вывода, подключенные к указанным популяциям. Типовой цикл передачи данных нейронной сетью во внешнюю среду включает следующие шаги:
- Точка подключения
MessageEndpointподписывается на сообщения отправителя. - Точка подключения
MessageEndpointотправляет сообщения от связанной популяции. - Шина сообщений
MessageBusдоставляет сообщения от отправителя к точке подключенияMessageEndpoint, связанной с каналом выводаOutputChannel. - Точка подключения
MessageEndpoint, связанная с каналом выводаOutputChannel, получает сообщения. - Канал вывода
OutputChannelполучает сообщения и преобразовывает их в нужный формат данных.
Если вы загрузили модель, хранящую нейронную сеть, каналы ввода и вывода, в исполнитель моделей ModelExecutor, то при ее исполнении на бэкенде автоматически осуществляется передача отправленных сообщений до точки подключения через шину сообщений.
Передача данных (например, потенциала мембраны) возможна также через подсистему мониторинга.
Если требуется, вы можете реализовать и использовать собственные объекты для обмена данными между нейронной сетью и внешней средой.
Обмен данными между популяциями и проекциями
Обмен данными между популяциями и проекциями осуществляется через сообщения. Для обмена сообщениями популяции и проекции требуется предварительно загрузить на бэкенд.
На обмене сообщений между популяциями и проекциями основывается работа бэкенда для CPU.