СПОСОБ И УСТРОЙСТВО ДЛЯ ОБРАБОТКИ ЗАДАЧ НА ОСНОВЕ НЕЙРОННОЙ СЕТИ
METHOD AND APPARATUS FOR PROCESSING TASKS BASED ON A NEURAL NETWORK

[0001] Данная заявка представляет собой национальную фазу России международной заявки № РСТ CN 2019/102139, поданной 23 августа 2019 года, которая испрашивает приоритет на основании заявки на патент Китая №201811180174.5, поданной 10 октября 2018 года, содержание которой полностью включено в настоящий документ посредством ссылки.
Область техники, к которой относится настоящее изобретение
[0003] Настоящее изобретение относится к области технологий вычислительных сетей, в частности, к способу и устройству для обработки задач на основе нейронной сети.
Предшествующий уровень техники настоящего изобретения
[0003] В условиях быстрого развития технологий искусственного интеллекта способы машинного обучения, предоставляемые глубинными нейронными сетями, применяются при машинном распознавании образов, распознавании речи и в прочих сферах, и становятся «горячими точками» исследований.
[0004] При фактическом развертывании основанного на нейронной сети приложения необходимо обратить внимание, помимо потребления вычислительных ресурсов самой сетью, на общую задержку времени и производительность этого приложения по осуществлению управления. В настоящее время при практическом использовании приложений, особенно приложений реального времени, устанавливаемых в мобильных терминалах, для ускорения вычислений каждого слоя нейронной сети обычно используется многоядерный процессор. Иначе говоря, вычислительные задачи каждого сетевого слоя нейронной сети распределяются среди множества процессорных ядер, осуществляющих обработку данных, таким образом, что вычисления одного и того же слоя выполняются множеством процессорных ядер.
Краткое раскрытие настоящего изобретения
[0005] Вариантами настоящего изобретения предложен способ и устройство для обработки задач на основе нейронной сети.
[0006] В соответствии с первым аспектом настоящего изобретения предложен способ обработки задач на основе нейтронной сети согласно одному из вариантов осуществления заявленного изобретения. Этот способ предусматривает: получение по меньшей мере двух сетевых модулей путем разделения сетевых слоев в нейронной сети на основании количества каналов между соседними сетевыми слоями в нейронной сети; получение входных данных, причем входные данные предназначены для запуска потоковых задач и представляют собой исходные входные данные или кэш-данные для обмена, причем получение входных данных предусматривает: определение условия запуска для генерирования потоковых задач в ответ на определение в ходе отслеживания того, что данные записаны в пространстве целевого кэша, соответственно считываемым потоковыми задачами, и определение данных, записанных в пространстве целевого кэша, в качестве входных данных, причем модульные потоки привязаны к потоковым задачам во взаимно-однозначном соответствии, а потоковые задачи привязаны к пространству целевого кэша; генерирование данных результата обработки путем планирования по меньшей мере двух соответствующих модульных потоков в параллельном режиме на основании по меньшей мере двух запущенных потоковых задач для обработки входных данных, при этом по меньшей мере два модульных потока соотносятся, соответственно по меньшей мере с двумя сетевыми модулями на основании разделения сетевых слоев в нейронной сети; и выдачу в кэш данных результата обработки в качестве обмениваемых кэш-данных других модульных потоков или выдачу данных результата обработки в качестве результата обработки исходных входных данных; при этом модульные потоки включают в себя, по меньшей мере, начальный модульный поток и конечный модульный поток, причем планирование начального модульного потока на основании запущенной потоковой задачи для обработки входных данных предусматривает: вызов начального модульного потока для предобработки исходных входных данных, осуществление обработки задачи с использованием начального сетевого модуля нейронной сети, и передачу данных результата обработки в кэш в качестве кэш-данных для обмена; а планирование конечного модульного потока на основании запущенной потоковой задачи для обработки входных данных предусматривает: вызов конечного модульного потока для получения из кэша соответствующих кэш-данных для обмена в качестве входных данных, осуществления обработки задачи с использованием конечного сетевого модуля нейронной сети, и постобработку и выдачу данных результата обработки в качестве результата обработки исходных входных данных.
[0007] В соответствии со вторым аспектом настоящего изобретения предложено устройство для обработки задач на основе нейронной сети согласно одному из вариантов осуществления заявленного изобретения. Это устройство включает в себя: модуль разделения сети, выполненный с возможностью получения по меньшей мере двух сетевых модулей путем разделения сетевых слоев в нейронной сети на основании количества каналов между соседними сетевыми слоями в нейронной сети; модуль получения входных данных, выполненный с возможностью получения входных данных, причем входные данные предназначены для запуска потоковых задач и представляют собой исходные входные данные или кэш-данные для обмена; модуль планирования модульных потоков, выполненный с возможностью генерирования данных результата обработки путем планирования по меньшей мере двух соответствующих модульных потоков в параллельном режиме на основании по меньшей мере двух запущенных потоковых задач для обработки входных данных, причем по меньшей мере два модульных потока соотносятся, соответственно по меньшей мере с двумя сетевыми модулями на основании разделения сетевых слоев в нейронной сети, причем модульные потоки включают в себя, по меньшей мере, начальный модульный поток и конечный модульный поток, выполненные, в частности, с возможностью планирования начального модульного потока на основании запущенной потоковой задачи для обработки входных данных и планирования конечного модульного потока на основании запущенной потоковой задачи для обработки входных данных, причем планирование начального модульного потока на основании запущенной потоковой задачи для обработки входных данных предусматривает: вызов начального модульного потока для предобработки исходных входных данных, осуществление обработки задачи с использованием начального сетевого модуля нейронной сети, и передачу данных результата обработки в кэш в качестве кэш-данных для обмена, а планирование конечного модульного потока на основании запущенной потоковой задачи для обработки входных данных предусматривает: вызов конечного модульного потока для получения из кэша соответствующих кэш-данных для обмена в качестве входных данных, осуществление обработки задачи с использованием конечного сетевого модуля нейронной сети, и постобработку и выдачу данных результата обработки в качестве результата обработки исходных входных данных; модуль выдачи данных результатов обработки, выполненный с возможностью выдачи в кэш данных результата обработки в качестве обмениваемых кэш-данных других модульных потоков или выдачи данных результата обработки в качестве результата обработки исходных входных данных; и подмодуль определения, выполненный с возможностью определения условия запуска для генерирования потоковых задач в ответ на определение в ходе отслеживания, выполняемого подмодулем отслеживания, того, что данные записаны в пространстве целевого кэша, соответственно считываемым потоковыми задачами, и определения данных, записанных в пространстве целевого кэша, в качестве входных данных, причем модульные потоки привязаны к потоковым задачам во взаимно-однозначном соответствии, а потоковые задачи привязаны к пространству целевого кэша.
[0008] В соответствии с третьим аспектом настоящего изобретения предложено устройство согласно одному из вариантов осуществления заявленного изобретения. Это устройство включает в себя процессор и память для хранения в ней по меньшей мере одной команды; причем эта команда при ее исполнении процессором инициирует выполнение устройством способа обработки задач на основе нейронной сети согласно первому аспекту настоящего изобретения.
[0009] Согласно четвертому аспекту настоящего изобретения предложен машиночитаемый носитель данных, предназначенный для хранения по меньшей мере одной команды; при этом, по меньше мере, одна команда при ее исполнении процессором или устройством инициирует выполнение способа обработки задач на основе нейронной сети согласно первому аспекту настоящего изобретения.
Краткое описание фигур
[0010] На фиг. 1 представлена блок-схема, иллюстрирующая алгоритм реализации способа обработки задач на основе на нейронной сети согласно одному из вариантов осуществления настоящего изобретения;
[0011] На фиг. 2 представлена схема, иллюстрирующая два модульных потока, выполняющих задачи двух сетевых модулей в параллельном режиме согласно одному из вариантов осуществления настоящего изобретения;
[0012] На фиг. 3 показана схема обмена данными между двумя модульными потоками согласно одному из вариантов осуществления настоящего изобретения;
[0013] На фиг. 4 показана схема обмена данными между начальным модульным потоком, промежуточным модульным потоком и конечным модульным потоком согласно одному из вариантов осуществления настоящего изобретения;
[0014] На фиг. 5 показана структурная схема устройства для обработки задач на основе нейронной сети, согласно одному из вариантов осуществления настоящего изобретения; и
[0015] На фиг. 6 показана структурная схема устройства согласно одному из вариантов осуществления настоящего изобретения.
Подробное раскрытие настоящего изобретения
[0016] При практической реализации настоящего изобретения заявитель установил, что задачи по вычислениям в нейронной сети представляют собой задачи последовательного исполнения. Иначе говоря, для получения окончательного результата данные, вводимые в нейронную сеть, обрабатываются в разных слоях нейронной сети в последовательном режиме. На известном уровне техники для ускорения обработки задач в приложениях, связанных с нейронной сетью, часто используется многоядерный процессор. Например, для приложений, которые не обязательно должны выполняться синхронно, таких как облачное распознавание, разным ядрам процессора обычно ставится множество схожих отвлеченных задач для вычисления методом пакетной обработки с тем, чтобы получить в теории максимальную степень параллельности, когда затрачиваемое на каждую задачу время ограничено. Однако это решение не поддерживает приложения, которые должны выполняться синхронно, а именно приложения, которые требуют воспроизведения в реальном масштабе времени. Для приложений, которые должны выполняться синхронно, а именно в визуализируемом трехмерном пространстве, где требуется синхронное выполнение, обычно принимается к использованию другое решение, где в качестве структурной единицы нейронной сети берется однослойный канал, и которое ускоряет вычисление каждого слоя на базе многоядерного процессора. Например, используется пакет nnPack, предназначенный для ускорения вычислений нейронной сети; или же для ускорения используется алгоритм с оптимизированными уровнями вычислений многоядерным процессором, содержащийся в библиотеке OpenBlas матричных вычислений с открытым исходным кодом. Поскольку для каждого слоя нейронной сети предусмотрена только одна степень параллельности, это решение эффективно только в том случае, если на каждый слой затрачивается больше времени. Однако такое многоядерное решение не может быть эффективно использовано для ускорения в случае, если на каждый слой затрачивается меньше времени, поскольку время, затрачиваемое на распределение вычислительных задач среди множества процессорных ядер и получение результатов вычислений с множества ядер, может превышать время, затрачиваемое на сами вычисления; например, в случае если время в расчете на один слой обычно составляет менее 0,5 миллисекунды, дополнительное ресурсопотребление, обусловленное планированием среди множества ядер, может превышать ресурсопотребление на сами вычисления, что приводит к уменьшению коэффициента ускорения вычислений. Например, для мобильных нейронных сетей или нейронных сетей реального времени количество сетевых слоев в их структуре относительно велико, а количество однослойных каналов относительно невелико, причем на каждый слой обычно затрачивается менее 0,5 миллисекунды. При этом потребление дополнительных ресурсов при многоядерном планировании обычно примерно равно потреблению дополнительных ресурсов при вычислении однослойной сети, причем многоядерная обработка выполняется медленнее, чем одноядерная обработка. Как можно видеть, известный уровень техники сталкивается со следующей дилеммой: для приложений, которые должны выполняться синхронно, решение, использующее в качестве структурной единицы однослойный канал, эффективно только в том случае, если на каждый слой затрачивается больше времени; а для приложений, которые не обязательно должны выполняться синхронно, время, затрачиваемое в этом решении на каждую задачу, должно быть ограничено, но такое решение не подходит для приложений, требующих воспроизведения в режиме реального времени.
[0017] Вариантами осуществления настоящего изобретения предложен новаторский способ обработки задач на основе нейронной сети. Согласно одному из конкретных вариантов осуществления настоящего изобретения входные данные могут обрабатываться путем планирования в параллельном режиме по меньшей мере двух модульных потоков, соответствующих двум сетевым модулям нейронной сети, с тем, чтобы в значительной мере сократить время, затрачиваемое на вычисления в нейронной сети и повысить производительность, а именно, полностью задействовать производительность множества процессорных ядер для ускорения работы связанных с нейронной сетью приложений, обеспечивая возможность отображения приложений в реальном масштабе времени. Получение сетевых модулей основано на предварительном разделении сетевых слоев в нейронной сети. Один сетевой модуль может включать в себя по меньшей мере один сетевой слой, но варианты осуществления настоящего изобретения этим решением не ограничены.
[0018] На практике для ускорения обработки задач приложений нейронной сети многоядерным процессором сетевые слои в нейронной сети могут быть заранее разделены для получения по меньшей мере двух сетевых модулей. Каждый сетевой модуль включает в себя по меньшей мере один сетевой слой. В начале операции с использованием сетевых модулей, на основании разделения нейронной сети, создается пул потоков, содержащий по меньшей мере два потока; причем каждый поток в составе пула потоков может соответствовать исполнению уникального сетевого модуля. В вариантах осуществления настоящего изобретения потоки, соответствующие сетевым модулям в пуле потоков, называются модульными потоками, а задачи, которые должны выполняться каждым сетевым модулем в нейронной сети, выполняются, соответственно, путем планирования модульных потоков в параллельном режиме для повышения коэффициента ускорения вычислений, благодаря чему повышается эффективность работы связанных с нейронной сетью приложений, обеспечиваемая многоядерном процессором.
[0019] На фиг. 1 представлена блок-схема, иллюстрирующая алгоритм реализации способа обработки задач на основе нейронной сети согласно одному из вариантов осуществления настоящего изобретения, причем этот способ предусматривает выполнение стадий 110-130.
[0020] На стадии 110 обеспечивается получение входных данных, причем входные данные предназначены для запуска потоковых задач и представляют собой исходные входные данные или кэш-данные для обмена.
[0021] Согласно одному из вариантов осуществления настоящего изобретения предусмотрено, что при необходимости обработки задач обеспечивается получение входных данных для задач, которые должны быть выполнены на данный момент времени, вследствие чего запускаются соответствующие потоковые задачи, подлежащие обработке, исходя из полученных на данный момент времени входных данных. В этом случае входные данные, полученные на данный момент времени, используются для запуска потоковых задач и включают в себя данные, не относящиеся к обработке задач, такие как исходные входные данные и кэш-данные для обмена, но варианты осуществления настоящего изобретения этим решением не ограничены.
[0022] Следует отметить, что исходные входные данные в вариантах осуществления настоящего изобретения относятся к исходным данным, необходимым для обработки задач, таким как данные кадра изображения, которые требуются для выполнения задач по распознаванию изображения. Кэш-данные для обмена относятся к данным в кэше, которыми обмениваются разные потоки, причем кэш-данные хранятся в пространстве кэша.
[0023] На стадии 120 происходит генерирование данных результата обработки путем планирования по меньшей мере двух соответствующих модульных потоков в параллельном режиме на основании по меньшей мере двух запущенных потоковых задач для обработки входных данных, причем по меньшей мере два модульных потока соотносятся, соответственно по меньшей мере с двумя сетевыми модулями на основании разделения сетевых слоев в нейронной сети.
[0024] В этом варианте осуществления настоящего изобретения предусмотрено, что после получения входных данных выполняется параллельное планирование по меньшей мере двух модульных потоков из числа пула потоков на основании по меньшей мере двух потоковых задач, запущенных входными данными, вследствие чего входные данные обрабатываются, по меньшей мере, двумя запланированными модульными потоками, генерируя данные результата обработки. При этом данные результата обработки относятся к данным, полученным после завершения модульными потоками обработки задач с использованием соответствующих сетевых модулей.
[0025] Например, после параллельного планирования двух модульных потоков, таких как первый модульный поток и второй модульный поток, генерируются данные результата обработки после того, как в параллельном режиме были обработаны входные данные с использованием двух запланированных модульных потоков, и которые включают в себя первые данные результата обработки и вторые данные результата обработки, сгенерированные двумя модульными потоками. При этом первые данные результата обработки представляют собой данные, сгенерированные после обработки задачи первым модульным потоком с использованием соответствующего ему первого сетевого модуля. Вторые данные результата обработки представляют собой данные, сгенерированные после обработки задачи вторым модульным потоком с использованием соответствующего ему второго сетевого модуля. Следует отметить, что первый модульный поток привязан к первому сетевому модулю, соответствуя исполнению первого сетевого модуля. Аналогичным образом второй модульный поток привязан ко второму сетевому модулю, соответствуя исполнению второго сетевого модуля.
[0026] Разумеется, в случае, если параллельно планируются, по меньшей мере, три модульных потока, то генерируемые данные результата обработки включают в себя данные результата, которые могут быть получены после обработки запланированных, по меньшей мере, трех модульных потоков, но варианты осуществления настоящего изобретения этим решением не ограничены. Например, по завершении планирования первого модульного потока, второго модульного потока и третьего модульного потока в параллельном режиме генерируются данные результата обработки после обработки полученных исходных входных данных или кэш-данных для обмена, соответственно, первым модульным потоком, вторым модульным потоком и третьим модульным потоком, причем указанные данные включают в себя первые данные результата обработки, сгенерированные первым модульным потоком, вторые данные результата обработки, сгенерированные вторым модульным потоком, третьи данные результата обработки, сгенерированные третьим модульным потоком, и т.д.
[0027] На стадии 130 данные результата обработки передаются в кэш в виде обмениваемых кэш-данных модульных потоков, исключая по меньшей мере два модульных потока; или же данные результата обработки выдаются в виде результата обработки исходных входных данных.
[0028] В этом варианте осуществления настоящего изобретения предусмотрено, что после генерирования данных результата обработки модульными потоками эти данные выдаются с использованием сетевых модулей, соответствующих модульным потокам. В одном из иллюстративных вариантов осуществления настоящего изобретения предусмотрено, что если сетевой модуль, соответствующий модульному потоку, представляет собой начальный сетевой модуль или промежуточный сетевой модуль нейронной сети, то данные результата обработки, сгенерированные модульным потоком, передаются в кэш в качестве обмениваемых кэш-данных для взаимодействия с модульными потоками, исключая по меньшей мере два модульных потока. Иначе говоря, данные результата обработки, сгенерированные модульным потоком, используются в качестве входных данных для следующего модульного потока с тем, чтобы следующий модульный поток мог выполнить обработку следующей задачи, например, задачи следующего сетевого модуля в нейронной сети на основании данных результата обработки, сгенерированных этим модульным потоком. В случае если сетевой модуль, соответствующий модульному потоку, представляет собой конечный сетевой модуль в нейронной сети, то данные результата обработки, генерируемые модульным потоком, определяются как результат обработки исходных входных данных и выводятся с тем, чтобы приложения, связанные с нейронной сетью, могли использовать результат обработки для обработки коммерческой информации, удовлетворяя тем самым бизнес-требования.
[0029] Следует отметить, что результат обработки исходных входных данных в этом варианте осуществления настоящего изобретения используются для определения характеристик выходных данных результата после обработки исходных входных данных нейронной сетью.
[0030] В этом варианте осуществления настоящего изобретения начальный сетевой модуль представляет собой первый сетевой модуль, полученный после разделения нейронной сети; при этом он выполнен с возможностью приема исходных входных данных, переданных в нейронную сеть, а также с дополнительной возможностью выполнения задачи, которая должна быть выполнена сетевым слоем, содержащимся в начальном сетевом модуле. Начальный сетевой модуль включает в себя входной сетевой слой (а именно входной слой нейронной сети) для приема входных данных в нейронной сети, или дополнительно включает в себя по меньшей мере один другой сетевой слой нейронной сети, и т.д., но варианты осуществления настоящего изобретения этим решением не ограничены.
[0031] Кроме того, в этом варианте осуществления настоящего изобретения конечный сетевой модуль представляет собой последний сетевой модуль, полученный после разделения нейронной сети; при этом он выполнен с возможностью выдачи результата обработки исходных входных данных, а также с дополнительной возможностью выполнения задачи, которая должна быть выполнена сетевым слоем, содержащимся в конечном сетевом модуле. Конечный сетевой модуль включает в себя сетевой слой (а именно выходной слой нейронной сети) для выдачи результата обработки в нейронной сети, или дополнительно включает в себя по меньшей мере один другой сетевой слой нейронной сети, и т.д., но варианты осуществления настоящего изобретения этим решением не ограничены.
[0032] Соответственно, в этом варианте осуществления настоящего изобретения промежуточный сетевой модуль включает в себя по меньшей мере один промежуточный сетевой слой нейронной сети и относится к сетевому слою, отличному от первого сетевого слоя и последнего сетевого слоя нейронной сети. Например, в случае, если нейронная сеть включает в себя пять нейронных слоев, то промежуточный сетевой модуль будет включать в себя второй, третий и четвертый сетевые слои, последовательно соединенные в нейронной сети; или же промежуточный сетевой модуль будет включать в себя третий сетевой слой и четвертый сетевой слой; или же промежуточный сетевой модуль будет включать в себя только третий сетевой слой. В одном из иллюстративных вариантов осуществления настоящего изобретения предусмотрено, что если начальный сетевой модуль включает в себя первый сетевой слой, а конечный сетевой модуль включает в себя пятый сетевой слой, то промежуточный сетевой модуль будет включать в себя второй сетевой слой, третий сетевой слой и четвертый сетевой слой; или же, если начальный сетевой модуль включает в себя первый сетевой слой и второй сетевой слой, которые соединены последовательно, а конечный сетевой модуль включает в себя пятый сетевой слой, то промежуточный сетевой модуль будет включать в себя третий сетевой слой или четвертый сетевой слой; или же, если начальный сетевой модуль включает в себя первый сетевой слой и второй сетевой слой, которые соединены последовательно, а конечный сетевой модуль включает в себя пятый сетевой слой и четвертый сетевой слой, то промежуточный сетевой модуль будет включать в себя только третий сетевой слой; и т.д.
[0033] Резюмируем, что согласно этому варианту осуществления настоящего изобретения после получения входных данных, используемых для запуска потоковых задач, может быть параллельно запланировано по меньшей мере два соответствующих модульных потока на основании по меньшей мере двух запущенных потоковых задач, после чего входные данные могут быть подвергнуты обработке; при этом по меньшей мере два модульных потока, запланированных параллельно, соотносятся, соответственно по меньшей мере с двумя сетевыми модулями с учетом разделения сетевых слоев в нейронной сети. Иначе говоря, задачи разных сетевых модулей в нейронной сети назначаются разным модульным потокам для их исполнения в параллельном режиме, что в значительной мере сокращает время, затрачиваемое на вычисление нейронной сети. Таким образом, повышается эффективность работы связанных с нейронной сетью приложений, обеспечиваемая многоядерном процессором, а также предотвращается низкая производительность связанных с нейронной сетью приложений в отношении вычислений, которые на известном уровне техники выполняются многоядерным процессором, благодаря чему приложения реального времени могут в полной мере задействовать вычислительные возможности множества ядер для ускорения вычислений, обеспечивая широкий спектр применения.
[0034] В одном из вариантов осуществления настоящего изобретения способ обработки задач может быть использован в качестве способа оптимизации проектирования и дополнительно применяться в различных приложениях, развертываемых на базе нейронной сети, в качестве автономного компонента в форме библиотеки или исходного кода для любого приложения, связанного с нейронной сетью, чтобы устройство, выполненное с множеством процессорных ядер, могло в полной мере задействовать производительность множества процессорных ядер, удовлетворяя тем самым требования режима реального времени. Например, на основе способа согласно этому варианту осуществления настоящего изобретения может быть записана соответствующая многопоточная логика, которая может быть затем интегрирована в приложение в виде библиотеки или исходного кода с тем, чтобы устройство, такое как мобильный телефон, могло в полной мере воспользоваться преимуществом многоядерной производительности с целью ускорения обработки вычислительных задач этим приложением, полностью задействуя аппаратные ресурсы.
[0035] В другом варианте осуществления настоящего изобретения нейронная сеть может быть заранее разделена с целью разбивки сетевых слоев нейронной сети на N-oe количество сетевых модулей с тем, чтобы задачи, исполняемые сетевыми слоями в нейронной сети, могли быть соответствующим образом обработаны N-ым числом модульных потоков, соответствующих N-ому числу сетевых модулей, обеспечивая тем самым возможность выполнения задач каждого сетевого модуля нейронной сети в параллельном режиме. В контексте настоящего документа величина N является целым числом, превышающим единицу, и используется для отображения числа сетевых модулей, полученных после разделения нейронной сети. Следовательно, в одном из вариантов осуществления настоящего изобретения предусмотрено, что перед получением входных данных предложенный способ может дополнительно предусматривать получение по меньшей мере двух сетевых модулей путем разделения сетевых слоев в нейронной сети. Следует отметить, что каждый сетевой модуль, полученный после разделения, включает в себя по меньшей мере один сетевой слой в нейронной сети, например по меньшей мере один сверточный слой в сверточной нейронной сети и тому подобное, но варианты осуществления настоящего изобретения этим решением не ограничены.
[0036] В еще одном варианте осуществления настоящего изобретения для упрощения обмена данными между разными сетевыми модулями выбирается один сетевой слой с вводом и выводом в нейронной сети в качестве точки соединения между сетевыми модулями. Например, получение по меньшей мере двух сетевых модулей путем разделения сетевых слоев в нейронной сети предусматривает: определение количества каналов между двумя соседними сетевыми слоями в нейронной сети; выделение первого сетевого слоя из числа соседних сетевых слоев в качестве входного слоя, вводящего сетевой модуль, и выделение второго сетевого слоя из числа соседних сетевых слоев в качестве выходного слоя, выводящего сетевой модуль, в ответ на определение того, что между соседними сетевыми слоями предусмотрен один канал; и генерирование по меньшей мере двух сетевых модулей на базе выходного слоя, выводящего сетевой модуль, и входного слоя, вводящего сетевой модуль.
[0037] В еще одном варианте осуществления настоящего изобретения предусмотрено, что при разделении нейронной сети определяется топологическая структура нейронной сети, и могут быть определены сетевые слои, входящие в нейронную сеть; например, может быть определена сверточная нейронная сеть (CNN), включающая в себя входной слой, сверточный слой, выборочный слой и тому подобное. Кроме того, определяется количество каналов между сетевыми слоями, входящими в нейронную сеть; например, может быть установлено количество каналов между соседними сетевыми слоями в нейронной сети. После этого обеспечивается получение по меньшей мере двух сетевых модулей путем разделения сетевых слоев в нейронной сети на основании количества каналов между двумя соседними сетевыми слоями в нейронной сети.
[0038] В еще одном варианте осуществления настоящего изобретения может быть принято решение о том, разделять ли соседние сетевые слои на разные сетевые модули на основании определения наличия одного канала между соседними сетевыми слоями в нейронной сети. Например, если между двумя соседними сетевыми слоями в нейронной сети предусмотрен один канал, т.е. если между соседними сетевыми слоями предусмотрен один канал, то может быть установлено, что первый сетевой слой из числа соседних сетевых слоев выдает данные на второй сетевой слой из числа соседних сетевых слоев по одному каналу; и, таким образом, первый сетевой слой из числа соседних сетевых слоев выделяется в качестве входного слоя, вводящего сетевой модуль, а второй сетевой слой из числа соседних сетевых слоев выделяется в качестве выходного слоя, выводящего сетевой модуль. После этого на основании выходного слоя, выводящего сетевой модуль, и входного слоя, вводящего сетевой модуль, определяются по меньшей мере два сетевых модуля. При этом данные, передаваемые первым сетевым слоем, используются в качестве входных данных для второго сетевого слоя, т.е. второй сетевой слой из числа соседних сетевых слоев получает входные данные, выдаваемые первым сетевым слоем по одному каналу.
[0039] В еще одном варианте осуществления настоящего изобретения значение расхождения между временем обработки сетевых модулей, полученных после разделения нейронной сети, будет меньше заданного порогового значения. Например, в этом варианте осуществления настоящего изобретения нейронная сеть делиться на основании времени, потребного для обработки задач каждым сетевым модулем в нейронной сети, таким образом, чтобы значение расхождения между временем обработки сетевых модулей, полученных после разделения нейронной сети, было меньше заданного порогового значения, благодаря чему обеспечивается балансировка потребления ресурсов и параллельной работы. Если в самой нейронной сети предусмотрены сегменты предобработки и постобработки, то каждый сегмент обработки данных, в зависимости от затрачиваемого им времени, может быть использован в качестве модуля или части модуля, участвующего в разделении. Иначе говоря, исходя из времени обработки сегментов предобработки и постобработки самой сети, сегмент предобработки самой сети может рассматриваться как модуль или часть модуля, участвующего в разделении сетевых модулей, равно как и сегмент постобработки самой сети может рассматриваться как модуль или часть модуля, участвующего в разделении сетевых модулей. При фактическом исполнении время, затрачиваемое сегментами предобработки и постобработки самой сети, может быть сокращено; и, таким образом, окончательно затраченное время может быть равно самому длительному времени обработки сетевого модуля из числа модулей, полученных после разделения.
[0040] В еще одном варианте осуществления настоящего изобретения сеть CNN разделяется на N-oe число сетевых модулей в отключенном состоянии или в состоянии подключения; при этом время, затрачиваемое сетевыми модулями, примерно одинаково. Задачи каждого сетевого модуля ставятся разным модульным потокам для последующего выполнения. Каждый кадр данных изображения, подлежащих обработке приложением CNN, обрабатывается в последовательном режиме N-ым числом модульных потоков, которое соответствует N-ому числу сетевых модулей, полученных после разделения нейронной сети, причем общее затрачиваемое время остается без изменений. Однако с общих позиций приложения CNN количество кадров данных изображения, обрабатываемых за единицу времени, увеличивается в N раз. Например, если величина N равна двум, то предобработка может выполняться модульным потоком, соответствующим первому сетевому модулю (CNN1), а постобработка может выполняться модульным потоком, соответствующим второму сетевому модулю (CNN2). Как показано на фиг. 2, время Δt1, необходимое для обработки кадра изображения, может быть сокращено до половины времени Δt2, затрачиваемого при реализации первоначального способа последовательного выполнения, вследствие чего увеличивается количество кадров, соответствующее данным кадра изображения, обрабатываемым приложением CNN за единицу времени, сокращается время обновления кадров изображения и повышается частота смены кадров, отображаемая приложением CNN, вследствие чего улучшается пользовательское восприятие.
[0041] При этом можно видеть, что согласно способу обработки на основе нейронной сети, предложенному этим вариантом осуществления настоящего изобретения, обработка данных соседних кадров изображения может быть инкорпорирована в параллельную обработку. Иначе говоря, данные соседних кадров изображения обрабатываются параллельно, по меньшей мере, двумя запланированными сетевыми модулями, благодаря чему для ускорения вычислений полностью задействуется производительность множества ядер при условии сохранения последовательности операций в отношении кадров изображения.
[0042] В еще одном варианте осуществления настоящего изобретения модульные потоки привязаны к процессорным ядрам во взаимно-однозначном соответствии, вследствие чего задачи сетевых модулей после разделения могут выполняться параллельно множеством разных процессорных ядер, и многоядерным процессором может быть ускорена работа приложения CNN. Иначе говоря, множество ядер может быть эффективно использовано для ускорения вычислений, и может быть достигнута цель полного задействования аппаратных ресурсов. Например, для некоторых устройств, снабженных графическими процессорами (GPU), в случае выполнения приложением CNN таких операций, как рендеринг и отображение данных на этих устройствах, способ обработки задач согласно вариантам осуществления настоящего изобретения может быть принят к использованию для ускорения выполнения вычислительных задач, которые должны быть выполнены приложением CNN, с использованием ресурсов GPU, благодаря чему время, затрачиваемое на вычисления CNN, может быть в значительной мере сокращено, удовлетворяя тем самым требования режима реального времени.
[0043] В еще одном варианте осуществления настоящего изобретения по меньшей мере два модульных потока могут включать в себя, по меньшей мере, начальный модульный поток и конечный модульный поток. Начальный модульный поток относится к потоку, соответствующего начальному сетевому модулю, полученному после разделения нейронной сети, и он может быть использован для выполнения задачи начального сетевого модуля. Конечный модульный поток относится к потоку, соответствующего конечному сетевому модулю, полученному после разделения нейронной сети, и он может быть использован для выполнения задачи конечного сетевого модуля. Планирование по меньшей мере двух соответствующих модульных потоков в параллельном режиме на основании по меньшей мере двух запущенных потоковых задач для обработки входных данных предусматривает: планирование начального модульного потока на основании запущенной потоковой задачи для обработки входных данных; и планирование конечного модульного потока на основании запущенной потоковой задачи для обработки входных данных.
[0044] В еще одном варианте осуществления настоящего изобретения планирование начального модульного потока на основании запущенной потоковой задачи для обработки входных данных предусматривает: вызов начального модульного потока для предобработки исходных входных данных; осуществление обработки задачи с использованием начального сетевого модуля нейронной сети, соответствующего начальному модульному потоку; и передачу данных результата обработки в кэш в качестве кэш-данных для обмена. Планирование конечного модульного потока на основании запущенной потоковой задачи для обработки входных данных предусматривает: вызов конечного модульного потока для получения из кэша соответствующих кэш-данных для обмена в качестве входных данных; осуществление обработки задачи с использованием конечного сетевого модуля нейронной сети, соответствующего конечному модульному потоку; и постобработку и выдачу данных результата обработки в качестве результата обработки исходных входных данных.
[0045] В еще одном варианте осуществления настоящего изобретения предусмотрено, что после разделения сетевых слоев в сверточной нейронной сети на два сетевых модуля, первый и второй сетевые модули (CNN1 и CNN2), полученные после разделения, называются, соответственно, начальным сетевым модулем и конечным сетевым модулем. Кроме того, поток, привязанный к начальному сетевому модулю, называется начальным модульным потоком; а поток, привязанный к конечному сетевому модулю, называется конечным модульным потоком. Как показано на фиг. 3, после получения входных данных кадра изображения планируется начальный модульный поток, соответствующий первому сетевому модулю CNN1, на основании потоковой задачи, запущенной данными кадра изображении, для предобработки входных данных кадра изображения; выполняется обработка задачи с использованием начального сетевого модуля (а именно первого сетевого модуля CNN1) нейронной сети для генерирования первых данных результата обработки; и первые данные результата обработки передаются в кэш с тем, чтобы первые данные результата обработки могли быть использованы в качестве кэш-данных для обмена, передаваемых в конечный модульный поток, соответствующий второму сетевому модулю CNN2, на стадии синхронизации. Иначе говоря, кэш-данные для обмена используются в качестве входных данных конечного модульного потока для запуска конечного модульного потока с целью выполнения задачи с использованием второго сетевого модуля CNN2.
[0046] Следует отметить, что новые данные кадра изображения записываются в кэш ввода, соответствующий начальному модульному потоку, на стадии синхронизации, а первые данные результата обработки, выводимые начальным модульным потоком, используются в качестве кэш-данных для обмена, которые должны быть переданы в кэш ввода, соответствующий конечному модульному потоку, методом пинг-понгового обмена кэш-данными в качестве входных данных для конечного модульного потока. Как показано на фиг. 3, первые данные результата обработки, выданные начальным модульным потоком в кэш вывода, передаются в кэш ввода, соответствующий конечному модульному потоку, через заданный циклический барьер в качестве входных данных для конечного модульного потока, вследствие чего конечный модульный поток может получить из своего кэша ввода первые данные результата обработки, сгенерированные начальным сетевым модулем, для последующей обработки задачи.
[0047] В еще одном варианте осуществления настоящего изобретения нейронная сеть представляет собой сверточную нейронную сеть, а полученные исходные входные данные представляют собой данные кадра изображения. Соответственно, предобработка представляет собой предобработку изображения, а постобработка представляет собой постобработку изображения. После постобработки изображения выполняется еще одна обработка, например, рендеринг изображения, но варианты осуществления настоящего изобретения этим решением не ограничены.
[0048] В еще одном варианте осуществления настоящего изобретения указанные модульные потоки дополнительно включают в себя по меньшей мере один промежуточный модульный поток. Например, сетевые модули, полученные после разделения нейронной сети, дополнительно включают в себя по меньшей мере один промежуточный сетевой модуль. Следовательно по меньшей мере два модульных потока, планируемые в параллельном режиме, дополнительно включают в себя по меньшей мере один промежуточный модульный поток, соответствующий промежуточному сетевому модулю, причем этот промежуточный модульный поток используется для выполнения задачи промежуточного сетевого модуля. Планирование по меньшей мере двух соответствующих модульных потоков в параллельном режиме на основании по меньшей мере двух запущенных потоковых задач для обработки входных данных предусматривает: планирование, по меньшей мере, одного промежуточного модульного потока на основании запущенной потоковой задачи для обработки входных данных.
[0049] В еще одном варианте осуществления настоящего изобретения планирование, по меньшей мере, одного промежуточного модульного потока на основании запущенной потоковой задачи для обработки входных данных предусматривает: вызов, по меньшей мере, одного промежуточного модульного потока для получения из кэша соответствующих кэш-данных для обмена в качестве входных данных; осуществление обработки задачи с использованием промежуточного сетевого модуля нейронной сети; и передачу данных результата обработки в кэш в качестве кэш-данных для обмена. В одном из иллюстративных вариантов осуществления настоящего изобретения промежуточная потоковая задача запускается на основании кэш-данных для обмена, введенных начальным модульным потоком в процесс обработки задачи; при этом промежуточный модульный поток, соответствующий промежуточному сетевому модулю, вызывается на основании запущенной промежуточной потоковой задачи для осуществления обработки задачи по кэш-данным для обмена, выданных начальным модульным потоком, с целью генерирования промежуточных данных результата обработки; а промежуточные данные результата обработки передаются в кэш в качестве кэш-данных для обмена со следующим промежуточным модульным потоком или конечным модульным потоком.
[0050] Поскольку сетевые модули, полученные после разделения нейронной сети, могут взаимно-однозначно соответствовать модульным потокам, как это показано на фиг. 4, после разделения сетевых слоев в сверточной нейронной сети на три сетевых модуля первый сетевой модуль CNN1, второй сетевой модуль CNN2 и третий сетевой модуль CNN3, которые были получены после указанного разделения, называются, соответственно, начальным сетевым модулем, промежуточным сетевым модулем и конечным сетевым модулем. Модульный поток, соответствующий первому сетевому модулю CNN1, называется начальным модульным потоком; модульный поток, соответствующий второму сетевому модулю CNN2, называется промежуточным модульным потоком; а модульный поток, соответствующий третьему сетевому модулю CNN3, называется конечным модульным потоком. Кроме того, сетевые модули и модульные потоки могут находиться в соответствующем взаимно-однозначном соответствии. Таким образом, обмен данными между каждыми двумя модульными потоками реализуется путем отслеживания относящихся к ним уникальных потребляемых потоков.
[0051] Например, как показано на фиг.4, начальный модульный поток осуществляет предобработку изображения по входным данным кадра изображения, осуществляет обработку задачи с использованием первого сетевого модуля CNN1 нейронной сети для генерирования первых данных результата обработки и передает первые данные результата обработки к кэш А. Промежуточный модульный поток получает кэш-данные для обмена, записанные в пространстве целевого кэша, соответствующего потоковой задаче, которую должен выполнить промежуточный модульный поток; осуществляет обработку задачи с использованием второго сетевого модуля CNN2 нейронной сети для генерирования промежуточных данных результата обработки; и передает промежуточные данные результата обработки в кэш В. Конечный модульный поток получает кэш-данные для обмена, записанные в пространстве целевого кэша (а именно кэша А, показанного на фиг. 4), соответствующего потоковой задаче, которую должен выполнить конечный модульный поток; осуществляет обработку задачи с использованием третьего сетевого модуля CNN3 нейронной сети; затем выполняет постобработку и рендеринг изображения по данным результата обработки, полученным после обработки задачи, с целью получения результата обработки исходных входных данных; и по результату обработки осуществляет вывод данных, например, на дисплей интерфейса приложения, связанного со сверточной нейронной сетью.
[0052] В процессе обмена данными этот обмен данными происходит в следующей последовательности: поочередно сзади вперед. Как показано на фиг. 4, сначала происходит обмен данными между кэшем В и кэшем С, после чего происходит обмен данными, которые передаются во второй поток, между кэшем А и кэшем С. Иначе говоря, последовательность обмена данными противоположна последовательности выполнения модульных потоков. В другом варианте осуществления настоящего изобретения время, затрачиваемое вторым сетевым модулем CNN2, примерно равно времени, которое затрачивается первым сетевым модулем CNN1, и времени постобработки изображения, или примерно равно времени, которое затрачивается третьим сетевым модулем CNN3, и времени постобработки, вследствие чего три запущенных модульных потока обладают максимальным коэффициентом полезного действия.
[0053] В еще одном варианте осуществления настоящего изобретения получение входных данных предусматривает: определение условия запуска для генерирования потоковых задач в случае, если в ходе отслеживания было установлено, что данные записаны в пространстве целевого кэша, соответственно считываемым потоковыми задачами; и определение данных, записанных в пространстве целевого кэша, в качестве входных данных; при этом модульные потоки привязаны к потоковым задачам во взаимно-однозначном соответствии, а потоковые задачи привязаны к пространству целевого кэша. В одном из иллюстративных вариантов осуществления настоящего изобретения факт генерирования условия запуска потоковых задач устанавливается на основании того, записаны ли данные в пространстве целевого кэша, соответственно считываемым потоковыми задачами. Если в ходе отслеживания установлено, что данные записаны в пространстве целевого кэша, соответственно считываемым потоковыми задачами, то определяется, что условие запуска для генерирования потоковых задач сгенерировано, а данные, записанные в пространстве целевого кэша, используются в качестве входных данных для запуска соответствующих потоковых задач на основании входных данных. После получения входных данных из пространства целевого кэша осуществляется планирование соответствующих модульных потоков в параллельном режиме на основании запущенных потоковых задач для обработки входных данных этих задач.
[0054] Резюмируем, что согласно этому варианту осуществления настоящего изобретения полная проектная сеть делится на множество сетевых модулей, схожих по затратам времени. Каждый сетевой модуль соответствует одному модульному потоку так, что задачи разных сетевых модулей могут быть поставлены разным модульным потокам для их последующего выполнения. Кроме того, каждый модульный поток назначается разным процессорным ядрам, вследствие чего задачи разных сетевых модулей могут выполняться с использованием разных процессорных ядер, обеспечивая тем самым возможность полного использования аппаратных ресурсов. Например, в полной мере задействуются ресурсы графического процессора устройств и производительность множества ядер мобильных устройств. Таким образом, приложения реального времени могут в полной мере задействовать вычислительные возможности множества ядер для ускорения вычислений, что повышает производительность и существенно сокращает время, затрачиваемое на сетевые вычисления. Например, повышается производительность приложений, связанных со сверточной нейронной сетью, в отношении вычислений, выполняемых многоядерным процессором, и ускоряется работа связанных с CNN приложений, удовлетворяя тем самым требования режима реального времени.
[0055] Кроме того, в этом варианте осуществления настоящего изобретения сегменты предобработки и постобработки, которые необходимы для приложения нейронной сети, могут быть использованы в качестве стороннего модуля, участвующего в разделении сетевых слоев, благодаря чему сокращается потребление ресурсов на обработку, отображение и рендеринг данных и тому подобное. Более того, в этом варианте осуществления настоящего изобретения модульные потоки привязаны к потоковым задачам, вследствие чего синхронизация данных между разными модульными потоками может осуществляться только через простой пинг-понговый кэш. Таким образом, сокращается потребление ресурсов на синхронизацию данных между множеством потоков, предотвращается низкая производительность многопоточного режима, обусловленная чрезмерным потреблением ресурсов на синхронизацию, и обеспечивается поддержка приложений, требующих синхронизации, без изменения порядка выполнения задач в соответствии с данными кадра изображения.
[0056] Следует отметить, что для упрощения описания вариантов осуществления способа согласно настоящему изобретения эти варианты осуществления описаны в виде ряда взаимосвязанных операций. Однако специалистам в данной области техники следует понимать, что варианты осуществления настоящего изобретения не ограничены описанными последовательностями операций. Следовательно, некоторые стадии могут быть реализованы в иных последовательностях или одновременно в зависимости от вариантов осуществления настоящего изобретения.
[0057] Далее обратимся к фиг. 5, на которой показана структурная схема устройства для обработки задач на основе нейронной сети согласно одному из вариантов осуществления настоящего изобретения, причем устройство для обработки задач на основе нейронной сети включает в себя модуль 510 получения входных данных, модуль 520 планирования модульных потоков и модуль 530 вывода данных результата обработки.
[0058] Модуль 510 получения входных данных выполнен с возможностью получения входных данных; при этом предполагается, что входные данные запускают потоковые задачи и представляют собой исходные входные данные или кэш-данные для обмена.
[0059] Модуль 520 планирования модульных потоков выполнен с возможностью генерирования данных результата обработки путем планирования по меньшей мере двух соответствующих модульных потоков в параллельном режиме на основании по меньшей мере двух запущенных потоковых задач для обработки входных данных; при этом по меньшей мере два модульных потока соотносятся, соответственно по меньшей мере с двумя сетевыми модулями на основании разделения сетевых слоев в нейронной сети.
[0060] Модуль 530 вывода данных результата обработки выполнен с возможностью передачи данных результата обработки в кэш в качестве обмениваемых кэш-данных модульных потоков, за исключением по меньшей мере двух модульных потоков, или для вывода данных результата обработки в качестве результата обработки исходных входных данных.
[0061] В одном из вариантов осуществления настоящего изобретения устройство для обработки задач на основе нейронной сети дополнительно включает в себя: модуль разделения сетевых слоев. Модуль разделения сетевых слоев выполнен с возможностью получения по меньшей мере двух сетевых модулей путем разделения сетевых слоев в нейронной сети.
[0062] В другом варианте осуществления настоящего изобретения модуль разделения сетевых слоев может включать в себя подмодуль определения количества каналов, подмодуль разделения сетевых слоев и модуль генерирования сетевых модулей.
[0063] Подмодуль определения количества каналов выполнен с возможностью определения количества каналов между соседними сетевыми слоями в нейронной сети.
[0064] Подмодуль разделения сетевых слоев выполнен с возможностью выделения первого сетевого слоя из числа соседних сетевых слоев в качестве входного слоя, вводящего сетевой модуль, и выделения второго сетевого слоя из числа соседних сетевых слоев в качестве выходного слоя, выводящего сетевой модуль в ответ на определение того, что что между соседними сетевыми слоями предусмотрен один канал.
[0065] Модуль генерирования сетевых модулей выполнен с возможностью генерирования по меньшей мере двух сетевых модулей с использованием выходного слоя для вывода сетевого модуля и входного слоя для ввода сетевого модуля.
[0066] В другом варианте осуществления настоящего изобретения значение расхождения между временем обработки сетевых модулей будет меньше заданного порогового значения.
[0067] В еще одном варианте осуществления настоящего изобретения по меньшей мере два модульных потока могут включать в себя, по меньшей мере, начальный модульный поток и конечный модульный поток. Модуль 520 планирования модульных потоков выполнен с возможностью планирования начального модульного потока на основании запущенной потоковой задачи для обработки входных данных и с возможностью планирования конечного модульного потока на основании запущенной потоковой задачи для обработки входных данных. При этом планирование начального модульного потока на основании запущенной потоковой задачи для обработки входных данных предусматривает: вызов начального модульного потока для предобработки исходных входных данных; осуществление обработки задачи с использованием начального сетевого модуля нейронной сети, соответствующего начальному модульному потоку; и передачу данных результата обработки в кэш в качестве кэш-данных для обмена. Планирование конечного модульного потока на основании запущенной потоковой задачи для обработки входных данных предусматривает: вызов конечного модульного потока для получения из кэша соответствующих кэш-данных для обмена в качестве входных данных; осуществления обработки задачи с использованием конечного сетевого модуля нейронной сети, соответствующего конечному модульному потоку; и постобработку и выдачу данных результата обработки в качестве результата обработки исходных входных данных.
[0068] В еще одном варианте осуществления настоящего изобретения модуль 520 планирования модульных потоков включает в себя подмодуль планирования начального модульного потока и подмодуль планирования конечного модульного потока.
[0069] Подмодуль планирования начального модульного потока выполнен с возможностью вызова начального модульного потока для предобработки исходных входных данных, осуществления обработки задачи с использованием начального сетевого модуля нейронной сети, соответствующего начальному модульному потоку, и передачи данных результата обработки в кэш в качестве кэш-данных для обмена.
[0070] Подмодуль планирования конечного модульного потока выполнен с возможностью вызова конечного модульного потока для получения из кэша соответствующих кэш-данных для обмена в качестве входных данных; осуществления обработки задачи с использованием конечного сетевого модуля нейронной сети, соответствующего конечному модульному потоку, и постобработки и выдачи данных результата обработки в качестве результата обработки исходных входных данных.
[0071] Разумеется, в этом варианте осуществления настоящего изобретения модуль 520 планирования модульных потоков может дополнительно включать в себя и другие подмодули. Например, модуль 520 планирования модульных потоков может дополнительно включать в себя по меньшей мере один подмодуль планирования промежуточного модульного потока, выполненный с возможностью планирования промежуточного модульного потока на основании запущенной потоковой задачи для обработки входных данных с целью генерирования данных результата обработки, соответствующих промежуточному модульному потоку, и т.п. В другом варианте осуществления настоящего изобретения данные результата обработки, соответствующие промежуточному модульному потоку, могут быть переданы в кэш в качестве кэш-данных для обмена, а кэш-данные для обмена могут быть использованы в качестве входных данных для следующего модульного потока, связанного с промежуточным модульным потоком, чтобы следующий модульный поток мог получить кэш-данные для обмена с целью обработки задачи.
[0072] В другом варианте осуществления настоящего изобретения модульные потоки могут дополнительно включать в себя по меньшей мере один промежуточный модульный поток. Модуль 520 планирования модульных потоков может быть выполнен с возможностью планирования, по меньшей мере, одного промежуточного модульного потока на основании запущенной потоковой задачи для обработки входных данных. При этом планирование, по меньшей мере, одного промежуточного модульного потока на основании запущенной потоковой задачи для обработки входных данных предусматривает: вызов, по меньшей мере, одного промежуточного модульного потока для получения из кэша соответствующих кэш-данных для обмена в качестве входных данных; осуществление обработки задачи с использованием промежуточного сетевого модуля нейронной сети; и передачу в кэш данных результата обработки в качестве кэш-данных для обмена.
[0073] Модуль 520 планирования модульных потоков может дополнительно включать в себя подмодуль планирования промежуточного модульного потока. Подмодуль планирования промежуточного модульного потока выполнен с возможностью вызова промежуточного модульного потока для получения из кэша соответствующих кэш-данных для обмена в качестве входных данных; осуществления обработки задачи с использованием промежуточного сетевого модуля; и передачи данных результата обработки в кэш в качестве кэш-данных для обмена.
[0074] В другом варианте осуществления настоящего изобретения исходные входные данные могут представлять собой данные кадра изображения; предобработка может представлять собой предобработку изображения; постобработка может представлять собой рендеринг изображения; а нейтральной сетью может служить сверточная нейронная сеть.
[0075] В еще одном варианте осуществления настоящего изобретения модуль 510 получения входных данных включает в себя подмодуль отслеживания и подмодуль определения.
[0076] Подмодуль отслеживания выполнен с возможностью отслеживания пространства целевого кэша, соответственно считываемого потоковыми задачами, например, отслеживания того, записаны ли данные в пространстве целевого кэша, соответственно считываемого потоковыми задачами, и т.п.
[0077] Подмодуль определения выполнен с возможностью определения условия запуска для генерирования потоковых задач в ответ на отслеживание мониторами подмодуля данных, записанных в пространстве целевого кэша, соответственно считываемого потоковыми задачами, и определения данных, записанных в пространстве целевого кэша в качестве входных данных. При этом модульные потоки привязаны к потоковым задачам во взаимно-однозначном соответствии, а потоковые задачи привязаны к пространству целевого кэша.
[0078] В другом варианте осуществления настоящего изобретения потоковые задачи привязаны к процессорным ядрам во взаимно-однозначном соответствии.
[0079] Следует отметить, что указанное устройство для обработки задач на основе нейронной сети может реализовывать способ обработки задач на основе нейронной сети согласно любому варианту осуществления настоящего изобретения.
[0080] В еще одном варианте осуществления настоящего изобретения указанное устройство для обработки задач на основе нейронной сети может быть интегрировано в другое устройство. Это устройство может состоять, по меньшей мере, из двух физических объектов или одного физического объекта. Например, этим устройством может служить персональный компьютер (PC), компьютер, мобильный телефон, планшетное устройство, карманный персональный компьютер, сервер, устройство-мессенджер, игровая консоль или иное устройство подобного рода.
[0081] Согласно одному из вариантов осуществления настоящего изобретения предложено устройство. Это устройство включает в себя процессор и память. В памяти хранится, по меньшей мере, одна команда, которая при ее исполнении процессором инициирует реализацию устройством способа обработки задач на основе нейронной сети согласно любому из вариантов осуществления настоящего изобретения.
[0082] На фиг.6 показана структурная схема устройства согласно одному из вариантов осуществления настоящего изобретения. Как показано на фиг.6, это устройство включает в себя: процессор 60, память 61, экран 62 дисплея с сенсорной функцией, устройство 63 ввода, устройство 64 вывода и устройство 65 связи. Количество процессоров 60 в устройстве может быть равно, по меньшей мере, одному, и количество блоков памяти 61 в устройстве может быть равно, по меньшей мере, одному. На фиг.6 в качестве примера приведен один процессор 60 и одна память 61. Процессор 60, память 61, экран 62 дисплея, устройство 63 ввода, устройство 64 вывода и устройство 65 связи указанного устройства могут быть соединены друг с другом посредством шины или с помощью иных средств. На фиг. 6 в качестве примера показано соединение посредством шины.
[0083] Представляя собой машиночитаемый носитель данных, память 61 выполнена с возможностью хранения программных продуктов, программ и модулей, выполняемых компьютером, таких как программные команды/модули (например, модуль 510 получения входных данных, модуль 520 планирования модульных потоков, модуль 530 вывода данных результата обработки и прочие модули в составе устройства для обработки задач), соответствующие способу определения задач, описанному в любом из вариантов осуществления настоящего изобретения. Память 61 может включать в себя, главным образом, область хранения программы и область хранения данных. В области хранения программы может храниться рабочая программа устройства и прикладная программа, необходимая для выполнения по меньшей мере одной функции. В области хранения данных могут храниться данные, генерируемые во время использования устройства, и прочие данные. Кроме того, память 61 может включать в себя быстродействующее оперативное запоминающее устройство, и может дополнительно включать в себя энергонезависимую память, такую как, как, по меньшей мере, одно запоминающее устройство на магнитных дисках, флеш-память или иные энергонезависимые твердотельные запоминающие устройства. В некоторых примерах осуществления память 61 может дополнительно включать в себя блоки памяти, расположенные удаленно относительно процессора 60, причем эти удаленные блоки памяти могут быть соединены с устройством по сети. Примерами таких сетей могут служить, помимо прочего, сеть Интернет, сеть Интранет, локальная вычислительная сеть, сеть мобильной связи и сочетания указанных сетей.
[0084] Экран 62 дисплея снабжен сенсорной функцией, и он может представлять собой емкостной экран, электромагнитный экран или инфракрасный экран. В общем, экран 62 дисплея выполнен с возможностью отображения данных по командам процессора 60 и с дополнительной возможностью восприятия касаний экрана 62 дисплея и передачи соответствующих сигналов на процессор или другие устройства. В одном из иллюстративных вариантов осуществления настоящего изобретения предусмотрено, что если экран 62 дисплея представляет собой инфракрасный экран, то экран 62 дисплея дополнительно включает в себя инфракрасную сенсорную рамку. Инфракрасная сенсорная рамка располагается по окружности дисплея 62 и выполнена с возможностью приема инфракрасного сигнала и передачи инфракрасного сигнала на процессор 60 или другие устройства.
[0085] Устройство 65 связи выполнено с возможностью установления коммуникационного соединения с другими устройствами и может представлять собой, по меньшей мере, одно из таких устройств, как проводное устройство связи или беспроводное устройство связи.
[0086] Устройство 63 ввода выполнено с возможностью приема входной цифровой или текстовой информации и генерирования входного сигнала ключа, относящегося к пользовательским настройкам и управлению функциями устройства, причем оно дополнительно сконфигурировано в виде камеры для получения изображений и звукоприемного устройства для получения аудиоданных. Устройство 64 вывода может включать в себя аудиоустройство, такое как динамик. Следует отметить, что состав устройства 63 ввода и устройства 64 вывода может быть задан с учетом фактических условий.
[0087] Процессор 60 приводит в исполнение различные функциональные приложения и осуществляет обработку данных устройства путем выполнения программных продуктов, команд и модулей, хранящихся в памяти 61, для реализации описанного выше способа обработки задач на основе нейронной сети.
[0088] В другом варианте осуществления настоящего изобретения, по меньшей мере, одна программа, хранящаяся в памяти 61, при ее выполнении процессором 60 инициирует реализацию этим процессором следующих операций: получения входных данных, причем входные данные предназначены для запуска потоковых задач и представляют собой исходные входные данные или кэш-данные для обмена; генерирования данных результата обработки путем планирования по меньшей мере двух соответствующих модульных потоков в параллельном режиме на основании по меньшей мере двух запущенных потоковых задач для обработки входных данных, причем по меньшей мере два модульных потока соотносятся, соответственно по меньшей мере с двумя сетевыми модулями на основании разделения сетевых слоев в нейронной сети; и выдачи в кэш данных результата обработки в качестве обмениваемых кэш-данных модульных потоков, за исключением по меньшей мере двух модульных потоков, или выдачи данных результата обработки в качестве результата обработки исходных входных данных.
[0089] Согласно одному из вариантов осуществления настоящего изобретения дополнительно предложен машиночитаемый носитель для хранения данных по меньшей мере одной команды. По меньшей мере, одна команда при ее исполнении процессором устройства инициирует реализацию устройством способа обработки задач на основе нейронной сети согласно любому из описанных выше вариантов его осуществления. В одном из иллюстративных примеров осуществления настоящего изобретения способ обработки задач на основе нейронной сети предусматривает: получение входных данных, причем входные данные предназначены для запуска потоковых задач и представляют собой исходные входные данные или кэш-данные для обмена; генерирование данных результата обработки путем планирования по меньшей мере двух соответствующих модульных потоков в параллельном режиме на основании по меньшей мере двух запущенных потоковых задач для обработки входных данных, причем по меньшей мере два модульных потока соотносятся, соответственно по меньшей мере с двумя сетевыми модулями на основании разделения сетевых слоев в нейронной сети; и выдачу в кэш данных результата обработки в качестве обмениваемых кэш-данных модульных потоков, за исключением по меньшей мере двух модульных потоков, или выдачу данных результата обработки в качестве результата обработки исходных входных данных.
[0090] Следует отметить, что для вариантов осуществления устройств и носителя данных представлено относительно простое описание, поскольку они по существу схожи с вариантами описания способа, и их соответствующие части соотносятся с частичным описанием вариантов осуществления способа.
[0091] После ознакомления с полным описанием вариантов осуществления настоящего изобретения специалистам в данной области техники должно быть понятно, что заявленное изобретение может быть реализовано программными средствами и необходимыми универсальными аппаратными средствами. Разумеется, оно может быть также реализовано аппаратными средствами. Исходя по существу из этого понимания, описанные выше технические решения заявленного изобретения в целом или в тех своих частях, которые улучшают известный уровень техники могут быть реализованы в виде программного продукта. Компьютерный программный продукт может храниться в машиночитаемом носителе данных, таком как гибкий магнитный диск для компьютеров, постоянное запоминающее устройство (ROM), оперативное запоминающее устройство (RAM), флеш-память (FLASH), жесткий диск, оптический диск или иное устройство подобного рода, которое содержит множество команд, обеспечивающее возможность реализации вычислительным устройством (которым может служить робот, персональный компьютер, сервер, сетевое устройство или иное устройство подобного рода) способа обработки задач на основе нейронной сети согласно любому из вариантов осуществления настоящего изобретения.
[0092] Стоит отметить, что разделение всех блоков и модулей, входящих в состав описанного выше устройства для обработки задач на основе нейронной сети, является разделением лишь по логическим функциям, но не ограничено только этим решением при условии, что при этом обеспечивается возможность выполнения указанными блоками и модулями соответствующих функций. Кроме того, названия всех функциональных модулей представлены исключительно для удобства проведения различия между ними и не претендуют на ограничение объема правовой охраны настоящего изобретения.
[0093] Следует понимать, что различные части настоящего изобретения могут быть реализованы аппаратными средствами, программными средствами или встроенными программами или сочетанием указанных средств. В описанных выше вариантах осуществления заявленного изобретения различные стадии или способы могут быть реализованы с помощью программных средств или встроенных программ, хранящихся в памяти и исполняемых подходящим устройством обработки команд. Например, если различные стадии или способы реализуются аппаратно, как в другом варианте осуществления настоящего изобретения, то различные стадии или способы могут быть реализованы с использованием любой одной или сочетания следующих технологий, известных на данном уровне техники: логической схемы на дискретных компонентах, снабженной логическим элементом, выполненным с возможностью реализации логических функций информационных сигналов; специализированной заказной интегральной схемы с комбинационным логическим элементом подходящего типа; программируемой логической матрицы (PGA), программируемой логической матрицы типа FPGA; или иного устройства подобного рода.
[0094] В описании настоящего изобретения описание соответствующих терминов, таких как «один из вариантов осуществления», «некоторые варианты осуществления», «один из примеров осуществления», «конкретные примеры осуществления» или «некоторые примеры осуществления», означает конкретные признаки, структуры, материалы или характеристики, описанные в привязке к определенному варианту осуществления настоящего изобретения, которые включены, по меньшей мере, в один из вариантов или примеров осуществления заявленного изобретения. В представленном описании схематическое представление терминов не обязательно относится к одному и тому же варианту или примеру осуществления. Более того, описанные конкретные признаки, структуры, материалы или характеристики могут быть объединены любым подходящим способом в любом одном или нескольких вариантах или примерах осуществления настоящего изобретения.