Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Всегда пожалуйста) жаль редко находится время писать.
Естественно, применять FPGA имеет смысл уже на этапе применения нейросети (для обучения в большинстве случаев маловато памяти).
Исключительно интересный и хорошо изложеный материал! Несмотря на объем, читается на одном дыхании! Спасибо за труды!
Почему в случае нейросетей речь идёт о FP16 и даже int8? Неужели нейросетям вполне себе позволительно насколько неточно работать с данными?
P.S. А ещё такие нейросети бывают:
https://habr.com/ru/post/418847/
А ещё такие нейросети бывают:Точнее — не сети, а акселераторы. Да, забавно. Оптический акселератор, инференс которого напечатан на 3D принтере и вычисления со скоростью света за один такт — это, конечно, клевая идея ). Вопрос, как скоро это может до реальной жизни дойти.
habr.com/ru/post/418847
обрабатывать на скоростях до десятков тыщь FPS c latency такой что получаем ответ нейросети сразу как заканчивается приём кадра.Прям бальзамом поливаете мою израненную душу! )
часто очень хорошо помогает дизеринг в ряде местдизеринг коэффициентов? В смысле не просто округлять, а добавлять шумы? Хотите сказать, что везде при сжатии для FPGA просто округляют?
Вопрос, насколько это реально.

заточенные под такое неравномерное квантование и переложение на FPGA (и ASIC)
дизеринг коэффициентов?нет дизеринг промежуточных результатов вычислений, когда вычисляешь в FixedPoint результат dot product а — в битах как два Fractional part, и на одну дробную часть бит надо сдвинуть — вот тут имеет смысл иногда добавлять дизеринг, а иногда он вреден, а иногда бесполезен например после fc этапа в софтмакс всё равно запрессуется по экспоненте и к мелочам придираться бесполезно.
В общем, FPGA в новом свете современных нагрузок и требований — это реально круто и это направление надо копать ;)С одним «но» — если специализированные TPU/GPU не побьют их по соотношению «цена/качество», им это проще, поскольку они (пока?))) более массовые.
Обратите внимание на новшества в архитектуре — появляются блоки спец.вычислителей для нейросетей вместо/в дополнение к dsp-блокам у Xilinx и у Achronix, а также на количество интерфейсов к DDR.У вас один из наиболее содержательных комментариев к статье. У меня пару дней заняло вкурить ваши ссылки (и что открывалось по ним). Крайне интересно!
Серьезная проблема FPGA состоит в сложности программирования для нежелезячных программистовЧестно говоря, современным data scientists глубоко безразлично, что там ускоряет его сетку и где она вообще тренируется и выполняется.




Выпущенная версия Dataflow процессора не предназначена для трейнинга, так как в частности использует только целочисленные типы данных.Ок, спасибо!
Я неоднократно предлагал менеджменту публиковать бенчмарки и открыть toolchain, на что они указывали, что NVidia сами химичат с бенчмарками. Я надеюсь, что это измениться в течение года.В этой области десятки стартапов. Причем публикации лучших результатов вполне есть. И когда бенчмарки не публикуются, моя нейронная сеть (и, думаю, не только) сразу классифицирует вас, как компанию, которая делает интересные, но неконкурентоспособные вещи (с некоторой вероятностью после софтмакса, конечно))). Поскольку таких, пожалуй, большиниство.
Если вы вашу статью писал я, я бы поместил картинки с«Если бы вы преследовали мои цели...» ))) Если бы я писал ваши статьи, я бы уделил больше внимания не теории, а практическим результатам, бенчмаркам и тому, какое влияние это оказывает на производительность на видео. ;)
FPGA cells требует в несколько раз больше места на кристалле чем в standard cells на ASIC, и по частоте (если вы попробуете прямолинейно положить на FPGA стандартный встроенный CPU который на ASIC работает с частотой 2 GHz, вы можете обнаружить, что на FPGA он работает 20 MHz) итд.Это само собой. Но обратите внимание на процент комментариев к этому тексту про FPGA! Я сам, честно говоря, не ожидал. Люди массово делают решения, т.е. по соотношению цена/качество FPGA более чем конкурентоспособны сегодня. А учитывая новые поколения, в которых DSP ядра дополняют матричными вычислителями специально для нейросетей — это как раз перевод нейросетевой части с FPGA cells на условные ASIC cells и это выглядит крайне интересно, учитывая текущие успехи FPGA.
Но я понимаю вашу позицию — описывать не пространство хардверных решений, а то что есть на рынке с точки зрения софтверного пользователя этих решений.Есть (часто красивая!) теория. Есть практика. В моей родной области масса замечательных очень красивых идей, которые на практике бесполезны. Тому масса причин. Проигрывают по соотношению цена/качество (причем проигрыш может быть не в силу свойств алгоритма, а просто потому, что конкурирующее решение поддержано крайне популярными библиотеками с хорошей лицензией). Покрыты патентами (и хотя «алгоритмы не патентуются» — это большая печальная тема). Более сложны в отладке и т.д… И они реально мало кого интересуют.
С текущим бурным развитием нейросетей имеет ли смысл разрабатывать даже универсальный нейро-процессор в ASIC? Может выгоднее стратегия накопить на FPGA библиотеку архитектурных решенийС точки зрения общего здравого смысла — вы однозначно правы! )
FPGA это вынужденная мера: они удачно совмещают относительную дешевизну, скорость вычислений и скорость прототипирования и внесения изменений по сравнению с ASIC.Спасибо за отличный расклад по FPGA/ASIC! Пусть оценки примерные, но компромиссные решения в инженерии в итоге побеждают и накрывают рынок ОЧЕНЬ часто.
Кратко: FPGA это способ ускорить и удешивить в десятки раз и сотни ASIC.
Другими словами: может лучше сделать на FPGA десяток обрабатывающих универсальных блоков на 200-300MHz и софт к нему, а когда всё уляжется быстро за год выпустить чип на тысячи универсальных блоков на гигагерцы с около нулевой себестоимостью на R&D.Портирование готового отлаженного FPGA дизайна в ASIC все равно будет долгим и дорогим (хотя и намного дешевле, чем разработка с нуля). Intel недавно прикупил себе компанию eASIC, которая ровно этим и занимается.
Портирование готового отлаженного FPGA дизайна в ASIC все равно будет долгим и дорогим
А для этого достаточно будет скиллов того кто разрабатывал для FPGA на верилоге?Нет, надо же физический дизайн (топологию кристалла) делать — все то, что в случае с FPGA за вас делает производитель FPGA.
Или обязательно надо получить пару лет опыт в крупной организации которая этим занимается?Пару лет — это еще оптимистично. Проще нанять специально отдельного человека (или отдел).
Есть ли архитекутры FPGA: Когда вместо скажем 1000 дсп блоков на 300мгц ставится 1000 дсп блоков на 3ГгцНе знаю, я в очень сильно другой области работаю.
И интересно почему по моей практике на всех что я использовал FPGA и MCU внешняя память в разы медленее чем на ПК или ARM ядрах?Тут тоже нечего прокомментировать, кроме того, что это мог быть просто неудачный личный опыт, и того, что современные MCU чаще всего и есть ARM)
И интересно почему по моей практике на всех что я использовал FPGA и MCU внешняя память в разы медленее чем на ПК или ARM ядрах?
Конечно, FPGA компенсирует последнее с помощью массивного параллелизма, но вот с computational density (количеством вычисление на квадратный миллиметр микросхемы) у него большая проблема,А если посмотреть на развитие?






ВМК МГУ Михаила ШуплецоваДа, знаю Михаила, конечно.
Так вот. Я просто хочу обратить внимание на один простой и очевидный факт.Откуда следует, что я его не понимаю? )
Разница, грубо говоря, как между компилируемым языком программирования типа Си и интерпретируемым языком программирования типа Питона. Сколько интерпретатор Питона не оптимизировать, в Си он не превратится.У вас отличный пример!
FPGA хороши для 1) прототипирования ASIC-ов; 2) специальных приложений которые из-за малого тиража не имеет смысла заказывать на фабрике (обработка сигналов или скажем сетевых пакетов) 3) образования.FPGA уже сегодня почему-то часто используют для inference. Но вы пропускаете огромную тему training, на которую нацелились те же FPGA Speedster7t и Everest (младшие модели которых, к слову, явно заточены на inference).
Смотрите — Питон заведомо менее эффективен, чем С++. И тем не менее, сегодня он прочно захватил «рынок» исследований. Причина — большое количество библиотек и фрейворков, в результате которых у вас наверху может быть Питон-ноутбук, а внизу — GPU, FPGA или любая другая эффективная железка.
FPGA хороши для 1) прототипирования ASIC-ов; 2) специальных приложений которые из-за малого тиража не имеет смысла заказывать на фабрике (обработка сигналов или скажем сетевых пакетов) 3) образования.
преобразование цветовых пространств — типичное перемножение матриц — было в каждом цветном телевизоре до середины 90-хГде это было, простите? Не в одном из трёх стандартов ЦТВ не припоминаю…
Большое спасибо за статью. Позвольте один noob question: в чем же все-таки принципиальное отличие решений ASIC и Analog?
В том, что ASIC - это хорошо проработанный и активно используемый подход, а аналоговые схемы - это новый пока недостаточно проработанный (но очень перспективный) подход.
Аппаратное ускорение глубоких нейросетей: GPU, FPGA, ASIC, TPU, VPU, IPU, DPU, NPU, RPU, NNP и другие буквы