Большая ложь мобильных чипмейкеров
Итак, упомянутая в предыдущем посте технология NoLACE заточена под работу на DSP (Digital Signal Processor) — специализированном процессоре внутри вашего смартфона, который отвечает за обработку сигналов. Почему именно DSP? Да, он потребляет меньше энергии и лучше справляется с потоковыми вычислениями, чем главный процессор (CPU). Однако, как же NPU? Разве не он должен работать с AI задачами? Тут есть нюансы: - DSP vs NPU: NPU (Neural Processing Unit) — это уже более продвинутый модуль для AI-задач. В теории нейросети должны бы работать на нём, но разработчики MAX решили не рисковать и использовать проверенные DSP. Почему? Во-первых, всё упирается в ограничения производительности. Да, как ни странно, NPU в современных смартфонах очень мощные для задач вчерашнего дня и слишком слабые для задач дня сегодняшнего. То есть условное выделение лиц на фотографиях, определение лиц во время съёмки и даже размытие фона при фотосъёмке — все это задачи, не требующие очень большого количества вычислительной мощи. В подтверждение: всё это довольно успешно работает даже на бюджетных смартфонах. Если говорить о цифрах, возьмём процессоры одного поколения и сравним их производительность NPU в TOPS (триллионов операций в секунду):
- Snapdragon 8s Gen 4 — 60 TOPS
- Snapdragon 7 Gen 4 — 14,7 TOPS
- Snapdragon 6 Gen 4 — точной информации нет, но судя по предыдущим поколениям, производительность NPU в этой серии уже долго колеблется в районе 5 TOPS
- Snapdragon 4s Gen 2 — ± 3.3 TOPS Итого путём нехитрых вычислений мы получаем, что производительность NPU в рамках одного поколения колеблется в… 18 раз. А учитывая, что самый массовый сегмент — это бюджетные решения, и, тем более, учитывая что средний возраст смартфонов в мире 2 года (а в бюджетные устройства вовсе не торопятся ставить самые свежие чипы), мы получаем, что 3.3 TOPS — это лучшее, на что может рассчитывать разработчик, который решил задействовать NPU для своих задач. Во-вторых, как оказывается, NPU — вещь архитектурно довольно сложная. В отличие от графических процессоров, которые поддерживают широкий спектр платформ, NPU часто требуют пользовательские цепочки инструментов или проприетарные SDK. Что увеличивает цикл разработки, а соответственно и риски. Плюс ограничения интеграции, теплопакета, возможные конфликты с существующей пропускной способностью ввода-вывода и памяти. Не говоря уже о специалистах. И вишенка на торте: в 2023 году 78% мобильных приложений с ИИ потерпели неудачу именно из-за неприемлемой производительности. Вот и получается, что NPU в большинстве своём — маркетинговый ход, нежели реально работающий модуль. Только в последние годы NPU научились использовать для обработки мобильного фото, но и тут нередко производители прибегают к собственным решениям, например MariSilicon X от OPPO. Да, «железо» флагманских смартфонов позволяет запускать всё вплоть до технологии апскейлинга и, извините, дегенератора кадров. Это всё сегодня используется в гейминге, но до решения реальных задач пока не дошло, если не считать победы в бенчмарках. При том что флагманы могут похвастаться NPU с производительностью 30–40 TOPS. Реальные задачи, вроде той же NoLACE, требуют куда меньше — 620 MFLOPS (0.00062 TOPS). Почему NPU? Производители смартфонов уперлись в потолок развития CPU. Теплопакеты растут (у Qualcomm Snapdragon 8 Gen 3 уже до 12 Вт), совершенствование архитектуры близится к пределу, а прорывы в уменьшении техпроцесса случаются раз в пятилетку. Вот и приходится выдумывать новые способы маркетинга — NPU с десятками TOPS. Но давайте посмотрим правде в глаза:
- Большинство приложений не используют NPU, потому что их задачи проще решить на CPU или GPU.
- Да, NPU потребляет меньше энергии для AI-задач, но если эти задачи выполняются раз в месяц, то и польза нулевая.
- NPU работает локально, что спасает от задержек и слива данных в облака, но большинство задач для которых мог бы понадобиться NPU гораздо проще выполнять на удалённом сервере с помощью больших ML-моделей.