Розгортання ML-моделей на Edge через AWS IoT Greengrass
Типова картина: на заводі 200 PLC і камер, але модель навчена в SageMaker. Вручну оновлювати бінарники на кожному пристрої — помилки та простої. Ми налаштовуємо AWS IoT Greengrass v2 — runtime для запуску ML-компонентів на Edge без SSH. Моделі з SageMaker їдуть у деплой на thing group «factory-line-1», а централізоване управління флотом — з zero-touch provisioning. За 5 років ми впровадили Greengrass на 30+ промислових об'єктах і гарантуємо стабільність в умовах перебоїв мережі.
Архітектура Greengrass v2
Nucleus — Greengrass core runtime на Java. Управляє lifecycle компонентів, IPC і локальним брокером MQTT (Moquette). Компоненти — атомарні одиниці деплою: AWS managed (готові) та custom (ваш код). Deployment — JSON-документ з набором компонентів і версій. AWS консоль або CLI відправляє його на пристрій, Nucleus застосовує.
Cloud (AWS): SageMaker → Model artifact in S3 IoT Greengrass Deployment → targets: thing group "factory-line-1"
Edge device: Greengrass Nucleus ├── aws.greengrass.SageMakerEdgeManager ├── aws.greengrass.DlrInferenceService (DLR runtime) └── com.company.InferenceApp (custom component)
Чому Greengrass для Edge ML?
Централізоване управління — тільки одне: замінив Deployment, і всі 500 пристроїв отримали нову модель. Staged rollout з canary (спочатку 5%, потім 100%) та автоматичний rollback при помилці. Device Shadow зберігає поточну версію моделі та статус, синхронізація cloud ↔ edge працює навіть при тимчасовому розриві мережі.
ML Inference компоненти
SageMaker Edge Manager компілює моделі через SageMaker Neo для конкретного заліза (ARM, x86, GPU). Оптимізовані бінарники + Edge Agent (gRPC daemon) на пристрої.
# edge agent gRPC client
import agent_pb2, agent_pb2_grpc
channel = grpc.insecure_channel('unix:///tmp/sagemaker_edge_agent_example.sock')
stub = agent_pb2_grpc.AgentStub(channel)
# завантаження моделі
stub.LoadModel(agent_pb2.LoadModelRequest(
url=f's3://bucket/model.tar.gz',
name='defect-detector'))
# інференс
response = stub.Predict(agent_pb2.PredictRequest(
name='defect-detector',
tensors=[tensor]))
DLR (Deep Learning Runtime) — альтернатива Edge Manager. TVM-compiled моделі, підтримка TFLite, XGBoost, LightGBM. Легший, без gRPC оверхеду. На CPU DLR часто швидший у 2 рази.
import dlr
model = dlr.DLRModel('/greengrass/v2/work/model', 'cpu')
result = model.run({'input': numpy_array})
Порівняння SageMaker Edge Manager та DLR
| Параметр | SageMaker Edge Manager | DLR |
|---|---|---|
| Компіляція | Neo під конкретне залізо | TVM |
| Протокол | gRPC | Прямі виклики C++/Python |
| Підтримка моделей | TensorFlow, PyTorch, MXNet | TFLite, XGBoost, LightGBM |
| latency (CPU) | ~15 мс | ~7 мс |
| Розмір runtime | ~50 MB | ~15 MB |
Як організувати оновлення моделей без простоїв?
Класичний pain point Edge ML — як оновити модель на 500 пристроях. Greengrass вирішує це нативно.
Згідно з документацією AWS, Greengrass v2 підтримує staged rollout з автоматичним відкатом.
Workflow:
- SageMaker навчає нову версію моделі.
- Артефакт завантажується в S3.
- Оновлюється версія компонента в Greengrass.
- Створюється новий Deployment на thing group.
- Nucleus на кожному пристрої завантажує дельту, застосовує, rollback при помилці.
Staged rollout: Deployment з canary — спочатку 5% пристроїв (thing group subset), моніторинг CloudWatch метрик, потім 100%.
Local shadow для стану: AWS IoT Device Shadow зберігає поточну версію моделі, статус інференсу, custom metrics. Синхронізація cloud ↔ edge навіть при тимчасовому розриві мережі.
Типові помилки при деплої
- Несумісність версій компонентів — перевіряйте version requirement в recipe. - Відсутність прав доступу до S3 — налаштуйте IAM роль для Greengrass. - Завеликий артефакт моделі — використовуйте DLR або квантизацію.Кастомний компонент для інференсу
recipe.json:
{
"RecipeFormatVersion": "2020-01-25",
"ComponentName": "com.company.QualityInspection",
"ComponentVersion": "1.0.0",
"ComponentDependencies": {
"aws.greengrass.DlrInferenceService": {"VersionRequirement": ">=1.6.0"}
},
"Manifests": [{
"Platform": {"os": "linux"},
"Lifecycle": {
"Install": "pip3 install -r requirements.txt",
"Run": "python3 {artifacts:path}/inference.py"
},
"Artifacts": [
{"URI": "s3://my-bucket/inference.py"},
{"URI": "s3://my-bucket/model.tar.gz", "Unarchive": "ZIP"}
]
}]
}
Stream Manager для великих даних
greengrass.StreamManager — локальний буфер для edge → cloud передачі. Коли мережа нестабільна — дані буферизуються локально (до 256 MB), після відновлення — автоматично відправляються в Kinesis/S3/IoT Analytics. Параметри налаштовуються: розмір буфера, частота експорту, політика при переповненні.
Fleet Management
Thing Groups + Attributes: factory-line-1, factory-line-2 — різні моделі для різних ліній. Attribute: firmware_version, camera_model — для conditional deployment.
Greengrass CLI для діагностики:
greengrass-cli component list # запущені компоненти
greengrass-cli logs get --component com.company.QualityInspection
greengrass-cli deployment create ... # локальний деплой для налагодження
CloudWatch метрики: стандартні ComponentRunning, ComponentBroken. Кастомні через EMF (Embedded Metrics Format) — будь-які метрики з edge коду безпосередньо в CloudWatch.
План впровадження та терміни
| Етап | Тривалість |
|---|---|
| Аудит і проєктування | 1 тиждень |
| Налаштування Nucleus та компонентів | 1–2 тижні |
| Інтеграція та staged rollout | 1–2 тижні |
| Моніторинг і документація | 1 тиждень |
Що входить в роботу
- Аудит поточної інфраструктури та моделі (сумісність з Greengrass, вимоги до заліза).
- Проєктування архітектури: вибір між SageMaker Edge Manager та DLR, склад компонентів, схема деплою.
- Налаштування Greengrass Nucleus та компонентів (aws managed + custom).
- Інтеграція з існуючими системами (SCADA, MES, Kafka).
- Staged rollout та моніторинг (CloudWatch, алерти).
- Документація з експлуатації та навчання команди.
- Гарантія стабільної роботи протягом 30 днів після запуску.
Підтримувані платформи
Linux (arm64, armv7, x86_64). Мінімум: 512 MB RAM, 1 GHz CPU. Протестовано: Raspberry Pi 4, NVIDIA Jetson, BeagleBone, промислові x86 IPC. Windows (x86_64): Greengrass v2.9+, обмежений набір компонентів.
Терміни та вартість
Перший Greengrass деплой з готовою моделлю — від 1 тижня. Кастомні компоненти, fleet management, staged rollout, інтеграція з існуючою SCADA/MES — 4–6 тижнів. Вартість розраховується індивідуально після аудиту. Оцінимо ваш проект — зв'яжіться з нами. Використовуєте Greengrass і хочете знизити операційні витрати? Замовте консультацію — ми підберемо оптимальну архітектуру.







