К содержимому
MoranaLabs.
Research3 мин чтения0 просмотров

Постмортем: тепловой троттлинг edge инференса на +45 и тихий сброс кадров 

Система отработала месяц без алертов, но пропустила ДТП на выезде. Лезешь в телеметрию — а там тихий сброс кадров. Разбираем, как SoC плавится в железном ящике и почему edge-аналитика обязана уметь в backpressure.

0xReality

Система отработала месяц без единого алерта. Аптайм железа 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-видеоаналитики с обязательным тепловым и нагрузочным стресс-тестом в смету. Иначе вашим следующим отчетом тоже будет разбор упущенного шлагбаума.

  • #Computer Vision
  • #Edge AI
  • #Jetson
  • #Инференс
ПоделитьсяTelegramX
рассылка

Новые статьи — на почту

Лонгриды про ML в проде, edge и компьютерное зрение — сразу после выхода.

Канал в Telegram: morana.log

Без спама. Нажимая «Подписаться», соглашаетесь с обработкой персональных данных

бесплатный pdf-гайд

Edge AI или облако: когда тащить нейросеть на железо

Признаки, фреймворк выбора и прикидка экономии — короткий PDF-гайд на почту.

PDF · 5 страниц · без спама. Нажимая «Получить», соглашаетесь с обработкой персональных данных

Читать дальше
— заявка

Опишите задачу  ответим как инженеры. 

Оставьте имя и Telegram — остальное обсудим. Без брифов на 40 слайдов и звонков по три раза.

Отвечаем за пару часовотвечает инженер, а не отдел продажNDA по запросу

Сюда напишем — это быстрее всего

Или сразу написать в Telegram

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