Skip to content

Zero-Allocation прогноз на микроконтроллерах ​

Система мониторинга
👁0просмотров

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

Главная боль промышленных IoT-решений - предсказать поломки и аномалии оборудования и технологических процессов производств до появления аварий и отказов оборудования. Такие решения, обычно требуют мощные шлюзы, постоянное облачное соединение и гигабайты исторических данных. Это дорого и ненадежно.

Поскольку, запуск полноценных ML-моделей на MCU часто упирается в жесткие лимиты по RAM, CPU и отсутствию истории данных при «холодном старте», мы разработали и сформировали компактный и универсальный Design Pattern предиктивной Edge-аналитики, нивелирующий данные проблемы и позволяющий перенести интеллект прямо на микроконтроллер.

Паттерн не просто описан математически - он реализован и проверен на ESP32-С6 в рамках проекта мониторинга. Код открыт, примеры конфигураций трёх профилей (Точный / Сбалансированный / Быстрый) - в репозитории, указанном в статье.

DESIGN PATTERN: ROBUST EDGE FORECASTING ​

Постановка задачи в концепции Edge Computing ​

Универсальной задачей предиктивного анализа на уровне встраиваемых систем (Edge Devices) является переход от реактивного мониторинга (срабатывание по факту пересечения порога) к проактивному прогнозированию (экстраполяция тренда и расчет упреждающей точки отказа).

Разрабатываемый шаблон проектирования (Design Pattern) предназначен для локальной обработки временных рядов в условиях жестких ограничений вычислительной мощности (микроконтроллеры, одноплатные компьютеры) и отсутствия доступа к облачным вычислениям или исторической базе данных при «холодном старте» устройства.

Сертифицируемость как архитектурное требование ​

Отдельным мотивом разработки паттерна является практика сертификации систем функциональной безопасности (IEC 61508, ISO 26262, IEC 62443). Классические OSS-компоненты (например, FFmpeg, используемый в системах компьютерного зрения или видеоаналитики) плохо ложатся в V-модель: их CI/CD-цикл разработки не предполагает трассируемости «требование -> код», оптимизирующие компиляторы порождают непокрываемый тестами «тёмный код», а аргумент Proven-In-Use аннулируется при любой смене платформы или флагов сборки [1][2]. Паттерн Robust Edge Forecasting изначально проектируется как детерминированный, статически аллоцируемый и формально ограниченный по области применимости компонент. Это не делает сертификацию автоматической, но устраняет те барьеры, которые превращают сертификацию сложного OSS в многомесячный проект с неопределённым результатом.

Архитектурная модель сквозной фильтрации и прогнозирования ​

Входным вектором модели является сырой временной ряд измерений X=x1,x2,...,xtX = {x_1, x_2, ..., x_t}, поступающий с физического датчика с фиксированной частотой дискретизации (fsf_{s}).

Математический контур патерна инвариантен к природе измеряемой величины и разделен на три последовательных вычислительных слоя:

flowchart TD
    A["Сырой физический сигнал X(t)"]
    B["1. РОБАСТНАЯ ФИЛЬТРАЦИЯ АРТЕФАКТОВ"]
    C["2. АДАПТИВНОЕ СГЛАЖИВАНИЕ БАЗОВОГО УРОВНЯ (Параметр α)"]
    D["3. ЭКСТРАПОЛЯЦИЯ ДЕМПФИРОВАННОГО ТРЕНДА (β, φ, h)"]
    E["Проактивный вектор состояния / Точка отказа"]

    A --> B
    B --> C
    C --> D
    D --> E

    B -.-> B1["Подавление импульсных выбросов (outliers)"]
    C -.-> C1["Изоляция истинного физического тренда"]
    D -.-> D1["Анти-лаг экстраполяция на горизонт h"]

    style A fill:#f0f0f0,stroke:#333,stroke-width:1px
    style B fill:#e3f2fd,stroke:#1565c0,stroke-width:1.5px
    style C fill:#e3f2fd,stroke:#1565c0,stroke-width:1.5px
    style D fill:#e3f2fd,stroke:#1565c0,stroke-width:1.5px
    style E fill:#fff3e0,stroke:#e65100,stroke-width:1.5px
    style B1 fill:#ffffff,stroke:#999,stroke-dasharray: 3 3
    style C1 fill:#ffffff,stroke:#999,stroke-dasharray: 3 3
    style D1 fill:#ffffff,stroke:#999,stroke-dasharray: 3 3
Рис.1. Диаграмма обработки сигнала.

Слой 1. Робастная фильтрация артефактов ​

Для очистки сигнала от высокочастотных шумов и импульсных аномалий (outliers), вызванных внешними возмущениями среды, применяется скользящее медианное окно размером N. В рамках паттерна оптимальным является фиксированное окно N = 5, обеспечивающее подавление экстремумов при минимальном и строго детерминированном фазовом сдвиге:

y(t)=Median(x(t),x(t−1),...,x(t−N+1))y(t) = Median(x(t), x(t - 1), ..., x(t -N + 1))(1)

Групповая задержка на линейном участке составляет ( N − 1 ) / 2 шага.

1.1. Выбор метода фильтрации в зависимости от типа шума

В Слое 1 (Робастная фильтрация артефактов) в качестве базового метода выбран медианный фильтр для сценария с импульсными выбросами. Однако природа шума может требовать иных методов. Таблица ниже, обобщает практические рекомендации для Edge-реализации; оценки вычислительной стоимости приведены для скалярной арифметики с фиксированной точкой (Cortex-M0+/M3, без FPU).

Таблица 1. Практические рекомендации для Edge-реализации различных фильтров.

Тип шума / помехиМетод борьбыСтоимость на EdgeЛокально на MCU?
Наводки 50/60 ГцРежекторный biquad (Notch) или comb-фильтр~10 FLOPSДа, обязательно
Низкочастотный дрейф (baseline wander)High-pass IIR (Butterworth 1–2 порядка)~5–15 FLOPSДа
Белый гауссовский шумEMA / скользящее среднее / SG-фильтр~5–30 FLOPSДа
Импульсные выбросы (outliers)Медианный фильтр (N=5)~15–20 FLOPSДа (базовый слой)
Спекл-шум (мультипликативный)Фильтр Ли (Lee filter) / логарифмированиеСредняя (локальная статистика)Да, при необходимости
Нестационарный линейный процессСкалярный Калман (фикс. Q, R)~20 FLOPSДа
Нелинейный / негауссовский процессОдноуровневый DWT (Db2)~50–100 FLOPSДа (M0+/M3)
То же, полный анализМногоуровневый DWT / автокодировщикиВысокая / очень высокаяНет (только при избытке ресурсов)
Коррелированный (структурированный) шумSSA / PCA (SVD-разложение)Критически высокаяНет (для MCU без FPU; погранично для M4F при малых окнах)
Пропуски в данныхИнтерполяция / hold-last-value / Калман с пропусками~5 FLOPSДа
Нелинейные искажения датчика (систематическая погрешность)Калибровочная кривая (полином 2–3 степени) или LUT~5–10 FLOPS (полином); ~1 доступ к памяти (LUT)Да (LUT предпочтительнее по стоимости)

Слой 2. Адаптивное сглаживание базового уровня ​

Очищенный сигнал y(t)y(t) обрабатывается методом Хольта с демпфированным трендом. Это позволяет рассчитать стабильный базовый уровень процесса L(t)L(t), скорректированный на коэффициент затухания тренда:

L(t)=α⋅y(t)+(1−α)⋅(L(t−1)+φ⋅T(t−1))L(t) = α · y(t) + (1 − α) · (L(t−1) + φ · T(t−1))(2)

где α - коэффициент чувствительности к свежим измерениям.


Слой 3. Экстраполяция демпфированного тренда ​

Поскольку физические процессы имеют инерцию и естественные затухания (сопротивление среды, лимиты пропускной способности, трение), классический линейный тренд уводит прогноз в бесконечность, создавая эффект «перелета» (overshoot) на пиках. Паттерн вводит коэффициент демпфирования тренда φ ∈ [0; 1]:

T(t)=β⋅(L(t)−L(t−1))+(1−β)⋅φ⋅T(t−1)T(t) = β · (L(t) − L(t−1)) + (1 − β) · φ · T(t−1)(3)

Прогнозное значение y^ŷ на горизонт h шагов вперед рассчитывается как затухающая сумма геометрической прогрессии вектора тренда:

y^(t+h)=L(t)+∑f=1hϕf⋅T(t)\hat{y}(t+h)=L(t)+\sum _{f=1}^{h}\phi ^{f}\cdot T(t)(4)
Σi=1hφi=φ(1−φh)/(1−φ)Σ_{i=1}^{h} φ^i = φ(1−φʰ)/(1−φ)(5)

Пространство Парето-оптимизации параметров ​

Инвариантность паттерна к различным физическим процессам достигается за счет расчетного смещения констант сглаживания в рамках многокритериальной Парето-оптимизации. Пространство поиска ограничено фундаментальными законами теории сигналов:

  • α ∈ [0.20; 0.60] - регулирует инерционность системы. Определяет лаг контура как (1 − α) / α. Верхняя граница ограничивает совокупное запаздывание модели (вместе со Слоем 1) в пределах ≤ 4 шагов, что критично для систем оперативного реагирования.
  • β ∈ [0.10; 0.30] - обеспечивает устойчивость наклона тренда и фильтрацию паразитных флуктуаций датчика.
  • φ ∈ [0.82; 0.94] - выполняет роль «математического тормоза», снижающего вклад дальних шагов прогноза до уровня φh≈φ^h \approx [.30 .. .69] от начального, страхуя систему от ложных тревог при кратковременном изменении внешних условий.

Оптимальная рабочая точка выбирается на основе Парето-фронта по трем метрикам: MAE фильтрации, MAE прогноза и геометрическому критерию изрезанности (гладкости) итогового ряда (roughness):

Roughness=(1/(n−2))⋅Σ∣y[i+1]−2⋅y[i]+y[i−1]∣Roughness = (1 / (n − 2)) · Σ |y[i+1] − 2·y[i] + y[i−1]|(6)

Три инженерных профиля на Парето-фронте

На практике нет смысла искать одну «оптимальную» точку - удобнее зафиксировать три профиля на Парето-фронте (Рис.2.). Профиль выбирается один раз при конфигурации устройства; переключение между профилями в рантайме не требует перезапуска и не вызывает выделения памяти - все три набора констант хранятся в const-структуре.

ПрофильαβφПриоритетТипичное применение
Точный0.20–0.300.100.90–0.94min MAE прогнозаМедленные процессы, редкие тревоги
Сбалансированный0.400.200.88баланс MAE / RoughnessРабочая точка по умолчанию
Быстрый0.55–0.600.300.82–0.85min лаг, min ложных тревогБыстрые процессы, высокая частота тревог
зона разумного компромисса MAE (точность) → Roughness (гладкость) → меньше = лучше → меньше = лучше → Парето-фронтТочный α↓, β↓, φ↑ · max точность, ряд «изрезан» Сбалансированный α, β, φ - рабочая точка по умолчанию Быстрый α↑, β↑, φ↓ · min лаг, ряд «гладкий» 0maxmax
Рис.2. Пространство компромисса «точность (MAE) - гладкость (Roughness)». Три профиля соответствуют трём точкам на Парето-фронте; выбор определяется требованиями к допустимому лагу и частоте ложных тревог.

Алгоритм детерминированной инициализации ("Холодный старт") ​

Математический аппарат паттерна полностью исключает необходимость хранения или предварительной загрузки исторических логов. Архитектурный прогрев модели происходит на лету:

  1. При первом вызове функции t=0t = 0: базовый уровень приравнивается к первому замеру L(0)=y(0)L(0) = y(0), вектор тренда инициализируется нулем T(0)=0T(0) = 0.
  2. При втором вызове t=1t = 1: истинный наклон процесса полностью восстанавливается через разностное уравнение: T(1)=y(1)−y(0)T(1) = y(1) - y(0).

Переходный процесс адаптации модели завершается за интервал времени, равный размеру окна медианы, плюс глубина упреждающего горизонта, после чего Edge-устройство переходит в проактивный режим работы.

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


Вычислительный инвариант (Zero-Allocation) ​

Паттерн спроектирован по принципу максимальной утилизации аппаратных ресурсов (Hardware Efficiency). Программная реализация шаблона жестко исключает динамическое выделение памяти во время работы основного цикла программы (Zero-Allocation).

Все сдвиги массивов медианного окна и алгебраические вычисления Хольта выполняются на стеке процессора в рамках статических типов данных. Суммарная вычислительная сложность паттерна не превышает 30 FLOPS, а требования к ОЗУ составляют менее 1 Кбайт, что делает его универсальным стандартом эффективности для промышленных и встраиваемых систем Edge-аналитики.


Вывод ​

Design Pattern Robust Edge Forecasting сводит краткосрочное прогнозирование физических процессов к трём вычислительным слоям (робастный фильтр -> адаптивное сглаживание -> демпфированный тренд), инвариантным к природе сигнала. Паттерн обеспечивает детерминированный холодный старт, Zero-Allocation и стоимость ≤ 30 FLOPS на шаг, а выбор рабочей точки формализован через Парето-фронт «точность - гладкость» (три профиля) и таблицу фильтров по типу шума. Ограничение области применимости - краткосрочные гладкие/кусочно-гладкие процессы; для ступенчатых отказов и сильной нелинейности требуются дополнительные методы (CUSUM, нелинейный Калман, DWT). Паттерн пригоден для проактивной Edge-аналитики на MCU без облака и исторических логов.

P.S. Практическая ценность. Паттерн даёт инженеру воспроизводимый шаблон: формулы (1)–(6), диапазоны параметров, таблицу выбора фильтра по типу шума, профили на Парето-фронте и алгоритм холодного старта. Совокупность этих артефактов позволяет реализовать проактивную Edge-аналитику на устройстве класса Cortex-M0+/M3 без облака, без исторической базы и без динамического выделения памяти - то есть в тех условиях, где классические методы прогнозирования неприменимы.

Источники и нормативные документы ​


  1. exida. Qualification and Certification of Open-Source Software (White Paper). 2026. URL: exida.com. Документ описывает разрыв между CI/CD-моделью разработки OSS и V-моделью стандартов функциональной безопасности, а также необходимость downstream impact analysis для каждого релиза.
  2. IEC 61508-3:2026. Functional safety of electrical/electronic/programmable electronic safety-related systems - Part 3: Software requirements. International Electrotechnical Commission. - Требования к жизненному циклу ПО, трассируемости, формальным методам и анализу отказов; редакция 3.0 (2026) заменяет редакцию 2010 г.

Как вам статья?

ℹ️ Вы можете выбрать любую реакцию (доступен один голос на статью).

Обсуждение статьи (0)

Пока нет комментариев. Будьте первым!

Released under the MIT License.