RU2820172C1 - Способ обработки данных посредством нейронной сети, подвергнутой декомпозиции с учетом объема памяти вычислительного устройства (варианты), и компьютерно-читаемый носитель - Google Patents
Способ обработки данных посредством нейронной сети, подвергнутой декомпозиции с учетом объема памяти вычислительного устройства (варианты), и компьютерно-читаемый носитель Download PDFInfo
- Publication number
- RU2820172C1 RU2820172C1 RU2023123376A RU2023123376A RU2820172C1 RU 2820172 C1 RU2820172 C1 RU 2820172C1 RU 2023123376 A RU2023123376 A RU 2023123376A RU 2023123376 A RU2023123376 A RU 2023123376A RU 2820172 C1 RU2820172 C1 RU 2820172C1
- Authority
- RU
- Russia
- Prior art keywords
- neural network
- fragment
- data
- memory
- processing
- Prior art date
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 243
- 238000012545 processing Methods 0.000 title claims abstract description 166
- 238000000034 method Methods 0.000 title claims abstract description 85
- 238000000354 decomposition reaction Methods 0.000 title claims abstract description 55
- 239000012634 fragment Substances 0.000 claims abstract description 236
- 230000002093 peripheral effect Effects 0.000 claims abstract description 32
- 238000004590 computer program Methods 0.000 claims description 4
- 230000000694 effects Effects 0.000 abstract description 2
- 239000000126 substance Substances 0.000 abstract 1
- 230000008569 process Effects 0.000 description 28
- 238000004422 calculation algorithm Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 13
- 238000013473 artificial intelligence Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 230000003068 static effect Effects 0.000 description 6
- 238000012549 training Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 238000013527 convolutional neural network Methods 0.000 description 5
- 230000001965 increasing effect Effects 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000033001 locomotion Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 238000005495 investment casting Methods 0.000 description 1
- 238000003754 machining Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000000474 nursing effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Abstract
Изобретение относится к способам обработки данных посредством нейронной сети, подвергнутой декомпозиции с учетом доступного объема памяти вычислительного устройства. Технический результат заключается в уменьшении потребления памяти вычислительного устройства во время исполнения нейронной сети. Способ включает в себя по меньшей мере следующие этапы, на которых: принимают от периферийного устройства первый фрагмент входных данных и сохраняют его в памяти вычислительного устройства; обрабатывают упомянутый первый фрагмент входных данных посредством первого блока нейронной сети, подвергнутой декомпозиции, и сохраняют обработанные данные в область памяти вычислительного устройства, в которой сохранен первый фрагмент входных данных, заменяя упомянутый первый фрагмент входных данных; принимают от периферийного устройства второй фрагмент входных данных и сохраняют его в свободной области памяти вычислительного устройства; и обрабатывают упомянутый второй фрагмент входных данных посредством второго блока нейронной сети, подвергнутой декомпозиции, и сохраняют обработанные данные в область памяти, в которой сохранен второй фрагмент входных данных, заменяя упомянутый второй фрагмент входных данных. 3 н. и 12 з.п. ф-лы, 8 ил.
Description
Область техники, к которой относится изобретение
Настоящее изобретение относится к вычислительной технике и, более конкретно, к способу обработки данных посредством нейронной сети, подвергнутой декомпозиции с учетом объема памяти вычислительного устройства.
Уровень техники
В настоящее время широкое распространение получили искусственные нейронные сети, применяемые для задач обработки данных в различных областях. Искусственные нейронные сети построены по принципу организации и функционирования биологических нейронных сетей. При этом разнообразие и сложность разрабатываемых нейронных сетей постоянно растет.
Существует два основных варианта использования нейронных сетей обычным пользователем.
Первым вариантом является запуск нейронной сети, в случае ее реализации в виде программного обеспечения, на пользовательском оборудовании, которое может представлять собой одно из мобильного оборудования, носимых электронных устройств, IoT-устройств (IoT - Internet of Things) и т.д. Такой вариант использования обеспечивает улучшенную приватность пользователя, т.к. может работать без подключения к сетям передачи данных, таким как Интернет, и повышает функциональность пользовательского оборудования, наделяя его свойствами, присущими решениям на основе искусственного интеллекта (AI - artificial intelligence). В то же время модели, основанные на нейронных сетях, могут требовать много места на диске и в памяти, а также большого времени для вычислений во время использования. Это может быть критично для устройств, у которых небольшой объем памяти и для которых важно быстродействие, например, для мобильных телефонов. Поэтому такой вариант использования предъявляет жесткие требования к вычислительным возможностям пользовательского оборудования, что зачастую в условиях ограниченных вычислительных возможностей, доступных пользователю, вынуждает использовать более простые, сжатые версии нейронных сетей, что может отрицательно влиять на точность полученных результатов обработки данных.
Вторым вариантом является использование нейронных сетей, доступ к которым реализован на основании облачных технологий. В таком варианте использования нейронная сеть обычно реализована на удаленном сервере, который обладает значительно большими вычислительными возможностями по сравнению с упомянутым пользовательским оборудованием. В таком случае пользователь может использовать более точные и сложные реализованные программным путем нейронные сети или их части практически на любом устройстве, подключенном к сети передачи данных. Однако такой вариант использования требует хорошего и стабильного соединения с сетью передачи данных, характеризуется большими объемами передаваемой информации, что также приводит к повышенному энергопотреблению и отрицательно влияет на срок службы устройства от заряда батареи. Кроме того, в таком варианте использования труднее обеспечить приватность данных.
Таким образом, реализация на практике упомянутого выше первого варианта использования нейронных сетей на пользовательском оборудовании (в частности, на устройствах, построенных на базе микроконтроллеров) сталкивается со следующими трудностями:
- доступные устройства обладают очень ограниченным объемом доступной памяти, в то время как существующие нейронные сети обычно требуют большого объема памяти;
- применяемые методы сжатия нейронных сетей для уменьшения требуемого объема памяти приводят к ухудшению точности обработки данных, требуют проведения дополнительной настройки и обучения нейронных сетей;
- в последние годы промышленность столкнулась с недостатком полупроводниковых компонентов на рынке, что делает затруднительным, а иногда и невозможным, использование более сложного и дорогого оборудования, обладающего более высокими вычислительными возможностями. В таком случае оптимизация модели позволяет использовать эту модель на более простых и дешевых устройствах.
В настоящее время при выполнении нейронной сети в памяти зачастую сохраняются как входные данные (до полного завершения обработки), так и результаты обработки (выходные данные). Так, например, объем памяти обычного микроконтроллера составляет 256 Кбайт. Объем памяти, требуемой для хранения одноканального 32-битного изображения с разрешением 224×224 (224×224×1), составляет 196 Кбайт. Для обработки упомянутого изображения с помощью первого слоя нейронной сети требуется 196 Кбайт (входное изображение) + примерно 196 Кбайт (результат обработки) = 392 Кбайт. Таким образом, доступной памяти микроконтроллера недостаточно для выполнения обработки даже одним слоем нейронной сети. В то же время объем памяти для хранения аналогичного трехканального изображения (224×224×3) составляет 588 Кбайт, т.е. доступной памяти микроконтроллера недостаточно даже для сохранения входного изображения. Обработка же нейронной сетью данного изображения требует 1176 Кбайт (588 Кбайт * 2).
В уровне техники известно решение, раскрытое в документе US 20210295138 A1, описывающее разделение входной карты признаков на меньшие части для отдельной их обработки. Однако, данное решение не позволяет снизить использование памяти нейронной сетью.
В документе US 20160350645 A1 описано предварительное частичное вычисление последующих слоев нейронной сети в текущих слоях за счет чего ускоряется работа нейронной сети и уменьшается потребление памяти. Однако, данное решение не позволяет оптимизировать выделение памяти для входных и выходных данных, входные данные хранятся в памяти дольше, чем это требуется для выполнения вычислений.
В документе US 111112980 B2 раскрыто специфическое размещение входных и выходных данных в памяти, что позволяет снизить фрагментацию памяти. Выходные данные одного слоя нейронной сети могут использоваться в качестве входных данных для следующего слоя нейронной сети. Однако, данный подход подразумевает сохранение всех входных данных в памяти (возможно внешней), снижая доступный объем памяти для параметров нейронной сети, выходных и промежуточных данных.
Документ US 20190220742 A1 описывает снижение количества обращений к медленной внешней памяти за счет сохранения перекрывающихся областей входных данных во внутренней памяти, тем самым увеличивая быстродействие нейронной сети. Однако, данное решение не позволяет устранить недостатки использования внешней памяти и не подходит для простых устройств с одним буфером памяти.
Таким образом, в уровне техники существует потребность в разработке способа обработки данных посредством нейронных сетей на устройствах, обладающих недостаточным объемом памяти.
Сущность изобретения
Настоящее изобретение направлено на решение по меньшей мере некоторых из приведенных выше проблем.
Согласно первому аспекту настоящего изобретения предложен способ обработки данных посредством нейронной сети, подвергнутой декомпозиции с учетом объема памяти вычислительного устройства, который включает в себя по меньшей мере следующие этапы, на которых:
- принимают от периферийного устройства первый фрагмент входных данных и сохраняют его в памяти вычислительного устройства;
- обрабатывают упомянутый первый фрагмент входных данных посредством первого блока нейронной сети, подвергнутой декомпозиции, и сохраняют обработанные данные в область памяти вычислительного устройства, в которой сохранен первый фрагмент входных данных, заменяя упомянутый первый фрагмент входных данных;
- принимают от периферийного устройства второй фрагмент входных данных и сохраняют его в свободной области памяти вычислительного устройства; и
- обрабатывают упомянутый второй фрагмент входных данных посредством второго блока нейронной сети, подвергнутой декомпозиции, и сохраняют обработанные данные в область памяти вычислительного устройства, в которой сохранен второй фрагмент входных данных, заменяя упомянутый второй фрагмент входных данных.
Согласно второму аспекту настоящего изобретения предложен способ обработки данных посредством нейронной сети, подвергнутой декомпозиции с учетом объема памяти вычислительного устройства, который включает в себя по меньшей мере следующие этапы, на которых:
- принимают от периферийного устройства первый фрагмент входных данных и сохраняют его в памяти вычислительного устройства;
- обрабатывают упомянутый первый фрагмент входных данных посредством первого блока нейронной сети, подвергнутой декомпозиции, и сохраняют первый фрагмент обработанных данных в свободной области памяти вычислительного устройства;
- принимают от периферийного устройства второй фрагмент входных данных и сохраняют его в области памяти вычислительного устройства, в которой сохранен первый фрагмент входных данных, заменяя упомянутый первый фрагмент входных данных; и
- обрабатывают упомянутый второй фрагмент входных данных посредством второго блока нейронной сети, подвергнутой декомпозиции, и сохраняют второй фрагмент обработанных данных в свободной области памяти вычислительного устройства;
- обрабатывают упомянутый первый фрагмент обработанных данных посредством третьего блока нейронной сети, подвергнутой декомпозиции, и сохраняют третий фрагмент обработанных данных в область памяти вычислительного устройства, в которой сохранен первый фрагмент обработанных данных, заменяя упомянутый первый фрагмент обработанных данных;
- обрабатывают упомянутый второй фрагмент обработанных данных посредством четвертого блока нейронной сети, подвергнутой декомпозиции, и сохраняют четвертый фрагмент обработанных данных в область памяти вычислительного устройства, в которой сохранен второй фрагмент обработанных данных, заменяя упомянутый второй фрагмент обработанных данных.
Согласно одному варианту осуществления способа периферийное устройство является видеокамерой, а входные данные представляют собой видеоданные.
Согласно еще одному варианту осуществления способа упомянутые фрагменты входных данных получают из одного изображения, захватываемого камерой.
Согласно еще одному варианту осуществления способа упомянутые фрагменты входных данных получают из разных изображений, захватываемых камерой.
Согласно другому варианту осуществления способа периферийное устройство является микрофоном, а входные данные представляют собой аудиоданные.
Согласно другому варианту осуществления способа предварительно выполняют декомпозицию нейронной сети и записывают полученные блоки нейронной сети, подвергнутой декомпозиции, в энергонезависимую память вычислительного устройства, причем декомпозиция нейронной сети включает в себя этапы, на которых:
- определяют участок нейронной сети, дающий в результате обработки данных наибольший размер промежуточного тензора обработанных данных;
- определяют, на какое число блоков следует разделить упомянутый участок нейронной сети с учетом объема памяти вычислительного устройства;
- разделяют исходные выходные данные самой последней операции выбранного участка нейронной сети на равные фрагменты, число которых соответствует упомянутому определенному числу блоков;
- с помощью обратных, по отношению к операциям нейронной сети, формул определяют фрагменты входных данных, которые необходимы для расчета выбранного фрагмента выходных данных;
- определяют фрагменты входных данных и блоки нейронной сети, которые необходимы для расчета конкретных фрагментов выходных данных.
Согласно другому варианту осуществления способа декомпозицию нейронной сети осуществляют с учетом доступной памяти вычислительного устройства, в которой будут сохраняться данные в процессе обработки.
Согласно другому варианту осуществления способа вычислительное устройство включает в себя одно из микроконтроллера, контроллера, процессора и микропроцессора.
Согласно другому варианту осуществления способа вычислительное устройство дополнительно включает в себя сопроцессор для обработки данных с помощью нейронной сети.
Согласно другому варианту осуществления способа нейронная сеть, подвергнутая декомпозиции, включает в себя по меньшей мере два слоя нейронной сети и входные данные сначала обрабатывают посредством соответствующих блоков первого слоя нейронной сети, а затем полученные результаты обработки обрабатывают посредством соответствующих блоков второго слоя нейронной сети.
Согласно другому варианту осуществления способа результаты обработки фрагментов данных первым слоем нейронной сети дополнительно делятся на более мелкие фрагменты данных, которые затем обрабатываются вторым слоем нейронной сети.
Согласно другому варианту осуществления способа фрагменты входных данных представляют собой фрагменты входного тензора, обрабатываемые блоками нейронной сети, подвергнутой декомпозиции, фрагменты обработанных данных представляют собой фрагменты выходного тензора после обработки упомянутыми блоками, при этом способ включает в себя следующие этапы, на которых:
- определяют время между началом обработки фрагмента тензора и временем завершения его обработки (время жизни фрагмента тензора) и время между началом обработки первого фрагмента тензора и завершением обработки последнего фрагмента тензора (время жизни тензора);
- для каждого фрагмента тензора определяют список его смежных по времени жизни фрагментов тензоров, у которых время жизни пересекается с упомянутым фрагментом тензора;
- определяют очередность записи фрагментов тензоров в памяти на основании очередности их обработки;
- для каждого фрагмента тензора в упомянутом определенном порядке осуществляют поиск в памяти подходящей области памяти, достаточной для размещения фрагмента тензора, при этом упомянутый фрагмент тензора не должен пересекаться в памяти с другими уже размещенными в памяти пересекающимися с ним по времени жизни фрагментами других тензоров, и размещают фрагмент тензора в подходящей области памяти;
при этом входные и выходные фрагменты тензоров одного блока декомпозированной нейронной сети могут пересекаться в памяти, даже если их время жизни пересекается, так как вычислительное устройство выполнено с возможностью перезаписывать область памяти, занятую фрагментом входного тензора, соответствующим фрагментом выходного тензора.
Согласно третьему аспекту настоящего изобретения предложен компьютерно-читаемый носитель, хранящий компьютерную программу, которая при выполнении модулем обработки данных вычислительного устройства предписывает модулю обработки данных выполнять этапы способа обработки данных посредством нейронной сети, подвергнутой декомпозиции, с учетом объема памяти вычислительного устройства.
Настоящее изобретение позволяет осуществлять обработку данных посредством нейронных сетей на устройствах, обладающих недостаточным объемом памяти.
Краткое описание чертежей
В дальнейшем изобретение поясняется описанием предпочтительных вариантов воплощения изобретения со ссылками на сопроводительные чертежи, на которых:
Фиг. 1 условно изображает известный способ использования памяти вычислительного устройства для обработки данных посредством нейронной сети.
Фиг. 2 условно изображает способ использования памяти вычислительного устройства для обработки данных по частям посредством нейронной сети.
Фиг. 3 условно изображает пример использования памяти вычислительного устройства для обработки данных посредством нейронной сети в соответствии с настоящим изобретением.
Фиг. 4 изображает блок-схему обработки данных посредством известной сверточной нейронной сети.
Фиг. 5 изображает в упрощенном виде блок-схему обработки данных посредством нейронной сети, к которой применена декомпозиция, в соответствии с настоящим изобретением.
Фиг. 6 изображает процесс обработки входных тензоров посредством декомпозированной операции свертки.
Фиг. 7 изображает процесс перезаписи области памяти, занятой входными данными, обработанными данными при обработке фрагмента входного тензора посредством декомпозированной операции свертки.
Фиг. 8 изображает блок-схему алгоритма выделения и перезаписи памяти в процессе обработки данных в соответствии с настоящим изобретением.
Подробное описание
В соответствии с настоящим изобретением предложен способ обработки данных посредством нейронной сети с учетом объема памяти вычислительного устройства. Упомянутое вычислительное устройство включает в себя модуль обработки данных (например, микроконтроллер) с сопроцессором (DLA, deep learning accelerator - ускоритель нейронных сетей) или без сопроцессора для обработки данных с помощью нейронной сети. Нейронная сеть, исполняемая на вычислительном устройстве, получает данные по частям от внешнего периферийного устройства и записывает в оперативную память, далее осуществляет их обработку по частям и перезаписывает частично или полностью область оперативной памяти, занятую входными данными, результатом обработки нейронной сети либо новой порцией данных, подлежащих обработке. Упомянутый способ применяется как для первых слоев нейронной сети, так и для промежуточных.
Обработка данных по частям может потребоваться, поскольку как микроконтроллер, так и сопроцессор могут иметь аппаратные ограничения, включая ограничение по доступной памяти. В связи с этим нейронная сеть, исполняемая в вычислительном устройстве, предварительно подвергается декомпозиции (тайлингу).
Декомпозиция (тайлинг, tiling) нейронной сети - разделение операций нейронной сети на блоки (тайлы, tile) для обработки данных по частям. Нейронную сеть, разделенную на набор связанных блоков, принято называть блочной нейронной сетью. Однако, в отличие от традиционных блочных нейронных сетей, каждый блок которых исполняется на отдельном вычислительном устройстве, в настоящем изобретении полученные блоки исходной нейронной сети последовательно выполняются на одном вычислительном устройстве. Для того чтобы нейронная сеть могла работать с фрагментами входных данных, а не с целыми данными - операции модифицируются путем разбиения исходной операции на некоторое количество одинаковых с исходной по типу, но обрабатывающих меньший объем входных данных, при объединении которых (если знать правила разбиения) можно снова получить изначальную операцию. Упомянутой операции нейронной сети соответствует один слой этой нейронной сети (т.е. один слой выполняет одну операцию). Каждая из более мелких (одинаковых по типу с исходной) подопераций содержит нужную часть данных исходной операции. Таким образом, на качество результата упомянутые изменения никак не влияют. Входные данные подвергаются тем же самым преобразованиям, только осуществляется это по частям. При этом уменьшается размер входных данных, обрабатываемых за одну подоперацию, а количество таких подопераций увеличивается. Разбиение операций в исходной нейронной сети на отдельные независимые части осуществляется по определенным правилам, в зависимости от операции (такой операцией, например, является свертка (convolution), которая является самой популярной на данный момент для обработки изображений), причем разбиение одной операции может не коррелировать с разбиением других операций и число подопераций, на которые делится каждая из операций, может отличаться в зависимости от типа операции.
Процесс декомпозиции (тайлинга) нейронной сети начинается с выбора участка нейронной сети, который будет подлежать декомпозиции. Под участком нейронной сети понимается один или несколько слоев нейронной сети. Для этого упомянутый участок должен удовлетворять нескольким условиям. Во-первых, данный участок является «бутылочным горлышком» нейронной сети, то есть при исполнении нейронной сети на данном участке будет затрачено наибольшее количество памяти, которое превосходит размер возможно допустимой используемой памяти. Поиск такого участка осуществляется посредством сравнения размеров входных или промежуточных тензоров (результатов обработки данных слоем нейронной сети), и, соответственно, чем больше размер соответствующего промежуточного тензора, тем выше вероятность декомпозиции (тайлинга) данного участка. В частности, участок нейронной сети, дающий в результате обработки данных наибольший размер промежуточного или входного тензора обработанных данных, выбирается в качестве участка нейронной сети, который будет подлежать декомпозиции. Во-вторых, данный участок сети должен содержать только операции, которые могут быть подвержены декомпозиции (например, Convolutional, DepthwiseConvolutional, AveragePool и др.). То есть данный подход может быть применен не к каждой нейронной сети.
После завершения процесса поиска участка нейронной сети для декомпозиции необходимо определить, на какое число частей следует разделить этот участок. Упомянутое определение выполняется посредством определения числа блоков (тайлов) нейронной сети, при котором данный участок перестает быть «бутылочным горлышком» и сможет быть выполнен на целевом вычислительном устройстве с учетом доступной памяти этого вычислительного устройства. Т.е. с учетом размера упомянутого выше тензора обработанных данных и размера доступной памяти вычислительного устройства вычисляют, на сколько блоков следует разделить участок нейронной сети, чтобы он мог быть выполнен по частям упомянутым вычислительным устройством. После этого увеличивать количество блоков не имеет смысла, так как затрачиваемая для обработки данных память перестает изменяться, при этом количество ненужных вычислений увеличивается.
После определения требуемого количества блоков при декомпозиции, выполняется процесс подсчета координат фрагментов исходных входных данных, соответствующих конкретному фрагменту выходных данных. Этот процесс начинается с самой нижней (последней) операции, выбранного участка нейронной сети. Известные выходные данные самой последней операции выбранного участка нейронной сети разбиваются на фрагменты (предпочтительно равные), количество которых соответствует определенному ранее требуемому числу блоков. Далее с помощью обратных (по отношению к операции) формул для каждого полученного фрагмента выходных данных находятся фрагменты входных данных, которые необходимы для расчета.
Далее этот процесс обратно распространяется через все операции до самой первой из выбранного участка нейронной сети. В результате получают те фрагменты входных данных и блоки нейронной сети, которые необходимы для расчета конкретных фрагментов выходных данных.
Процесс декомпозиции нейронной сети в первую очередь зависит от архитектуры сети и ее размеров, и выполняется с учетом доступной памяти микроконтроллера, которая выступает в роли ограничения, по которому можно делать выводы о величине участка для декомпозиции, о количестве блоков и т.д., т.е. информация о количестве доступной памяти микроконтроллера служит пороговым значением, которое необходимо соблюдать в процессе декомпозиции.
Определение количества блоков, на которые необходимо разделить нейронную сеть (участок нейронной сети), и количества фрагментов, на которые необходимо разделить входные данные, основано на определении занимаемого этими данными объема памяти микроконтроллера. Этот процесс носит итеративный характер, т.к. определение конкретного объема памяти, которую блок нейронной сети, полученный после декомпозиции, будет затрачивать на обработку данных, возможно только после осуществления декомпозиции нейронной сети. Упомянутое определение объема памяти вычислительного устройства, которую блок нейронной сети после декомпозиции будет затрачивать на обработку данных, осуществляется посредством соответствующего программного обеспечения, настраиваемого пользователем (оператором) и моделирующего выполнение полученных блоков нейронной сети.
Описанный выше процесс декомпозиции нейронной сети согласно настоящему изобретению осуществляется предварительно на хост-машине, после чего программное обеспечение, реализующее блоки нейронной сети, полученные после ее декомпозиции, загружают в целевое вычислительное устройство. При этом сама программа, которая реализует блоки нейронной сети, полученные после ее декомпозиции, хранится во флэш-памяти (энергонезависимой памяти) упомянутого вычислительного устройства, а исходная нейронная сеть далее не участвует в работе.
Стоит отметить, что при декомпозиции нейронной сети могут учитываться не только доступный объем памяти и размер входных данных, но также и их тип (видеоданные, аудиоданные, IP-пакеты и т.д.). Каждое разбиение участка нейронной сети индивидуально.
В соответствии с примерным вариантом осуществления настоящего изобретения входные данные, подлежащие обработке посредством нейронной сети, представляют собой видеоданные, получаемые от периферийного устройства, например, устройства захвата изображения (видеокамеры). При этом нейронная сеть может выполнять задачу распознавания изображений, повышения качества изображения, классификации объектов на изображении и т.д. Фрагмент данных, сохраняемый в памяти микроконтроллера и затем обрабатываемый нейронной сетью, в данном случае может представлять собой один кадр из последовательности кадров, составляющих видеоданные, или часть одного кадра и т.п.
Альтернативно, входные данные, подлежащие обработке посредством нейронной сети, представляют собой аудиоданные, получаемые от периферийного устройства, например, микрофона. При этом нейронная сеть может выполнять задачу распознавания речи, повышения качества звука, наложения эффектов и т.д. Фрагмент данных, сохраняемый в памяти микроконтроллера и затем обрабатываемый нейронной сетью, в данном случае может представлять собой одну аудиодорожку из множества аудиодорожек, составляющих аудиоданные, или часть одной аудиодорожки и т.п.
Альтернативно, входные данные, подлежащие обработке посредством нейронной сети, представляют собой данные IP-пакета, получаемые от сетевого устройства и подлежащие дальнейшей передаче посредством маршрутизатора после обработки. При этом нейронная сеть может выполнять задачу кодирования, шифрования, квантования, сжатия данных и т.д.
Далее со ссылкой на фиг. 1 описан известный способ использования памяти вычислительного устройства для обработки данных посредством нейронной сети.
На фиг. 1 условно изображен пример способа обработки изображения от камеры микроконтроллером с сопроцессором, причем изображение состоит из 16 фрагментов (например, пикселей), для хранения каждого из которых условно используется один элемент памяти. Нейронная сеть, осуществляющая обработку изображения, включает в себя два слоя. На этапе S1 все изображение (4×4 пикселя) захватывается камерой и сохраняется в памяти микроконтроллера. Затем на этапе S2 изображение передается в сопроцессор (DLA) и обрабатывается первым слоем нейронной сети. Результат обработки на этапе S3 сохраняется в свободной области памяти микроконтроллера. На этапе S4 результат обработки первого слоя нейронной сети передается в сопроцессор и обрабатывается вторым слоем нейронной сети. На этапе S5 результат обработки второго слоя нейронной сети сохраняется в памяти микроконтроллера. Таким образом, в процессе обработки изображения нейронной сетью пиковое потребление памяти микроконтроллера составляет 48 элементов памяти, а пиковое потребление памяти сопроцессора составляет 32 элемента памяти.
В качестве неограничительного примера описанный выше микроконтроллер может представлять собой один из следующих известных на рынке микроконтроллеров: RTL872xxx (256 Кб RAM), STM32H7xx (564 Кб RAM), GD32F407xx (192 Кб RAM) и т.д.
На фиг. 2 условно изображен известный пример способа обработки изображения от камеры микроконтроллером с сопроцессором, причем изображение состоит из 16 фрагментов (например, пикселей), аналогичных фрагментам, описанным со ссылкой на фиг. 1, для хранения каждого из которых условно используется один элемент памяти. В данном примере микроконтроллер и сопроцессор аналогичны описанным выше со ссылкой на фиг. 1. Нейронная сеть, осуществляющая обработку изображения, включает в себя два слоя. Обработка изображения в данном примере осуществляется по частям. На этапе P1 первый фрагмент изображения (2×2 пикселя) передается от камеры в память микроконтроллера и далее передается в сопроцессор (DLA). Затем на этапе P2 первый фрагмент обрабатывается первым слоем нейронной сети, а результат обработки сохраняется в свободной области памяти микроконтроллера. Аналогичным образом на этапах P3-P8 второй, третий и четвертый фрагменты изображения по очереди передаются от камеры в память микроконтроллера, далее передаются в сопроцессор (DLA), обрабатываются первым слоем нейронной сети, а результат обработки сохраняется в свободной области памяти микроконтроллера.
На этапе P9 результат обработки первого фрагмента первым слоем нейронной сети передается в сопроцессор. На этапе P10 результат обработки первого фрагмента первым слоем нейронной сети обрабатывается вторым слоем нейронной сети и обработанные данные сохраняются в свободной области памяти микроконтроллера. Аналогичным образом на этапах P11-P16 результаты обработки второго, третьего и четвертого фрагментов изображения первый слоем нейронной сети по очереди передаются из памяти микроконтроллера в сопроцессор (DLA), обрабатываются вторым слоем нейронной сети, а обработанные данные сохраняются в свободной области памяти микроконтроллера. Таким образом, в процессе обработки изображения нейронной сетью пиковое потребление памяти микроконтроллера составляет 48 элементов памяти, а пиковое потребление памяти сопроцессора составляет 8 элементов памяти. Способ, изображенный на фиг. 2, позволяет обрабатывать изображение по частям, однако, потребление памяти микроконтроллера при такой обработке не изменяется по сравнению с известным способом, изображенным на фиг. 1.
В соответствии с настоящим изобретением предложен способ обработки данных посредством нейронной сети, подвергнутой декомпозиции, с учетом объема памяти вычислительного устройства, который включает в себя по меньшей мере следующие этапы, на которых:
- получают от периферийного устройства первый фрагмент входных данных и сохраняют его в памяти вычислительного устройства;
- обрабатывают упомянутый первый фрагмент входных данных посредством первого блока нейронной сети, подвергнутой декомпозиции, и сохраняют обработанные данные в область памяти вычислительного устройства, в которой сохранен первый фрагмент входных данных, заменяя упомянутый первый фрагмент входных данных;
- получают от периферийного устройства второй фрагмент входных данных и сохраняют его в свободной области памяти вычислительного устройства; и
- обрабатывают упомянутый второй фрагмент входных данных посредством второго блока нейронной сети, подвергнутой декомпозиции, и сохраняют обработанные данные в область памяти, в которой сохранен второй фрагмент входных данных, заменяя упомянутый второй фрагмент входных данных.
Пример реализации способа в соответствии с настоящим изобретением изображен на фиг. 3.
На фиг. 3 условно изображен пример способа обработки изображения посредством нейронной сети в соответствии с настоящим изобретением. Изображение поступает по частям от камеры в микроконтроллер, причем изображение состоит из 16 фрагментов (например, пикселей), аналогичных фрагментам, описанным со ссылкой на фиг. 1 и 2, для хранения каждого из которых условно используется один элемент памяти.
В примерном варианте осуществления настоящего изобретения для передачи данных от камеры в микроконтроллер используется DCMI интерфейс (digital camera interface) совместно с I2C (Inter-Integrated Circuit) протоколом, который позволяет указать, какой регион из буфера камеры требуется получить. Команда по конфигурированию периферийного устройства (камеры) на нужный размер и регион входных данных хранится в самой операции нейронной сети в отдельном разделе. Для хранения этих данных может использоваться распространенный формат нейронной сети (например, TensorFlow, custom-операции), либо собственный формат нейронной сети. Выполнять такого типа операции (конфигурирование и получение нужных данных с периферийного устройства) должна собственная программа, выполняющая операции нейросети (runtime).
Нейронная сеть, осуществляющая обработку изображения, включает в себя два слоя и представляет собой сверточную нейронную сеть, подвергнутую декомпозиции. Обработка изображения осуществляется по частям. На этапе R1 первый фрагмент изображения (2×2 пикселя) передается от камеры в память микроконтроллера и далее передается в сопроцессор (DLA). Затем на этапе R2 первый фрагмент обрабатывается первым блоком (тайлом) первого слоя нейронной сети, а результат обработки сохраняется в область памяти микроконтроллера, в которой сохранен первый фрагмент изображения, заменяя упомянутый первый фрагмент изображения. Аналогичным образом на этапах R3-R8 второй, третий и четвертый фрагменты изображения по очереди передаются от камеры в память микроконтроллера, далее передаются в сопроцессор (DLA), обрабатываются соответственно вторым-четвертым блоком первого слоя нейронной сети, а результат обработки сохраняется в область памяти микроконтроллера, в которой сохранен соответствующий фрагмент изображения, заменяя упомянутый соответствующий фрагмент изображения.
На этапе R9 результат обработки первого фрагмента первым слоем нейронной сети передается в сопроцессор. На этапе R10 результат обработки первого фрагмента первым слоем нейронной сети обрабатывается в сопроцессоре первым блоком второго слоя нейронной сети и обработанные данные сохраняются в область памяти микроконтроллера, в которой сохранен результат обработки первого фрагмента первым слоем нейронной сети, заменяя упомянутый результат обработки первого фрагмента первым слоем нейронной сети. Аналогичным образом на этапах R11-R16 результаты обработки второго, третьего и четвертого фрагментов изображения первым слоем нейронной сети по очереди передаются из памяти микроконтроллера в сопроцессор (DLA), обрабатываются соответственно вторым-четвертым блоком второго слоя нейронной сети, а обработанные данные сохраняются в область памяти микроконтроллера, в которой сохранен результат обработки соответствующего фрагмента изображения первым слоем нейронной сети, заменяя упомянутый результат обработки соответствующего фрагмента изображения первым слоем нейронной сети. В результате в памяти микроконтроллера сохранен результат обработки изображения нейронной сетью, содержащей два слоя. Таким образом, в процессе обработки изображения нейронной сетью пиковое потребление памяти микроконтроллера составляет 16 элементов памяти, а пиковое потребление памяти сопроцессора составляет 8 элементов памяти, т.е. данный способ позволяет получить обработанные данные изображения с камеры без использования дополнительных регионов памяти микроконтроллера, обычно требующихся под хранение промежуточных результатов обработки изображения.
Таким образом, настоящее изобретение позволяет уменьшить пиковое потребление памяти микроконтроллера во время работы нейронной сети и, следовательно, снизить требования к доступной памяти микроконтроллера для обработки данных посредством нейронной сети, т.е. нейронная сеть может обрабатывать данные даже на вычислительном устройстве, имеющем микроконтроллер с очень ограниченным объемом памяти. Это, помимо прочего, позволяет снизить массогабаритные параметры вычислительных устройств вследствие снижения требований к микросхеме памяти.
В изображенных на фиг. 1-3 способах обработки данных входные и выходные (обработанные) данные нейронной сети условно изображены как имеющие одинаковую размерность. На практике же при обработке данных посредством, например, сверточных нейронных сетей размер входных данных слоя нейронной сети значительно больше, чем объем памяти, занимаемый результатами обработки этого слоя нейронной сети. За счет обработки данных по частям и перезаписи области памяти, занятой входными данными, обработанными данными это в некоторых случаях позволяет обрабатывать данные с помощью микроконтроллера, объем оперативной памяти которого недостаточен даже для сохранения входных данных (например, изображения) целиком.
Пример известной обработки данных нейронной сетью (без декомпозиции), в которой размер входных данных слоя нейронной сети превышает объем памяти, занимаемый результатами обработки этого слоя нейронной сети, в упрощенном виде изображен на фиг. 4.
В изображенном на фиг. 4 примере представлена блок-схема обработки данных посредством сверточной сети VGG16 для распознавания изображений. Размеры входных тензоров от первого слоя свертки (Свертка 1) до последнего (Свертка 5) значительно уменьшаются. Входной тензор первой операции обрабатывается как одноканальное 32-битное изображение с разрешением 224×224 (т.е. (224×224×1)×4 (32 битное изображение)) и его размер составляет 196 Кбайт. Пиковое потребление памяти для выполнения одной операции нейронной сети составляет 196 Кбайт * 2=392 Кбайт (вход и выход первой свертки).
Далее на фиг. 5 в упрощенном виде изображена блок-схема обработки данных посредством нейронной сети, к которой применена декомпозиция, в соответствии с настоящим изобретением. В изображенном примере декомпозиции подвергнута не вся нейронная сеть, а лишь ее участок. Участок сети, к которому применена декомпозиция, включает в себя первый-третий слои: Свертка 1, Свертка 2, Свертка 3. Каждая операция разбивается на блоки и содержит свой фрагмент входных данных. На фиг. 5 стрелками со сплошными линиями обозначен порядок выполнения операций, а стрелками с пунктирными линиями обозначено направление передачи данных между операциями, когда оно отличается от упомянутого порядка выполнения операций.
В данном варианте осуществления каждый блок после декомпозиции обрабатывается последовательно. Сначала обрабатывается первый фрагмент входных данных посредством блоков Свертка 1 -> Свертка 2 -> Свертка 3 первой ветви. Полученные обработанные данные сохраняются в памяти, при этом после выполнения каждого блока выходные данные перезаписывают область памяти, в которой были сохранены входные данные этого блока. Далее аналогичным образом обрабатываются второй-четвертый фрагменты входных данных. Пиковое значение потребления памяти может быть получено следующим образом - после обработки третьим слоем трех блоков (трех ветвей на рисунке) полученные фрагменты данных размером 12,25 Кбайт необходимо хранить в памяти, пока не будет обработан последний (четвертый) блок, чтобы затем объединить их все в итоговый тензор, то есть эти три фрагмента обработанных данных занимают 12,25 Кбайт * 3=36,75 Кбайт. Далее при обработке Свертки 1 четвертого блока, необходимо выделить 49 Кбайт на сохранение входных данных, которые затем будут перезаписаны выходными данными обработки. Таким образом, пиковое потребление памяти микроконтроллера будет составлять 49+12,25*3=85,75 Кбайт. В то же время пиковое потребление памяти исходной нейронной сетью составляло 392 Кбайт (196 Кбайт * 2 (входные и выходные данные Свертки 1)). В итоге получен максимальный пиковый размер потребления памяти при обработке всей нейронной сети 85,75 Кбайт. Такая нейронная сеть, подвергнутая декомпозиции, может быть выполнена, например, на микроконтроллере с объемом памяти в 128 Кбайт. Для такого микроконтроллера третий слой нейронной сети (Свертка 3) можно было бы не декомпозировать. В данном примере декомпозиция третьего слоя нейронной сети выполнена лишь для иллюстрации.
Стоит отметить, что при декомпозиции каждая операция разбивается на блоки и каждому такому блоку соответствует свой фрагмент входных данных, а также часть из входных данных других блоков, выполненных с возможностью обработки смежных фрагментов входных данных. Т.е. фрагменты входных данных, соответствующие разным блокам нейронной сети, предназначенным для обработки смежных фрагментов входных данных, имеют некоторое перекрытие («нахлест» - overlapping). Это необходимо для выполнения корректного расчета фильтрами.
Далее на фиг. 6 представлено изображение, поясняющее процесс обработки входных тензоров посредством декомпозированной операции Свертка. Каждому блоку в декомпозированной нейронной сети соответствует свой фрагмент входных данных и части из соседних смежных фрагментов, получающиеся в результате «нахлеста» фильтров свертки на соседние фрагменты данных (overlapped tiling). Фильтры свертки представляют собой матрицы коэффициентов (ядра свертки), которыми обрабатываются входные данные в скользящем окне с заданным шагом. «Нахлест» вычисляется для каждого случая свой, зависит от размера фильтра, от шага фильтра (stride), и используется ли дополнение входного тензора (padding).
Входной тензор (одноканальное изображение) размером 8×8 элементов обрабатывается сверточным слоем нейросети, к которому применена декомпозиция. Размер фильтра (ядра свертки) равен 3×3, шаг скользящего окна фильтра равен 1. Входные данные (8×8) делятся на 4 фрагмента, размер каждого фрагмента равен 5×5, при этом каждый фрагмент содержит блок оригинальных данных из входного тензора размером 4×4, а также дополнительные данные («нахлест») из соседних фрагментов (overlapped tiling). Такое избыточное разделение входных данных на фрагменты необходимо для корректной работы фильтра со скользящим окном. В данном примере в двумерной операции свертки необходимо начинать со скользящего окна фильтра, расположенного в верхнем левом углу каждого фрагмента входных данных, и перемещать его слева направо и сверху вниз по всему фрагменту данных. Когда окно фильтра свертки сдвигается в определенное положение, входные данные, содержащиеся в этом окне, и коэффициенты (веса) фильтра умножаются поэлементно, а результаты перемножений суммируются. Этот результат дает значение одного элемента выходного тензора в соответствующем месте. Так скользящим окном с ядром свертки обрабатываются все фрагменты входных данных и получаются части выходного тензора. Далее, полученные части выходного тензора от каждого фрагмента входных данных объединяются в результирующий выходной тензор 6×6.
В описанном выше способе в соответствии с настоящим изобретением используется микроконтроллер, который должен считывать входные данные из периферийного устройства (например, камеры или микрофона) по частям, тем самым экономя оперативную память микроконтроллера. Например, если буфер периферийного устройства заполняется медленно или имеет малый размер, то получая часть данных с такого «медленного» буфера периферийного устройства, микроконтроллер будет успевать обработать эту часть входных данных посредством нейронной сети. Это также позволяет снизить требования к аппаратным характеристикам конечного устройства за счет уменьшения буфера на микроконтроллере и/или на периферийном устройстве.
В изображенном на фиг. 3 способе все фрагменты входных данных получают из одного изображения, захватываемого камерой. В альтернативном варианте осуществления фрагменты входных данных, подлежащих обработке, получают из разных наборов входных данных. В данном случае разные части изображения, обрабатываемые нейронной сетью, подвергнутой декомпозиции, получают из разных кадров. Например, случай, когда камера ведет съемку непрерывно (стриминг - streaming), и микроконтроллер не способен сохранить все изображение одного кадра с камеры (что часто бывает). Тогда за время между кадрами камеры, микроконтроллер успевает получить и обработать только один фрагмент изображения с камеры. Если изображения на кадрах меняются медленно, то взяв по одному разному фрагменту из последовательности кадров, которые содержат в себе почти не меняющуюся информацию (например, статичная сцена), и обработав их - получим корректный результат. В качестве примера использования такого варианта осуществления настоящего изобретения можно привести камеру для слежения в доме престарых или больнице, которая работает на стриминг, и данные с камеры обрабатываются микроконтроллером для выделения статичных объектов на изображении, например, для детектирования случаев, когда кто-то упал и лежит без движения. Такой вариант осуществления изобретения неприменим для выделения статичных объектов, если сцена будет быстро меняться. В таком случае фрагменты, взятые из разных кадров (разные части разных кадров) не будут соответствовать одной относительно неменяющейся (статичной) сцене, и результат обработки будет свидетельствовать о том, что сцена постоянно меняется и на захватываемой сцене нет целевых (выделяемых) статичных объектов, что также может расцениваться как соответствующий результат обработки данных.
В еще одном альтернативном варианте осуществления настоящего изобретения результат обработки одного фрагмента входных данных слоем нейронной сети сохраняется в свободную область памяти микроконтроллера, а область памяти, в которой сохранен упомянутый фрагмент входных данных, перезаписывается следующим фрагментом входных данных, подлежащих обработке. Т.е. сначала аналогично способу, изображенному на фиг. 3, первый фрагмент изображения (2×2 пикселя) передается от камеры в память микроконтроллера и далее передается для обработки в сопроцессор (DLA). Упомянутый первый фрагмент обрабатывается первым блоком первого слоя нейронной сети, а результат обработки сохраняется в свободную область памяти микроконтроллера. Следующий фрагмент изображения передается от камеры и записывается в область памяти микроконтроллера, в которой сохранен первый фрагмент изображения, заменяя упомянутый первый фрагмент изображения. Далее аналогичным образом второй, третий и четвертый фрагменты изображения по очереди обрабатываются соответствующим блоком первого слоя нейронной сети, а результат обработки сохраняется в свободную область памяти микроконтроллера. Затем результат обработки фрагментов изображения первым слоем нейронной сети по очереди обрабатывается вторым слоем нейронной сети и обработанные данные сохраняются в область памяти микроконтроллера, в которой сохранен результат обработки соответствующего фрагмента первым слоем нейронной сети, заменяя упомянутый результат обработки соответствующего фрагмента первым слоем нейронной сети. Такой вариант осуществления в некоторых случаях позволяет дополнительно снизить объем памяти, требуемый для обработки данных посредством нейронной сети.
Согласно еще одному альтернативному варианту осуществления изобретения после обработки фрагментов данных первым слоем нейронной сети, описанной со ссылкой на фиг. 3, результаты обработки дополнительно делятся на еще более мелкие фрагменты данных, которые затем обрабатываются вторым слоем нейронной сети, а результаты обработки данных вторым слоем нейронной сети сохраняются в область памяти микроконтроллера, в которой сохранен результат обработки соответствующего фрагмента изображения первым слоем нейронной сети, заменяя упомянутый результат обработки соответствующего фрагмента изображения первым слоем нейронной сети. Такой вариант осуществления может найти преимущественное использование при обработке данных посредством нейронных сетей, промежуточные слои которых порождают выходные тензоры большие по размеру по сравнению с входными данными.
Описанный выше примерный вариант осуществления настоящего изобретения реализован с использованием микроконтроллера с сопроцессором (DLA). В случае отсутствия сопроцессора вся нейронная сеть исполняется на микроконтроллере, также с переиспользованием областей памяти микроконтроллера. Отличие состоит лишь в том, что конкретную операцию обработки выполняет не сопроцессор, а сам микроконтроллер, но память, из которой загружаются данные для обработки данной операции, как на микроконтроллер, так и на сопроцессор (в случае, когда он есть), является одной и той же.
При работе без сопроцессора в случае замены входных данных в памяти результатами обработки, программа, исполняющая нейросеть, реализуется таким образом, чтобы при выполнении операции Свертка, элемент памяти фрагмента входных данных заменялся результатом обработки. Таким образом, должны быть предусмотрены следующие этапы (см. фиг. 7): а) вычисление результата применения фильтра свертки в скользящем окне с входными данными; б) сдвиг скользящего окна на заданное количество элементов (зависит от шага фильтра); в) запись результата обработки на место обработанного элемента входных данных.
Далее со ссылкой на фиг. 8 описан алгоритм выделения и перезаписи памяти при реализации настоящего изобретения.
В соответствии с настоящим изобретением входной и выходной тензор данных операции нейронной сети определяют как данные для обработки, состоящие из входных и выходных (или промежуточных) фрагментов (далее «фрагмент тензора»), обрабатываемых декомпозированными блоками этой операции. На этапе Q1 определяют время между началом обработки фрагмента тензора и временем завершения его обработки, т.е. время жизни фрагмента тензора. Затем определяют время жизни всего тензора как время между началом обработки первого фрагмента тензора и завершением обработки последнего фрагмента тензора. Упомянутое определение времени жизни выполняют для всех тензоров (входного, промежуточных, выходного) и их фрагментов. Данный этап может выполняться во время декомпозиции нейронной сети. Время жизни тензоров (фрагментов тензоров) в общем случае измеряется в тактах вычислений. Впоследствии при реализации настоящего изобретения на конкретном оборудовании время жизни может быть пересчитано в миллисекундах в зависимости от частоты используемого микроконтроллера.
На этапе Q2 для каждого фрагмента тензора определяется список его смежных по времени жизни фрагментов тензоров, у которых время жизни пересекается с упомянутым фрагментом тензора.
Далее полученные фрагменты тензоров ранжируются в порядке очереди их обработки. Очередь обработки фрагментов тензоров может быть определена в зависимости от очередности поступления фрагментов входных данных от периферийных устройств, очередности выполнения операций, размеров фрагментов тензоров, их времени жизни и других параметров. При равном значении очередности поступления фрагментов входных данных от периферийных устройств и очередности выполнения операций фрагменты тензоров могут ранжироваться в порядке убываниях их размера и/или в порядке возрастания времени жизни. Т.е. в первую очередь будут записываться в память и обрабатываться фрагменты тензоров наибольшего размера и с наименьшим временем жизни.
Со ссылкой на фиг. 5, описанную выше, алгоритм ранжирования фрагментов тензоров в порядке очереди их обработки может быть проиллюстрирован следующим образом. От периферийного устройства (камеры) микроконтроллер последовательно принимает четыре фрагмента входных данных (фрагменты изображения). Таким образом, очередность обработки этих фрагментов данных в первую очередь определяется очередностью приема этих фрагментов от периферийного устройства. Т.к. при сохранении всех четырех фрагментов входных данных в памяти суммарный полученный тензор данных будет занимать 196 Кбайт и не может быть обработан, например, микроконтроллером с объемом доступной памяти 128 Кбайт, то определяется очередность обработки фрагментов тензоров с учетом очередности выполнения операций, размера фрагментов тензоров и их времени жизни таким образом, чтобы доступной памяти микроконтроллера хватило для обработки упомянутых данных. В частности, как изображено на фиг. 5, сначала первый фрагмент входных данных поочередно обрабатывается блоками Свертка 1, Свертка 2, Свертка 3 первой ветви, при этом обработанные данные на выходе каждого упомянутого блока должны перезаписывать область памяти, занятую входными данными упомянутого блока. Пиковое потребление памяти при такой обработке первого фрагмента данных составляет 49 Кбайт, а обработанные данные после блока Свертка 3 сохраняются в памяти и занимают 12,25 Кбайт. Далее поочередно аналогичным образом обрабатываются второй-четвертый фрагменты входных данных. Как было описано выше со ссылкой на фиг. 5, пиковое потребление памяти микроконтроллера при обработке данных блоками, относящимися к первым трем слоям декомпозированной нейронной сети, будет составлять 49+12,25*3=85,75 Кбайт. Далее фрагменты обработанных данных объединяются и обрабатываются в соответствии с заданным алгоритмом.
На основании полученной очередности обработки фрагментов тензоров на этапе Q3 определяется очередность и регион записи их в память микроконтроллера. При этом задается ограничение, что фрагменты тензоров, относящиеся к разным блокам декомпозированной нейронной сети не должны пересекаться в памяти, если их время жизни пересекается, в то время как входные и выходные фрагменты тензоров одного блока декомпозированной нейронной сети могут пересекаться в памяти, даже если их время жизни пересекается, так как программа, исполняющая нейронную сеть, выполнена с возможностью перезаписывать область памяти, занятую фрагментом входного тензора, соответствующим фрагментом выходного тензора.
Для возможности реализации разных вариантов перезаписи входных данных от периферийного устройства, фрагменты входного тензора с пересекающимися временами жизни могут опционально, как пересекаться в памяти, так и не пересекаться.
Для размещения фрагмента тензора алгоритм на этапе Q4 линейным сканированием начиная с нулевого адреса в памяти ищет первую подходящую по размеру область памяти, такую что бы фрагмент тензора не пересекался в памяти с другими уже размещенными в памяти пересекающимися с ним по времени жизни фрагментами тензоров.
Если на этапе Q5 определено, что пересечений нет, то алгоритм переходит к этапу Q6 и размещает данный фрагмент тензора в выбранной области памяти. Если есть пересечение фрагментов входного и выходного тензоров одного блока декомпозированной нейронной сети, то алгоритм также переходит к этапу Q6 и размещает данный фрагмент тензора в выбранной области памяти. Если есть пересечения фрагментов тензоров, относящихся к разным блокам декомпозированной нейронной сети, то продолжается поиск подходящей области памяти с текущего адреса линейным сканированием. Если область памяти для размещения фрагмента тензора не найдена, алгоритм прекращает работу с выводом ошибки.
После записи фрагмента тензора в памяти алгоритм переходит к этапу Q7, на котором определяет, все ли фрагменты тензоров были размещены в памяти. Если определено, что еще не все фрагменты тензоров были размещены в памяти, то алгоритм возвращается к этапу Q4 и осуществляет размещение следующих по очередности фрагментов тензоров в соответствии со способом, описанным выше.
После определения, что все фрагменты тензоров были размещены в памяти, алгоритм заканчивается.
Описанный выше алгоритм выделения памяти работает как планировщик, т.е. он работает не во время исполнения нейронной сети вычислительным устройством (хотя такой вариант исполнения также может быть реализован), а перед ее исполнением запускается упомянутый алгоритм и определяет, где в памяти будет размещаться каждый фрагмент тензора, и пытается сократить пиковое потребление памяти. Под «размещением в памяти» тензора в алгоритме в данном случае подразумевается бронирование участка памяти под тензор на определенный период времени, соответствующий времени жизни фрагмента тензора, а не непосредственное сохранение его в памяти. Таким образом осуществляется планирование записи (сохранения) в памяти каждого фрагмента тензора в зависимости от заданных условий. В дальнейшем при исполнении нейронной сети вычислительным устройством фрагменты тензоров сохраняют в памяти в соответствии с определенным выше планом.
Таким образом, начиная каждый раз поиск с начального адреса в памяти и принимая во внимание время жизни фрагментов тензоров и тензоров всей операции, алгоритм сокращает объем используемой памяти благодаря перезаписи памяти, занятой уже обработанными фрагментами данных. А так же не требует для каждой операции нейронной сети выделять отдельный буфер для выходных фрагментов данных, так как алгоритм изначально позволяет входным и выходным фрагментам одного тензора делить одну и ту же память, даже если их времена жизни пересекаются.
Согласно еще одному аспекту настоящего изобретения предложен компьютерно-читаемый носитель, хранящий компьютерную программу, которая при выполнении модулем обработки данных предписывает модулю обработки данных выполнять этапы способа обработки данных посредством нейронной сети в соответствии с настоящим изобретением.
Настоящее изобретение применяется для микроконтроллеров уже давно присутствующих на рынке. Также настоящее изобретение может быть применено для любых новых устройств, которые выполнены с возможностью запускать нейронные сети. При этом микроконтроллер должен работать и получать данные от некоторого периферийного устройства, которое должно поддерживать протоколы связи, выполненные с возможностью выдавать данные частями заданных размеров.
В частности, настоящее изобретение может найти преимущественное использование для реализации нейронных сетей, например, в таких устройствах как кондиционеры, холодильники, стиральные машины, роботы-пылесосы и т.д., т.е. в устройствах, которые традиционно имеют малый объем памяти, при этом повышая их функциональность за счет возможности запуска и исполнения более сложных приложений на основании нейронных сетей.
В качестве модуля обработки данных в вычислительном устройстве по настоящему изобретению помимо микроконтроллера может использоваться контроллер, процессор, микропроцессор и т.п.
Специалист в данной области техники должен понимать, что не каждое из вышеуказанных преимуществ обязательно присуще каждому отдельно взятому варианту осуществления, то есть разные варианты осуществления могут обладать разным набором из перечисленных преимуществ и в разной степени.
По меньшей мере один из этапов в способе или блоков в системе может использовать модель искусственного интеллекта (AI) для выполнения соответствующих операций. Функция, связанная с AI, может выполняться через энергонезависимую память, энергозависимую память и процессор.
Процессор может включать в себя один или несколько процессоров. В то же время, один или несколько процессоров могут быть процессором общего назначения, например, центральным процессором (CPU), прикладным процессором (AP) или т.п., блоком обработки только графики, таким как графический процессор (GPU), визуальный процессор (VPU) и/или специализированный процессор AI, такой как нейронный процессор (NPU).
Один или несколько процессоров управляют обработкой входных данных в соответствии с заранее определенным правилом работы или моделью искусственного интеллекта (AI), хранящейся в энергонезависимой памяти и энергозависимой памяти. Предварительно определенное рабочее правило или модель искусственного интеллекта могут быть получены путем обучения. При этом процессор может выполнять операцию предварительной обработки данных для преобразования в форму, подходящую для использования в качестве входных данных для модели искусственного интеллекта.
«Получена путем обучения» означает, что посредством применения алгоритма обучения к множеству обучающих данных создается предварительно определенное рабочее правило или модель AI с желаемой характеристикой. Обучение может выполняться на самом устройстве, в котором выполняется AI согласно варианту осуществления, и/или может быть реализовано через отдельный сервер/систему.
Модель искусственного интеллекта может включать в себя множество слоев нейронной сети. Каждый из множества слоев нейронной сети включает в себя множество весовых значений и выполняет рабочую операцию для данного уровня путем вычисления между результатом вычисления предыдущего слоя и множеством весовых значений.
Примеры нейронных сетей включают, помимо прочего, сверточную нейронную сеть (CNN), глубокую нейронную сеть (DNN), рекуррентную нейронную сеть (RNN), ограниченную машину Больцмана (RBM), глубокую сеть доверия (DBN), двунаправленную рекуррентную глубокую нейронную сеть (BRDNN), генеративно-состязательные сети (GAN) и глубокие Q-сети.
Алгоритм обучения - это метод обучения предварительно определенного целевого устройства (например, нейронной сети на базе GPU) с использованием множества обучающих данных, чтобы вызывать, разрешать или управлять целевым устройством для выполнения определения или прогнозирования. Примеры алгоритмов обучения включают, но не ограничиваются ими, обучение с учителем, обучение без учителя, обучение с частичным привлечением учителя или обучение с подкреплением.
Различные иллюстративные блоки и модули, описанные в связи с раскрытием сущности в данном документе, могут реализовываться или выполняться с помощью процессора общего назначения, процессора цифровых сигналов (DSP), специализированной интегральной схемы (ASIC), программируемой пользователем вентильной матрицы (FPGA) или другого программируемого логического устройства (PLD), дискретного логического элемента или транзисторной логики, дискретных аппаратных компонентов либо любой комбинации вышеозначенного, предназначенной для того, чтобы выполнять описанные в данном документе функции. Процессор общего назначения может представлять собой микропроцессор, но в альтернативном варианте, процессор может представлять собой любой традиционный процессор, контроллер, микроконтроллер или конечный автомат. Процессор также может реализовываться как комбинация вычислительных устройств (к примеру, комбинация DSP и микропроцессора, несколько микропроцессоров, один или более микропроцессоров вместе с DSP-ядром либо любая другая подобная конфигурация).
Память может быть энергозависимой или энергонезависимой памятью или может включать в себя как энергозависимую, так и энергонезависимую память. Энергонезависимой памятью может быть постоянное запоминающее устройство (ROM), программируемое постоянное запоминающее устройство (PROM), стираемое программируемое постоянное запоминающее устройство (EPROM), электронно-стираемое программируемое постоянное запоминающее устройство (EEPROM) или флэш-память. Энергозависимая память может быть оперативной памятью (RAM). Также память в вариантах осуществления настоящего раскрытия может быть статической памятью с произвольным доступом (SRAM), динамической памятью с произвольным доступом (DRAM), синхронной динамической памятью с произвольным доступом (синхронная DRAM, SDRAM), синхронной динамической памятью с произвольной выборкой с двойной скоростью передачи данных (SDRAM с двойной скоростью передачи данных, DDR SDRAM), синхронной динамической памятью с произвольной выборкой с повышенной скоростью (улучшенная SDRAM, ESDRAM), DRAM с синхронной линией связи (SLDRAM) и оперативной памятью с шиной прямого доступа (DR RAM) и тд. То есть память в вариантах осуществления настоящего раскрытия включает в себя, но не ограничивается этим, эти и любые другие подходящие типы памяти.
Информация и сигналы, описанные в данном документе, могут представляться с помощью любой из множества различных технологий. Например, данные, инструкции, команды, информация, сигналы, биты, символы и элементарные сигналы, которые могут приводиться в качестве примера в вышеприведенном описании, могут представляться посредством напряжений, токов, электромагнитных волн, магнитных полей или частиц, оптических полей или частиц либо любой комбинации вышеозначенного.
Функции, описанные в данном документе, могут реализовываться в аппаратном обеспечении, программном обеспечении, выполняемом посредством процессора, микропрограммном обеспечении или в любой комбинации вышеозначенного. При реализации в программном обеспечении, выполняемом посредством процессора, функции могут сохраняться или передаваться как одна или более инструкций или код на компьютерно-читаемом носителе. Другие примеры и реализации находятся в пределах объема раскрытия настоящего изобретения. Например, вследствие характера программного обеспечения, функции, описанные выше, могут реализовываться с использованием программного обеспечения, выполняемого посредством процессора, аппаратного обеспечения, микропрограммного обеспечения, фиксированного блока или комбинаций любого из вышеозначенного. Признаки, реализующие функции, также могут физически находиться в различных позициях, в том числе согласно такому распределению, что части функций реализуются в различных физических местоположениях.
Компьютерно-читаемые носители включают в себя как некратковременные компьютерные носители хранения данных, так и среду связи, включающую в себя любую передающую среду, которая упрощает перемещение компьютерной программы из одного места в другое. Некратковременный носитель хранения данных может представлять собой любой доступный носитель, к которому можно осуществлять доступ посредством компьютера общего назначения или специального назначения. В качестве примера, а не ограничения, некратковременные компьютерно-читаемые носители могут содержать оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память, ROM на компакт-дисках (CD) или другое устройство хранения данных на оптических дисках, устройство хранения данных на магнитных дисках или другие магнитные устройства хранения, либо любой другой некратковременный носитель, который может использоваться для того, чтобы переносить или сохранять требуемое средство программного кода в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера общего назначения или специального назначения либо процессора общего назначения или специального назначения.
Следует понимать, что в настоящем документе показаны принцип работы и базовые примеры способа использования оперативной памяти вычислительного устройства для функционирования нейронной сети. Специалист в данной области техники, используя данные принципы, сможет получить и другие варианты осуществления изобретения, не прикладывая творческих усилий.
Функциональность элемента, указанного в описании или формуле изобретения как единый элемент, может быть реализована на практике посредством нескольких компонентов устройства, и наоборот, функциональность элементов, указанных в описании или формуле изобретения как несколько отдельных элементов, может быть реализована на практике посредством единого компонента.
Упомянутые линии или каналы связи, если не указано иное, являются стандартными, известными специалистам линиями связи, материальная реализация которых не требует творческих усилий. Линией связи может быть провод, набор проводов, шина, дорожка, беспроводная линия связи (индуктивная, радиочастотная, инфракрасная, ультразвуковая и т.д.). Протоколы связи по линиям связи известны специалистам и не раскрываются отдельно.
Под функциональной связью элементов следует понимать связь, обеспечивающую корректное взаимодействие этих элементов друг с другом и реализацию той или иной функциональности элементов. Частными примерами функциональной связи может быть связь с возможностью обмена информацией, связь с возможностью передачи электрического тока, связь с возможностью передачи механического движения, связь с возможностью передачи света, звука, электромагнитных или механических колебаний и т.д. Конкретный вид функциональной связи определяется характером взаимодействия упомянутых элементов, и, если не указано иное, обеспечивается широко известными средствами, используя широко известные в технике принципы.
Электрическое соединение одного элемента/схемы/порта/вывода с другим элементом/схемой/портом/выводом подразумевает, что эти элементы/схемы/порты/выводы могут быть как непосредственно соединены друг с другом, так и опосредованно через иные элементы или схемы.
Конструктивное исполнение элементов описанного устройства является известным для специалистов в данной области техники и не описывается отдельно в данном документе, если не указано иное. Элементы устройства могут быть выполнены из любого подходящего материала. Эти составные части могут быть изготовлены с использованием известных способов, включая, лишь в качестве примера, механическую обработку на станках, литье по выплавляемой модели, наращивание кристаллов. Операции сборки, соединения и иные операции в соответствии с приведенным описанием также соответствуют знаниям специалиста в данной области и, таким образом, более подробно поясняться здесь не будут.
Несмотря на то, что примерные варианты осуществления были подробно описаны и показаны со ссылкой на сопроводительные чертежи, следует понимать, что такие варианты осуществления являются лишь иллюстративными и не предназначены ограничивать настоящее изобретение, и что данное изобретение не должно ограничиваться конкретными показанными и описанными компоновками и конструкциями, поскольку специалисту в данной области техники на основе информации, изложенной в описании, и знаний уровня техники могут быть очевидны различные другие модификации и варианты осуществления изобретения, не выходящие за пределы сущности и объема данного изобретения.
Claims (36)
1. Способ обработки данных посредством нейронной сети, подвергнутой декомпозиции с учетом объема памяти вычислительного устройства, который включает в себя по меньшей мере следующие этапы, на которых:
- принимают от периферийного устройства первый фрагмент входных данных и сохраняют его в памяти вычислительного устройства;
- обрабатывают упомянутый первый фрагмент входных данных посредством первого блока нейронной сети, подвергнутой декомпозиции, и сохраняют обработанные данные в область памяти вычислительного устройства, в которой сохранен первый фрагмент входных данных, заменяя упомянутый первый фрагмент входных данных;
- принимают от периферийного устройства второй фрагмент входных данных и сохраняют его в свободной области памяти вычислительного устройства; и
- обрабатывают упомянутый второй фрагмент входных данных посредством второго блока нейронной сети, подвергнутой декомпозиции, и сохраняют обработанные данные в область памяти вычислительного устройства, в которой сохранен второй фрагмент входных данных, заменяя упомянутый второй фрагмент входных данных.
2. Способ обработки данных посредством нейронной сети, подвергнутой декомпозиции с учетом объема памяти вычислительного устройства, который включает в себя по меньшей мере следующие этапы, на которых:
- принимают от периферийного устройства первый фрагмент входных данных и сохраняют его в памяти вычислительного устройства;
- обрабатывают упомянутый первый фрагмент входных данных посредством первого блока нейронной сети, подвергнутой декомпозиции, и сохраняют первый фрагмент обработанных данных в свободной области памяти вычислительного устройства;
- принимают от периферийного устройства второй фрагмент входных данных и сохраняют его в области памяти вычислительного устройства, в которой сохранен первый фрагмент входных данных, заменяя упомянутый первый фрагмент входных данных;
- обрабатывают упомянутый второй фрагмент входных данных посредством второго блока нейронной сети, подвергнутой декомпозиции, и сохраняют второй фрагмент обработанных данных в свободной области памяти вычислительного устройства;
- обрабатывают упомянутый первый фрагмент обработанных данных посредством третьего блока нейронной сети, подвергнутой декомпозиции, и сохраняют третий фрагмент обработанных данных в область памяти вычислительного устройства, в которой сохранен первый фрагмент обработанных данных, заменяя упомянутый первый фрагмент обработанных данных;
- обрабатывают упомянутый второй фрагмент обработанных данных посредством четвертого блока нейронной сети, подвергнутой декомпозиции, и сохраняют четвертый фрагмент обработанных данных в область памяти вычислительного устройства, в которой сохранен второй фрагмент обработанных данных, заменяя упомянутый второй фрагмент обработанных данных.
3. Способ по п. 1 или 2, в котором периферийное устройство является видеокамерой, а входные данные представляют собой видеоданные.
4. Способ по п. 3, в котором упомянутые фрагменты входных данных получают из одного изображения, захватываемого камерой.
5. Способ по п. 3, в котором упомянутые фрагменты входных данных получают из разных изображений, захватываемых камерой.
6. Способ по п. 1 или 2, в котором периферийное устройство является микрофоном, а входные данные представляют собой аудиоданные.
7. Способ по п. 1 или 2, в котором предварительно выполняют декомпозицию нейронной сети и записывают полученные блоки нейронной сети, подвергнутой декомпозиции, в энергонезависимую память вычислительного устройства, причем декомпозиция нейронной сети включает в себя этапы, на которых:
- определяют участок нейронной сети, дающий в результате обработки данных наибольший размер промежуточного тензора обработанных данных;
- определяют, на какое число блоков следует разделить упомянутый участок нейронной сети с учетом объема памяти вычислительного устройства;
- разделяют исходные выходные данные самой последней операции выбранного участка нейронной сети на фрагменты, число которых соответствует упомянутому определенному числу блоков;
- с помощью обратных, по отношению к операциям нейронной сети, формул определяют фрагменты входных данных, которые необходимы для расчета выбранного фрагмента выходных данных;
- определяют фрагменты входных данных и блоки нейронной сети, которые необходимы для расчета конкретных фрагментов выходных данных.
8. Способ по п. 7, в котором декомпозицию нейронной сети осуществляют с учетом доступной памяти вычислительного устройства, в которой будут сохраняться данные в процессе обработки.
9. Способ по п. 1 или 2, в котором вычислительное устройство включает в себя одно из микроконтроллера, контроллера, процессора и микропроцессора.
10. Способ по п. 1 или 2, в котором вычислительное устройство дополнительно включает в себя сопроцессор для обработки данных с помощью нейронной сети.
11. Способ по п. 1 или 2, в котором нейронная сеть, подвергнутая декомпозиции, включает в себя по меньшей мере два слоя нейронной сети и входные данные сначала обрабатывают посредством соответствующих блоков первого слоя нейронной сети, а затем полученные результаты обработки обрабатывают посредством соответствующих блоков второго слоя нейронной сети.
12. Способ по п. 11, в котором результаты обработки фрагментов данных первым слоем нейронной сети дополнительно делятся на более мелкие фрагменты данных, которые затем обрабатываются вторым слоем нейронной сети.
13. Способ по п. 1 или 2, в котором фрагменты входных данных представляют собой фрагменты входного тензора, обрабатываемые блоками нейронной сети, подвергнутой декомпозиции, фрагменты обработанных данных представляют собой фрагменты выходного тензора после обработки упомянутыми блоками, при этом способ дополнительно включает в себя следующие этапы, на которых:
- определяют время между началом обработки фрагмента тензора и временем завершения его обработки (время жизни фрагмента тензора) и время между началом обработки первого фрагмента тензора и завершением обработки последнего фрагмента тензора (время жизни тензора);
- для каждого фрагмента тензора определяют список его смежных по времени жизни фрагментов тензоров, у которых время жизни пересекается с упомянутым фрагментом тензора;
- определяют очередность записи фрагментов тензоров в памяти на основании очередности их обработки;
- для каждого фрагмента тензора в упомянутом определенном порядке осуществляют поиск в памяти подходящей области памяти, достаточной для размещения фрагмента тензора, при этом упомянутый фрагмент тензора не должен пересекаться в памяти с другими уже размещенными в памяти пересекающимися с ним по времени жизни фрагментами других тензоров, и планируют сохранение фрагмента тензора в подходящей области памяти на период времени, соответствующий времени жизни фрагмента тензора;
- сохраняют фрагменты тензоров в памяти в соответствии с упомянутым планом,
при этом входные и выходные фрагменты тензоров одного блока декомпозированной нейронной сети могут пересекаться в памяти, даже если их время жизни пересекается, так как вычислительное устройство выполнено с возможностью перезаписывать область памяти, занятую фрагментом входного тензора, соответствующим фрагментом выходного тензора.
14. Способ по п. 1 или 2, в котором упомянутые фрагменты входных данных получают из разных наборов входных данных, передаваемых периферийным устройством.
15. Компьютерно-читаемый носитель, хранящий компьютерную программу, которая при выполнении модулем обработки данных вычислительного устройства предписывает модулю обработки данных выполнять этапы способа по п. 1 или 2.
Publications (1)
Publication Number | Publication Date |
---|---|
RU2820172C1 true RU2820172C1 (ru) | 2024-05-30 |
Family
ID=
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160350645A1 (en) * | 2015-05-29 | 2016-12-01 | Samsung Electronics Co., Ltd. | Data-optimized neural network traversal |
US20190220742A1 (en) * | 2018-01-17 | 2019-07-18 | Mediatek Inc. | Neural network engine with tile-based execution |
US20190279095A1 (en) * | 2018-03-12 | 2019-09-12 | Robert Bosch Gmbh | Method and device for operating a neural network in a memory-efficient manner |
US20210089355A1 (en) * | 2018-06-13 | 2021-03-25 | Huawei Technologies Co., Ltd. | Memory Allocation Method and Apparatus for Neural Network |
US20210295138A1 (en) * | 2020-03-18 | 2021-09-23 | Arm Limited | Neural network processing |
US20220284582A1 (en) * | 2021-03-03 | 2022-09-08 | Nvidia Corporation | Selecting a neural network based on an amount of memory |
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160350645A1 (en) * | 2015-05-29 | 2016-12-01 | Samsung Electronics Co., Ltd. | Data-optimized neural network traversal |
US20190220742A1 (en) * | 2018-01-17 | 2019-07-18 | Mediatek Inc. | Neural network engine with tile-based execution |
US20190279095A1 (en) * | 2018-03-12 | 2019-09-12 | Robert Bosch Gmbh | Method and device for operating a neural network in a memory-efficient manner |
US20210089355A1 (en) * | 2018-06-13 | 2021-03-25 | Huawei Technologies Co., Ltd. | Memory Allocation Method and Apparatus for Neural Network |
US20210295138A1 (en) * | 2020-03-18 | 2021-09-23 | Arm Limited | Neural network processing |
US20220284582A1 (en) * | 2021-03-03 | 2022-09-08 | Nvidia Corporation | Selecting a neural network based on an amount of memory |
Non-Patent Citations (1)
Title |
---|
JACKSON FARLEY et al, "MAFAT: Memory-Aware Fusing and Tiling of Neural Networks for Accelerated Edge Inference", 18.07.2023, URL: https://arxiv.org/pdf/2107.06960. * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10664310B2 (en) | Memory access optimisation using per-layer computational mapping and memory allocation for CNN application | |
US20220261615A1 (en) | Neural network devices and methods of operating the same | |
CN110046702B (zh) | 神经网络计算加速器及其执行的方法 | |
US20240119255A1 (en) | Methods and apparatus to tile walk a tensor for convolution operations | |
US20200234124A1 (en) | Winograd transform convolution operations for neural networks | |
Zhang et al. | DNNBuilder: An automated tool for building high-performance DNN hardware accelerators for FPGAs | |
KR102610820B1 (ko) | 뉴럴 네트워크 시스템 및 뉴럴 네트워크 시스템의 동작방법 | |
US11550543B2 (en) | Semiconductor memory device employing processing in memory (PIM) and method of operating the semiconductor memory device | |
JP7304148B2 (ja) | ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置 | |
US10643382B2 (en) | Application of convolutional neural networks to object meshes | |
KR20190030034A (ko) | 뉴럴 네트워크 모델을 변형하는 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법 | |
WO2022057420A1 (zh) | 数据处理方法、装置、电子设备以及存储介质 | |
US11436017B2 (en) | Data temporary storage apparatus, data temporary storage method and operation method | |
CN108304925B (zh) | 一种池化计算装置及方法 | |
KR102107077B1 (ko) | 컨볼루션 신경망 추론에서 컨볼루션 연산을 수행하기 위한 라인 단위 메모리 관리 방법 및 그 추론 장치 | |
US20240046082A1 (en) | Method and device with neural network implementation | |
US20220083857A1 (en) | Convolutional neural network operation method and device | |
TWI775210B (zh) | 用於卷積運算的資料劃分方法及處理器 | |
WO2018158293A1 (en) | Allocation of computational units in object classification | |
JP7165018B2 (ja) | 情報処理装置、情報処理方法 | |
KR20210039197A (ko) | 데이터를 처리하는 방법 및 장치 | |
CN114201107A (zh) | 存储装置、操作存储装置的方法以及电子装置 | |
US20220113944A1 (en) | Arithmetic processing device | |
RU2820172C1 (ru) | Способ обработки данных посредством нейронной сети, подвергнутой декомпозиции с учетом объема памяти вычислительного устройства (варианты), и компьютерно-читаемый носитель | |
CN114254731A (zh) | 用于神经网络操作的方法和设备 |