При развёртывании ML-моделей на периферии клиенты часто сталкиваются с узким местом — сетевой latency и стоимость передачи данных. Мы предлагаем проверенное решение на Azure IoT Edge: модели выполняются локально, в контейнерах, с оркестрацией из облака. Это снижает задержки до миллисекунд и экономит до 40% на трафике. Наш опыт — более 5 лет в IoT Edge, свыше 30 внедрений для промышленных проектов, включая автоматизацию контроля качества и предиктивную диагностику оборудования.
Как развернуть ML-модель на Azure IoT Edge?
Azure IoT Edge запускает контейнеры (modules) на Edge-устройствах с оркестрацией через IoT Hub. ML-модели из Azure Machine Learning упаковываются в Docker-образ и деплоятся через deployment manifest. Интеграция с Azure Stream Analytics, Cognitive Services, ONNX Runtime — всё под капотом.
IoT Edge runtime — два системных контейнера: edgeAgent управляет lifecycle модулей по deployment manifest, edgeHub — локальный брокер MQTT/AMQP, маршрутизация сообщений и буферизация при разрыве связи.
Deployment manifest (JSON) определяет, какие модули запускать, их параметры и маршруты:
{ "modulesContent": { "$edgeAgent": { "properties.desired": { "modules": { "MLInference": { "type": "docker", "settings": { "image": "myregistry.azurecr.io/ml-inference:1.2.0", "createOptions": "{\"HostConfig\":{\"Devices\":[{\"PathOnHost\":\"/dev/video0\"}]}}" } } } } }, "$edgeHub": { "properties.desired": { "routes": { "MLToCloud": "FROM /messages/modules/MLInference/* INTO $upstream" } } } } } Подготовка ML-модуля через Azure Machine Learning
Рабочий процесс: обучение на compute cluster → регистрация модели в Model Registry → создание IoT Edge пакета через Model.package() → push контейнера в ACR → обновление manifest. Меняем версию образа — IoT Hub автоматически раскатывает обновление на целевую группу.
Почему ONNX Runtime — лучший выбор для Edge-инференса?
ONNX Runtime — кроссплатформенный движок с аппаратной оптимизацией. На Intel CPU с OpenVINO ускорение в 2,5–3 раза относительно чистого Python; на NVIDIA Jetson через TensorRT — до 5 раз. Automated deployment через IoT Hub в 10 раз быстрее ручного обновления каждого устройства. Пример hardware-aware сессии:
import onnxruntime as ort opts = ort.SessionOptions() opts.graph_optimization_level = ort.GraphOptimizationLevel.ORT_ENABLE_ALL opts.intra_op_num_threads = 4 providers = ['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider'] session = ort.InferenceSession('model.onnx', opts, providers=providers) def infer(image_np): input_name = session.get_inputs()[0].name return session.run(None, {input_name: image_np}) Готовые образы Microsoft: mcr.microsoft.com/azureml/onnxruntime:latest-openvino для Intel, :latest-jetpack для Jetson.
Взаимодействие модулей на Edge
Module Twin и Direct Methods
Через module twin изменяем параметры на лету (confidence threshold, версия модели) без пересборки контейнера:
async def twin_patch_handler(patch): if 'modelVersion' in patch: await update_model(patch['modelVersion']) if 'confidenceThreshold' in patch: global THRESHOLD THRESHOLD = patch['confidenceThreshold'] module_client.on_twin_desired_properties_patch_received = twin_patch_handler async def method_handler(method_request): if method_request.name == "GetStats": payload = {"fps": current_fps, "detections_today": counter} return MethodResponse.create_from_method_request( method_request, 200, payload) Direct Methods — синхронный вызов из облака (timeout 30 с). Используется для диагностики, перезагрузки модуля, получения статистики.
Message Routing
edgeHub маршрутизирует сообщения по source, topic, свойствам. Пример: все кадры с разрешением выше Full HD отправляются в модуль HiResProcessor, а детекции с уверенностью >0.9 — сразу в облако:
FROM /messages/modules/Camera/* WHERE $body.width > 1920 INTO modules/HiResProcessor/inputs/frames FROM /messages/modules/MLInference/* WHERE $body.confidence > 0.9 INTO $upstream Azure Stream Analytics на Edge
Для real-time агрегации без облака: средняя температура за окно 30 с, аномалии — всё локально. Результаты отправляются в другой модуль или в облако при появлении сети.
SELECT System.Timestamp() as EventTime, AVG(temperature) as AvgTemp, COUNT(*) as Anomalies INTO AlertOutput FROM TemperatureInput TIMESTAMP BY EventTime GROUP BY TumblingWindow(second, 30) HAVING AVG(temperature) > 75 OR COUNT(*) > 10 Сравнение методов деплоя
| Метод | Скорость | Масштабирование | Сценарий |
|---|---|---|---|
| Ручной manifest через портал | 10–30 мин | Единичные устройства | Тестирование / отладка |
| Automatic Deployment | 1–5 мин | Тысячи устройств | Промышленные парки |
| DPS Zero-touch | При первом включении | Миллионы | Массовый выпуск |
Сравнение бэкендов инференса
| Бэкенд | Platform | Ускорение | Энергопотребление |
|---|---|---|---|
| OpenVINO | Intel CPU (Xeon, Core) | 2–3x vs Python | Низкое |
| TensorRT | NVIDIA GPU (Jetson, T4) | 3–5x vs Python | Среднее |
| ONNX Runtime CPU | Любой x86/ARM | 1.5–2x vs Python | Минимальное |
Fleet Management через IoT Hub
Device Provisioning Service (DPS) — zero-touch provisioning: устройство при первом запуске регистрируется в DPS, автоматически назначается в IoT Hub и получает деплой. Automatic Deployments с target condition tags.location = 'factory-A' — раскатка по группам с приоритетами.
Мониторинг: Azure Monitor + built-in метрики (connected devices, messages/day). Custom метрики через send_message() с application properties для фильтрации в Log Analytics.
Что входит в работу
- Аудит инфраструктуры и требований к инференсу
- Разработка и контейнеризация ML-модуля (ONNX / TensorRT / OpenVINO)
- Настройка deployment manifest и маршрутизации
- Интеграция с DPS для масштабирования
- Документация по эксплуатации и обучение команды
- Техническая поддержка на этапе внедрения
Гарантируем стабильную работу под нагрузкой: latency p99 < 200 мс на Jetson Nano с моделью YOLOv5, uptime 99.9% при потере связи до 4 часов.
Сроки: 3–6 недель
Базовый деплой с Azure ML моделью — 1–2 недели. Кастомные модули, ASA Edge, OPC Publisher интеграция с промышленным оборудованием, DPS fleet provisioning — 5–6 недель. Оцените ваш проект — свяжитесь для консультации. Закажите аудит вашей инфраструктуры, чтобы получить точные сроки и стоимость.
Azure IoT Edge documentation







