При развёртывании 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







