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







