Easyelectronics.ru

Электроника для всех
Текущее время: 20 янв 2022, 00:20

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Использование нейросетевых ускорителей для FIR
СообщениеДобавлено: 09 авг 2021, 23:29 
Старожил

Зарегистрирован: 08 июн 2015, 16:26
Сообщения: 729
В свете моды на нейросети все больше железа получает аппаратный ускоритель сверточных сетей. В k210 китайском, во всех последних GPU от Nvidia, в beaglebone... Много где, в общем, с этим делом теперь можно развлекаться.
У меня ввиду этого вопрос практичный и приземленный - поскольку основу работы нейросетей и львиную долю расчетов занимают свертки - нельзя ли каким-то образом натравить имеющиеся ускорители нейросетей на простые и понятные FIR'ы.
Есть потому что уже немало задач, связанных с необходимостью обрабатывать входные данные FIR'ами от 128 коэффициентов и выше. Хотелось бы задействовать имеющуюся вычислительную дурь у популярных процессоров и одноплатников для этих нужд.
Кто-нибудь с таким сталкивался, может что сказать по этому поводу? Понятно, что там в нейросетевых ускорителях не все так просто, с учетом функций активации и прочих узлов нейронов... Но, может, как-то можно все-таки "выродить" нейросеть в FIR и потом реализовать на том же Jetson Nano или k210?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование нейросетевых ускорителей для FIR
СообщениеДобавлено: 10 авг 2021, 12:50 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 3022
Откуда: Санкт-Петербург
Э... Так вроде ж можно просто на GPU сделать, без специальной поддержки нейросетей.
/me в этом не разбирается, но запрос "свёртка на GPU" выдаёт статьи по CUDA, где всё это описано. Эстеты-староверы могут сделать без CUDA, на чистом OpenGL :-). Там не очень сложно получается - один fragment shader перемножает входные данные на коэффициенты, потом ещё несколько последовательно суммируют пары соседних точек, пока из 128 не получите одну. Но, наверное, эффективно будет, только если разом много данных обрабатывать, а то могут получиться заметные накладные расходы на создание текстур и чтение результатов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование нейросетевых ускорителей для FIR
СообщениеДобавлено: 10 авг 2021, 13:23 
Старожил

Зарегистрирован: 08 июн 2015, 16:26
Сообщения: 729
Ну да, с Nvidia все вроде бы очевидно - берем CUDA или OpenGL, а оно уже само распорядится в драйвере, какие блоки использовать...
С AM75xx, который в beaglebone AI, тоже все понятно, там для этих дел OpenCL задействован.
Интереснее с более специфичным k210 - у него есть CNN-ускоритель, пока я о нем совсем немного знаю - кроме того, что вроде бы как поддерживает OpenCV. Быстрое гугление на предмет реализации FIR'ов не дало результатов, видимо обстоятельно копать, или даже на практике проверять...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование нейросетевых ускорителей для FIR
СообщениеДобавлено: 10 авг 2021, 14:53 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 3022
Откуда: Санкт-Петербург
Судя по https://balmerdx.livejournal.com/189092.html – должно быть совсем просто, заметно проще, чем через CUDA, OpenGL/OpenCL и т.п.
Но надо SDK смотреть.

UPD: Упс... Проще-то проще, но применимость ограничена. "для ядра 3x3" – похоже, халявы не будет :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование нейросетевых ускорителей для FIR
СообщениеДобавлено: 10 авг 2021, 16:26 
Старожил

Зарегистрирован: 08 июн 2015, 16:26
Сообщения: 729
М-да, адаптировать ядра 3х3 под длинные FIR - может оказаться тоже самое, что писать против ветра.
Но на заметку статью возьму, спасибо в любом случае. Вдруг чего в голову взбредет...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование нейросетевых ускорителей для FIR
СообщениеДобавлено: 10 авг 2021, 16:49 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 3022
Откуда: Санкт-Петербург
Кстати, интересная задачка получается.
Берём произвольный FIR-фильтр и пытаемся его приблизить цепочкой фильтров с ядром из трёх элементов:
a1*x[t-1]+b1*x[t]+c1*x[t+1]
a2*x[t-2]+b2*x[t]+c2*x[t+2]
a4*x[t-4]+b4*x[t]+c4*x[t+4]
a8*x[t-8]+b1*x[t]+c8*x[t+8]
...
(ну, номера могут быть другие, какие-то могут встречаться несколько раз – главное, чтобы их было сильно меньше 128...)
Вопрос – насколько точно удастся приблизить. Второй вопрос – какова будет погрешность такого фильтра (при вычислении с ограниченной разрядностью) и в каком порядке лучше применять фильтры.

Ну и. понятно, если удастся так приблизить – выигрыш будет и без аппаратного ускорителя.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование нейросетевых ускорителей для FIR
СообщениеДобавлено: 10 авг 2021, 20:05 
Старожил

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 3375
Если очень надо делать КИХ на нейроускорителе типа того же к210 или Edge TPU, тогда наверное есть смысл пытаться свести его к свёртке (правда размерность очень неудачная, производительность будет проценты от теоретического максимума). Всё же лучше поискать платформу с поддержкой BLAS (тот же Jetson) и сделать на нём.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование нейросетевых ускорителей для FIR
СообщениеДобавлено: 10 авг 2021, 21:00 
Старожил

Зарегистрирован: 08 июн 2015, 16:26
Сообщения: 729
Пока не очень много думал, времени не было, но так, если прикинуть хрен к носу - толку будет мало, практически никакой разницы с софтовой реализацией, надо брать CUDA или нормальные DSP.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB