Недавно в чате сингулярис меня спросили достаточно интересный вопрос, на который я раньше не отвечал. Кажется, что вопрос достаточно насущный и интересный, и на него есть короткий ответ. Так что скопирую сюда.

Вопрос (немного переформулированный): "Jetson дорогие, но удобные. Там есть много полезного софта: TensorRT, Deepstream, Triton, etc.. Насколько болезнен переход без всех этих инструментов на другие Edge платформы?"



Важно отделять сущности инструментов, и понимать что нужно, что заменяется, а что маркетинговый булшит:

1) TensorRT - это конвертация нейронной сети в примитивы которые быстро выполняются на железе. Это есть у всех железяк. OpenVino для Intel, HailoRT для Hailo, RKNN для RockChip. Для каких-то железок нет своих форматов, и там обычно TFlite или NCNN.



2) "deepstream" я знаю, что сейчас скажу вещь с которой рванут пуканы, но все же. Deepstream - только мешает. Я знаю 3 компании которые начинали делать на deepstream, но потом с него ушли.

a) Он ужасно кривой. Наборы багнутых скриптов которые без пол литра не пофиксишь. Да, там низкий порог входа, 2 дня. Но правка каждой проблемы - это 1-2 недели. При этом переписать пайплайн на Gstreamer + CUDA -это 2-3 недели. Потом добавление любой другой сети станет очень просто. Для любителей садомазо есть ещё TAO. Но это уже за гранью.

b) Deepstream решает проблему которой на большинстве железок просто нет. У NVIDIA есть разделение памяти. Это RAM и VRAM. Он может быть физический, а может программный (Jetson). Цель DeepStream - это избегать лишних копирований/передач между этими памятями. И инференс всего что можно на GPU. Но NPU модули работают не так. Там нет своей памяти и результат инференса возвращается в RAM. А там можно это уже обрабатывать через CPU, можно через GPU, если хочется, либо MKL если это Intel.



3) Что касается "Triton server" - да, вот это удобно. Но:

a) Сам Triton, если что, мультиплатформенный. Он умеет и под OpenVino, и ещё куда-то. Это не значит что надо его использовать. Например под Intel он не умеет IntelGPU использовать.

b) У большинства вендоров есть свои серверы. Это и OpenVino inference server, и Hailo inference server, и.т.д.

c) Для Edge-устройств от инференс сервера обычно нужно достаточно мало опций. Не нужно жонглировать загрузкой/выгрузкой 20 моделей из памяти, не надо профилировать десять сеток которые одновременно что-то считают. Без этого нормальный serving пишется за день. Если что, гуглиться по "model serving". Для Khadas, RockChip и еще кого-то такое было просто в примере сорсов.



Ну а дальше, пайплайн пишется уже исходя из конкретного железа, его архитектуры и задачи. Но в целом это либо аналог цепочного инференса, либо serving модель обычно.