Настройка AWS IoT Greengrass для Edge ML

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Настройка AWS IoT Greengrass для Edge ML
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

Развёртывание ML-моделей на Edge через AWS IoT Greengrass

AWS IoT Greengrass v2 — runtime для запуска AWS Lambda, контейнеров и ML-компонентов на Edge-устройствах. Модели из SageMaker → деплой на завод через Greengrass без SSH. Centralized fleet management с zero-touch provisioning.

Архитектура 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)

ML Inference компоненты

SageMaker Edge Manager: Компилирует модели через SageMaker Neo для конкретного железа (ARM, x86, GPU). Оптимизированные бинарники + SageMaker 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 оверхеда.

import dlr
model = dlr.DLRModel('/greengrass/v2/work/model', 'cpu')
result = model.run({'input': numpy_array})

Кастомный компонент для инференса

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"}
    ]
  }]
}

IPC для публикации результатов:

from awsiot.greengrasscoreipc.clientv2 import GreengrassCoreIPCClientV2
ipc_client = GreengrassCoreIPCClientV2()
ipc_client.publish_to_iot_core(
    topic_name="factory/line1/defects",
    qos=QOS.AT_LEAST_ONCE,
    payload=json.dumps({"defect": True, "confidence": 0.94}).encode()
)

OTA обновление моделей

Классический pain point Edge ML: как обновить модель на 500 устройствах. Greengrass решает это нативно.

Workflow:

  1. SageMaker обучает новую версию модели
  2. Артефакт загружается в S3
  3. Обновляется версия компонента в Greengrass
  4. Создаётся новый Deployment на thing group
  5. Nucleus на каждом устройстве скачивает дельту, применяет, rollback при ошибке

Staged rollout: Deployment с canary: сначала 5% устройств (thing group subset), мониторинг CloudWatch метрик, затем 100%.

Local shadow для состояния: AWS IoT Device Shadow хранит текущую версию модели, статус инференса, custom metrics. Синхронизация cloud ↔ edge даже при временном разрыве сети.

Stream Manager для больших данных

greengrass.StreamManager: локальный буфер для edge → cloud передачи. Когда сеть нестабильна — данные буферируются локально (до N MB), после восстановления — автоматически отправляются в Kinesis/S3/IoT Analytics.

from stream_manager import StreamManagerClient, ExportDefinition, KinesisConfig

client = StreamManagerClient()
client.create_message_stream(MessageStreamDefinition(
    name="QualityStream",
    max_size=268435456,  # 256 MB local buffer
    export_definition=ExportDefinition(
        kinesis=[KinesisConfig(identifier="kinesis-export",
                               stream_name="factory-quality-stream")]
    )
))

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.

Поддерживаемые платформы

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+, ограниченный набор компонентов.

Сроки: 3–6 недель

Первый Greengrass деплой с готовой моделью: 1 неделя. Кастомные компоненты, fleet management, staged rollout, интеграция с существующей SCADA/MES: 4–6 недель.