Как стать автором
Обновить
7
0

Инженер-программист

Отправить сообщение

Все подобные выкрутасы летят прямиком в обучающий датасет - делов то..
Вопрос, думаю, встанет в конечном итоге на стороне модераторов: что блокировать, а что нет. А уж с обнаружением необходимых паттернов, похоже, GPT_3.5 справится.
Было бы интересно посмотреть на реальные возможности, пусть даже и в "песочнице"

Если обучать нейросеть на рассмотренной системе из нескольких FPGA на частоте ядра 300 МГц изображениями 640х640 и подавать на вход алгоритма 4 пикселя за такт, то для прогона 1 млн изображений необходимо около 6 минут. 

Скажите пожалуйста, это по-Вашему много или мало? Раз уж Вы отреагировали именно на эту фразу. Мне это важно.

Это верно для средних сетей.
Для передовых сколько ни плати - не получишь ускорения. Решения просто не существует! Все мои рассуждения именно про этот случай: качественно ускорить обучение там, где пока это сделать нечем.

Моё общее впечатление, что вы выбрали довольно удобный частный случай

Я выбрал для себя наиболее понятный и наглядный вариант. А самое важное - тот, который могу в одиночку реализовать. Если будет возможность, я приделаю «внимание» - тогда всё станет гораздо понятнее.

Кстати, ваша "стандартная свёрточная нейросеть" включает batch normalization или какие-то другие слои подразумевающие несколько проходов

Извините, но Ваши рассуждения мне кажутся именно «модными». Сделать всё стандартно и пусть железо тянет. В моей реализации нет нормализации, но их существует уже с десяток разных и некоторые вполне хорошо должны лечь на архитектуру ПЛИС.

Батч-нормализация, float-ы, да даже softmax – плоды ограничений существующей доминирующей архитектуры. А ещё подхода «не думать!» Я использую пороги в качестве ошибки, но и softmax с определённой точностью нормально ложится на ПЛИС — есть алгоритмы. Если вопрос именно в этом.

особенно после упоминания обучения на целочисленной математике

Снова «стандарт» Хотя, если Вы разработчик ускорителей, то Вас и должны интересовать модные инженеры с деньгами, и думать Вы должны с их точки зрения. Я это понимаю.
В то же время считаю, что float – вообще зло! Моя практика показывает, что важно, насколько точно можно подстраивать веса при обратном распространении а не абсолютный динамический диапазон. Ведь смысл float именно в возможности представить и очень большие, и очень маленькие значения.. приблизительно! А что будет, если для float16(для наглядности примера) к числу 2048 прибавить 1? А ничего, оно не изменится. То же самое верно и для чисел меньше 1. С обучением сети веса начинают изменятся всё меньше и меньше и в какой то момент большая часть начинает «терять» ошибку и наблюдается рост lossa. Я это видел благодаря int очень чётко, а вот многие этого даже не поняли — благодарности float.
И моё ИМХО таково, что батч-нормализация существует отнюдь не для выравнивания мат ожидания и дисперсии, а чтобы сузить динамический диапазон значений. Ведь существует dropout, а при нём вообще каждое новое данное имеет своё мат ожидание и дисперсию — и ничего, работает как-то.
Хотя эта тема для отдельной статьи после накопления материала. Ну или нет, если мои рассуждения — глупости))

В целом пока, конечно, можно сказать, что ты «оторван от реальности» и мне с этим будет спорить сложно, но лично я реализовав на практике чесную конвейерную нейросеть с ростом масштаба предвижу потенциальные проблемы с потоками а не с параметрами

Отличный комментарий, спасибо!

Ну и в качестве вишенки на торте. Даже если вы внезапно разработаете аппаратную часть этого проекта, не забудьте прибавить ещё два раза по столько же человеко-часов недешёвых программистов, которые будут сращивать её со всякими там TensorFlow, PyTorch

Вот по-диагонали прочитали, отсюда и вопрос. Я чётко указал, что без участия вендоров проблему широкого распространения и простого использования не решить. Они, кстати, вкладывают приличные деньги в развитие, но как я уже высказал в статье, по-моему не туда.

им нужно готовое решение которое по нажатию одной кнопки будет проглатывать их свежее творение в tf, pt или ещё каком-нить модном формате, запускать его обучение выдавая в процессе понятные этим разработчикам графики и циферблаты, и возвращать результат упакованный в тот же модный формат.

Я не согласен. "Модные циферблаты" нужны IT-отделам банков и прочим, потому, что иметь IT отдел модно. А в результате работы всё равно наверху никто толком не разберётся.

Работающий и зависящий от результата инженер не будет загонять свой "полёт фантазии(ваши слова)" в видеокарту и ждать сутки. Он будет думать сутки - а вот проверить хотел бы за полчаса. Чтобы дальше думать.

Извините, я пока далёк от практики "в поле" )
А чем CUDA не устраивает?

а что и ради чего оптимизируем - как-то упущено.

Странно, я вроде на этом как раз и делал акцент.
Сколько GPT обучается? 3 недели, месяц? А если бы она обучалась, скажем, за 2 дня - это ли не картбланш? Для ОпенАИ может и нет, а вот для догоняющих очень даже!
TOPSами мерятся действительно толку нету, но я о них и не говорил. Если Вы имеете ввиду цифры скорости потоков - то они имеют сугубо практическое значение.
А производительность считается просто(в конце статьи пример). Для обработки изображений: (пикселей в картинке / 4) * картинок в 1 эпохе * на количество эпох * (3.333пс период рабочей частоты)
Для "внимания" ещё не могу сказать, к сожалению.

Согласен, развлекаться интереснее, чем работать ))

Если правда интересно и есть минимальные компетенции в ПЛИС, что погонять вполне реально. Вот, к примеру, из нового - проект выиграл конкурс https://github.com/ptoupas/amd-open-hardware-23
Да и вообще, в плане запустить на 1 плате вендоры стараются. Мне это не интересно, но насколько знаю, контента полно и маршрут известен. Поищите информацию от производителей.

Вы правы, его нету. В REDME написал, что выложу 21 вечером. Вношу изменения для более контрастных результатов.
Извините, первая статья, в инструкции Хабра для публикации сказано, что одобрение статьи из песочницы занимает от 2-х дней - думал успею !

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Embedded Software Engineer
Lead
FPGA
SystemVerilog
Electronics Development