При розгортанні 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







