Система отработала месяц без единого алерта. Аптайм железа 99.9%, логи чистые, сеть стабильна. Но бизнес принёс видео с камер: фура снесла шлагбаум на выезде, а наша нейросеть этот момент просто не заметила. Мы поехали снимать телеметрию с периметра и увидели классический тепловой троттлинг edge инференса. На улице +32°C, внутри глухого металлического бокса под прямым солнцем — стабильные +45°C.
Иллюзия зелёного дашборда: jetson перегрев при инференсе
В кондиционируемой лаборатории SoC выдавал уверенные 25 FPS при 30 мс на кадр. На объекте картина радикально изменилась. Читая логи tegrastats, мы увидели чёткую корреляцию. Как только температура кристалла пробивала 85°C, планировщик вывешивал флаг статуса термического ограничения. Встроенный контроллер начал агрессивно резать частоты GPU и DLA, спасая кремний от деградации. Частота моментально падала с 1 ГГц до 300 МГц. Это не программный баг, это хардварная защита железа.
Латентность обработки одного кадра скакнула до 120 миллисекунд. Пропускная способность конвейера упала в четыре раза. В это время GStreamer продолжал исправно тянуть поток по RTSP. Буфер декодера переполнился за пару минут. Дальше начался тихий ад. Пайплайн стал молча выкидывать каждый второй, а затем и каждый третий кадр. Сеть просто не видела фуру, потому что нужные кадры умерли в очереди. На уровне бизнес-метрик всё было зелёным. Самый страшный класс отказа — система работает, но слепа. Процессор спасает себя, а продукт умирает.
Почему edge AI теряет кадры под нагрузкой и фикс через backpressure RTSP
Проблема не только в пассивном радиаторе, который никто не просчитал под worst-case сценарий. Проблема в архитектуре конвейера. Если потребитель работает медленнее поставщика, очередь обязана сигнализировать об этом. У нас стоял стандартный пайплайн, где дроп кадров происходил хаотично внутри памяти декодера. Чтобы инференс на жаре +45 не убивал бизнес-логику, нужно внедрять явный backpressure и динамический decimation кадров. Когда латентность нейросети растёт, приложение должно осознанно снижать FPS на входе, гарантируя обработку ключевых кадров за счёт пропуска промежуточных.
def process_stream(frame_queue, inference_engine):
while True:
frame = frame_queue.get()
current_latency_ms = inference_engine.get_p99_latency()
if current_latency_ms > 80.0 and frame.frame_id % 2 != 0:
logging.warning(f"Backpressure: drop frame {frame.frame_id}")
continue
result = inference_engine.predict(frame)
send_to_business_logic(result)Осознанная деградация всегда лучше тихого переполнения буфера. Это базовый инженерный гигиенический минимум.
Квантизация и стресс-тест: проектируй под объект, а не под лабу
Программные костыли не отменяют законов физики. Тяжёлая модель съедает весь тепловой бюджет SoC за считанные минуты, не оставляя шансов на длительную автономность. Мы перевели веса в INT8, используя репрезентативный калибровочный датасет с ночных и дневных сцен, чтобы сохранить mAP на мелких объектах. INT8-квантизация под тензорные ядра — это перестроение вычислительного графа. В связке с прунингом, который вырезал около трети неактивных нейронов, потребление чипа упало с 15 до 8 Вт при той же точности детекции. Тепловыделение снизилось пропорционально, запас по температуре вырос на спасительные 12 градусов. Дальше мы заменили глухой корпус на профильный радиатор с внешним оребрением.
Изменился сам процесс приёмки. Мы больше не выпускаем железо на улицу без прогона в климатической камере. Железо сажается в термошкаф на +50°C. На вход подаётся синтетический поток с максимальным битрейтом, имитирующий шквал движения в кадре. Скрипт пишет телеметрию sysfs для термальных зон, реальную частоту ядер и сквозную задержку пайплайна. Если в течение четырёх часов сеть держит целевой порог без скачков задержки и пропущенных событий, сборка едет на монтаж. В противном случае коробка возвращается инженерам на пересборку.
Никакой магии. Только жёсткие лимиты, профилирование и понимание того, как кремний ведёт себя за пределами серверной стойки. Закладывайте пилот edge-видеоаналитики с обязательным тепловым и нагрузочным стресс-тестом в смету. Иначе вашим следующим отчётом тоже будет разбор упущенного шлагбаума.