Pull to refresh
21
0
Михаил Клименко @NelSon29

AI Algorithm Engineer @ Intel Corp.

Send message

Хорошая статья, спасибо. Две ремарки:

  1. Intel после покупки Habana оставил линейку Gaudi, сейчас можно купить и воспользоваться Gaudi2, которая выступает на уровне A100, после окончания работ над fp8 (этой осенью) будет на уровне H100. На подходе Gaudi3, прошёл tape-out, но про него пока информации мало.

  2. Не уверен, как сейчас, но два года назад среди российских решений нормально доступен был лишь nm6408, даже с прикладным софтом. По robodeus ОКР так и не закрыли, iva tpu пока живёт только как прототип на ПЛИС.

GK Mini J4125, достаточно свежий. А win11 так и не установилась, перешёл на 10.

Корень этих проблем в максимально дешёвом SSD, без его поломки я бы и не стал систему переустанавливать.

Лучше бы не замечали. У меня через год использования посыпался SSD, переустановить ОС оказалось отдельным приключением (компьютер с установленной win11 говорит, что не поддерживает win11) и вдогонку драйвера на чипсет и компанию оказались закопаны в далеких дебрях сайта и нашлись лишь через полчаса поисков.

Спасибо за информацию и запись лекции, очень интересно, но давайте разбираться.

NVIDIA лицензировала набор набор команд ARMv8 и разработала свой процессор (как Apple с их M1), вместо покупки готового ядра. Это дало им возможность выполнять существующие программы и пользоваться преимуществами имеющейся экосистемы разработки. В то же время, они реализовали под капотом работающий в рантайме динамический оптимизатор DCO с кэшем, который может собирать операции в группы (bundles), которые будут переданы одновременно, но выполняться разное время. И задача оптимизатора в том, чтобы минимизировать зависимость по данным и максимально уровнять эти группы по времени исполнения, чтобы аппаратура не простаивала.

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

Спасибо! Интересно, как ваши коллеги это сделали, поскольку на первый взгляд прямого доступа к этим ядрам нет, а через API нет реализации преобразования Фурье (см. выше). Но мы уже достаточно сильно отдалились от темы топика.

Если у вас получится узнать, было бы здорово. Похоже, что это больше как специализированный ускоритель типичных операций для видео с управляющим Cortex-R5 и VLIW-векторным сопроцессором (вот тут, стр. 27). Сам по себе он, судя по всему, может быть использован только через VPI, а тот не предоставляет реализацию FFT на этом ускорителе. В итоге, он выглядит как неплохое подспорье, чтобы делать что-то в фоне, пока загружены CUDA-ядра и NVDLA, но не более того, поскольку в прямом сравнении с CUDA-ядрами на той же самой системе-на-кристалле оно проигрывает, местами на порядок (внизу страницы).

И второй вопрос: какую сеть вы используете, где для предобработки нужно преобразование Фурье? Потому что для типичных нейронных сетей в сфере обработки изображений сейчас стандартной предобработкой являются более простые вещи, вроде масштабирования, crop и некоего смещения.

В свёрточных нейронных сетях для современных ускорителей сейчас большинство операций — memory-bound, в том числе непосредственно свёртки (конкретный размер фильтра/кернелк зависит уже от конкретной архитектуры). Суть ведь в том, что сделать огромную систолическую матрицу в кремнии не так сложно, проблема организовать эффективную подкачку данных, чтобы аппаратура не простаивала.

А по поводу Xavier не совсем верно, там VLIW используется в блоке предобработки данных с камер. То есть да, это важный этап, но он не имеет отношения к нейросетям как таковым, а может быть использован и в традиционной обработке изображений

Если не сложно, можете подсказать, какие AI-аккселераторы с VLIW вы знаете?

Навскидку вспоминаются только векторные ядра в Myriad, но он достаточно давно не обновлялся, учитывая фокус Интела на GPU и ASIC (Habana).

Согласен, тут речь идёт только об эмуляции кабинета+микрофона. То, что это не весь тракт, однако, не мешает выходу нового оборудования в этом сегменте (CabZone от Shift-Line и Impulse IR Loader от TC Electronic), что говорит о спросе на этот класс приборов.

Про эмуляцию усилителя согласен, Neural DSP говорит о применении ИИ, но тот же Kemper, вроде, нигде не заявляет об этом и просто профилирует усилитель заданными тестовыми сигналами. Не уверен на 100%, но похоже, что там используется более традиционная обработка сигналов, возможно, на рядах Вольтерра (Вольтерры?).

Тут, к сожалению, дискуссия зашла в тупик, но такое бывает, когда опыт сильно различается.

Кому в студии будет мешать усилитель? Практика показывает, что даже направленный микрофон (как традиционный sm57) отлично ловит дополнительную реверберацию комнаты, всякие вентиляторы, шумы и прочее, от чего хочется избавиться.

Хорошо, каким образом вы реализуете этот импульсный отклик? Это делается именно КИХ-фильтром, ничего сложного в этом нет, есть оптимизированные библиотеки как под x86 (Intel IPP), так и под Cortex-M (CMSIS), не говоря уж про специализированные DSP.

UPD: вдобавок стоит отметить, что термин "импульсный отклик" это калька с английского "impulse response", что в русскоязычной радиотехнике и цифровой обработке сигналов называется "импульсная характеристика". А для применения ИХ к сигналу требуется фильтр (либо различные подходы к оптимизации свёртки, например, через FFT, но это отдельная история).

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

Спасибо большое за вашу работу! Подскажите, есть ли в планах поддержка автоматической интеграции в CMake-проекты, когда Visual Studio открывает папку? Насколько я понял из статьи, этого функционала сейчас нет

Перенос спектра сигнала (цифровой гетеродин) реализуется именно умножением на экспоненту. Можно сделать через NCO и таблицу, но по бенчмаркам на x86 этот подход не даёт сильного выигрыша относительно полноценной реализации на IPP.

В любой цифровой обработке сигналов нужна комплексная экспонента, а если её делать в реальном времени — оно становится критичным для быстродействия.

Да, это я тоже видел, очень и очень жаль, хотя с микроэлектронной точки зрения скорее всего смогли обосновать избыточным потреблением площади кристалла.

Не могу согласиться, что sin и cos редко используются, тем более в математической библиотеке. Даже больше скажу, в моём текущем проекте по результатам профилирования большую часть времени как раз занимает формирование вектора комплексной экспоненты, даже с учётом реализации с помощью Intel-овской библиотеки IPP.

Троттлинг всего процессора был в первом поколении с AVX512 (Skylake?) и это было действительно неприятно. Сейчас, вроде, они это поведение исправили и снижают частоту только у ядра, на котором используются эти инстукции.

Мне кажется, что интеграция и освоение этого набора инструкций задерживается из-за долгой реализации только в серверных CPU.

Information

Rating
Does not participate
Location
München, Bayern, Германия
Registered
Activity