Основная цель этой статьи - кратко рассказать, что такое AWS Greengrass. Если вам нужна более подробная презентация, вы можете найти ее на странице AWS Документация Greengrass.

Интернет вещей

Прежде чем говорить о решении AWS Greengrass от Amazon, нам необходимо понять, что такое Интернет вещей.

Вкратце, IoT - это термин, используемый для обозначения сети подключенных устройств, называемых вещами, которые подключены к облачному серверу (ваш холодильник может быть вещью). С этого сервера вы можете отслеживать данные, отправляемые объектами, в режиме реального времени и при необходимости немедленно предпринимать действия. Это отличный инструмент для улучшения нашей повседневной жизни. Но не все идеально и есть недостатки.

Одним из недостатков является возможность подключения: ваши вещи всегда должны быть подключены к облаку, чтобы вы могли собирать данные и управлять своими объектами. Если вы потеряете соединение между вашим облаком и вашим объектом, никакие данные не будут сохранены и / или собраны, и вы потеряете весь контроль над своей сетью. Это основная проблема, которую хочет решить AWS Greengrass.

Другой недостаток - безопасность, в настоящее время самая важная часть любого проекта. Связь защищена? Оборудование безопасно и не было ли взломано? AWS Greengrass также пытается максимально повысить безопасность с помощью своего решения.

Периферийные вычисления

Граничные вычисления - это парадигма распределенных вычислений, означающая, что большинство операций выполняется на устройстве, а не на сервере в облаке. Слово «край» происходит от его положения в сети, от «края» предприятия или сети до облака. Его цель - приблизить сбор данных, анализ, искусственный интеллект и серверные ресурсы к вещам. Он также считается экологически безопасным, поскольку потребляет меньше электроэнергии в сети и, следовательно, требует меньшего охлаждения. AWS Greengrass - это часть периферийных вычислений.

AWS Greengrass

Прежде чем мы начнем говорить о Greengrass, на момент написания этой статьи Greengrass находился в версии 1.7. Эта услуга быстро развивается, поэтому некоторая информация может быть устаревшей.

AWS Greengrass - это программное обеспечение, которое расширяет возможности облака AWS на локальные устройства, позволяя этим устройствам собирать и анализировать данные ближе к источнику информации, а также безопасно обмениваться данными друг с другом в локальных сетях.

AWS Greengrass предоставляет базовое программное обеспечение, которое вы можете установить на свое устройство (список совместимых устройств), SDK и API.

Эта услуга предлагает несколько функций, таких как:

  • Среда выполнения лямбда, которая позволяет при необходимости выполнять бессерверные инструкции.
  • Теневая реализация, это означает, что вещь имеет JSON файл (тень), в котором установлены все его параметры / переменные и могут быть изменены с помощью лямбда-функций из ядра или из облака.
  • Например, диспетчер сообщений, когда ядру необходимо перезапустить, вещи все еще могут отправлять сообщения, и ядро ​​будет сохранять их до тех пор, пока ядро ​​не перезапустится снова.
  • Групповое управление, группа состоит из Вещей и Ядра Гринграсса.
  • Служба обнаружения, это служба, которая в основном используется Вещами для получения сертификатов для подключения к ядру Greengrass.
  • Агент обновления по беспроводной сети, который позволяет обновлять одно или несколько ядер Greengrass в сети одновременно или по заранее определенным расписаниям. Для работы этой функции на устройствах с ядром Greengrass необходимо активировать Wi-Fi.
  • Доступ к локальным ресурсам на устройстве Greengrass Core, если это необходимо, ресурсы могут быть любыми.
  • Вывод машинного обучения, означающий, что обучение выполняется на облачных серверах, но модель («мозг» ИИ) находится на устройстве Greengrass и может выполнять в реальном времени то, чему ее научили. Мы создали вариант использования, который использует логический вывод машинного обучения, вы можете узнать больше в конце этой статьи.
  • Начиная с версии 1.7, коннекторы помогают реализовать бизнес-логику многократного использования, взаимодействовать с облачными и локальными сервисами (включая AWS и сторонние сервисы), принимать и обрабатывать данные устройств, разрешать межсетевые вызовы с использованием тематических подписок MQTT и определяемой пользователем Lambda. функции. Этот модуль работает как пакеты, которые вы можете развернуть в своем ядре, не беспокоясь о изучении новых API или протоколов. Это сделано для облегчения вашей жизни.

По мере развития технологий, вероятно, будет добавлено больше функций.

Связь

Итак, как мы видим, Greengrass - это программное обеспечение, которое позволит вам выполнять в локальной сети в основном тот же процесс, как если бы ваши вещи были подключены к облаку, но на этот раз они подключены к локальному устройству.

Это решает проблему подключения к облачным серверам. Если ваше устройство Greengrass теряет соединение с облаком, оно не перестанет работать. Он по-прежнему собирает данные с вещей и выполняет автоматические действия (которые вы выполнили перед развертыванием Greengrass, мы увидим это позже).

Как только устройство Greengrass повторно подключается к облаку, оно может выполнять обновления своего ядра и отправлять вам обратно собранные данные, когда оно не могло получить доступ к облаку.

Безопасность

AWS Greengrass защищает данные пользователей с помощью безопасной аутентификации и авторизации устройств. Через безопасное соединение в локальной сети. Между локальными устройствами и облаком. Учетные данные безопасности устройства действуют в группе до тех пор, пока они не будут отозваны, даже если подключение к облаку нарушено, так что устройства могут продолжать безопасную локальную связь.

A - Сервисная роль Greengrass: созданная клиентом роль IAM, которая позволяет AWS Greengrass получать доступ к вашим ресурсам AWS IoT и Lambda.

B - Сертификат основного устройства: сертификат X.509, используемый для аутентификации ядра AWS Greengrass.

C - Сертификат устройства: сертификат X.509, используемый для аутентификации устройства AWS IoT.

D - Групповая роль: роль, которую выполняет AWS Greengrass при вызове в облако из функции Lambda в ядре AWS Greengrass.

E - Group CA: сертификат корневого CA, используемый устройствами AWS Greengrass для проверки сертификата, представленного основным устройством AWS Greengrass во время взаимной аутентификации TLS.

Если вам нужна более подробная информация о том, как работает безопасность, вот ссылка на страницу документации.

Конкуренция

На сегодняшний день (день публикации этой статьи) Amazon Greengrass является единственным законченным и простым в установке решением. Но есть и другие компании, которые работают над услугами периферийных вычислений:

  • Microsoft Azure IoT Edge в настоящее время работает над той же службой с аналогичными функциями, но с открытым исходным кодом основной пограничной службы.
  • Google Cloud IoT Edge тоже работает над этим, но вам нужно отправить запрос, чтобы работать с ними, так как проект все еще находится в альфа-версии.
  • EdgeX Foundry - это проект Linux Foundation, в рамках которого было создано пограничное вычислительное ядро ​​с открытым исходным кодом.
  • Alibaba и Intel также работают над совместной платформой для пограничных вычислений.

Пример использования: съемка ужина, история глубокого обучения II

Этот вариант использования является продолжением нашей предыдущей статьи, написанной нашим инженером по исследованиям и разработкам из отдела инноваций. Патрис Ферле.



Наша цель здесь - использовать функцию логического вывода машинного обучения, которая предлагает AWS Greengrass, чтобы определить, может ли на снимке, сделанном камерой, идентифицировать еду, не подключаясь к облаку.

В нашем случае мы будем использовать следующие службы:

  • AWS IoT
  • AWS Greengrass
  • AWS SageMaker
  • AWS S3

А для оборудования:

  • 1 Raspberry PI 3 Model B V1.2 (2015 г.)
  • Raspberry Black Camera V2.

Хотя Raspberry Pi - очень мощное оборудование, его возможности по машинному обучению невелики, особенно потому, что у него нет выделенного графического процессора, поэтому все должно идти на процессор. Если вы хотите прогнозировать изображения в реальном времени, мы рекомендуем переключиться на более мощное оборудование, такое как Nvidia Jetson TX2. Но для нашего случая использования Raspberry Pi было достаточно.

Мы не будем объяснять здесь, как установить и настроить службы, которые мы будем использовать для нашего прототипа, так как это займет слишком много времени и не является нашей целью, но вот руководства, которые помогут вам начать и которые помогли нам :

  • AWS Greengrass: чтобы узнать, как создать группу, установите ядро, получите сертификаты, обновите лямбды и т. Д.
  • AWS Machine Learning Inference: руководство, в котором показано, как установить логический вывод машинного обучения за несколько шагов. Наш вариант использования в основном основан на этом руководстве.

При установке пакета MXNet из этого руководства, если вы используете Raspberry Pi, как мы, вам, вероятно, потребуется увеличить память подкачки (если ваша карта MicroSD позволяет вам). Для этого просто выполните следующие команды:

sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo /sbin/swapon /var/swap.1

После завершения установки пакетов вы можете удалить временную память подкачки, выполнив следующие команды:

sudo swapoff /var/swap.1
sudo rm /var/swap.1

Когда вы установили и поместили необходимые сертификаты в Raspberry Pi, вы можете продолжить, создав группу Greengrass.

Следующим шагом будет добавление новой лямбды.

Затем создайте Lambda и выполните действия, описанные в ранее упомянутом руководстве по AWS.

Убедитесь, что ваша модель MXNet доступна в ведре S3. Предупреждаю, что на момент написания этой статьи MXNet 1.2.1 была единственной версией, совместимой с Greengrass. То же самое и с версией Tensorflow 1.4.

Не забудьте сделать его долгоживущим и разрешить доступ для чтения к каталогу the/sys. Наконец, установите ключ MXNET_ENGINE_TYPE на NaiveEngine.

Затем создайте ресурсы videoCoreInterface, videoCoreSharedMemory и Food_Model, чтобы в нашем экземпляре Lambda была доступна наша модель.

В наших подписках мы подписали наше IoT Cloud на нашу Lambda с темой gg/inference/food/trigger, так что наше ядро ​​делает прогноз только тогда, когда мы вызываем эту тему (по запросу). И, наконец, IoT Cloud для нашей Lambda с темой gg/inference/food, чтобы наше ядро ​​работало в бесконечном цикле (долгоживущем), чтобы делать прогнозы как можно чаще.

Наконец, мы развертываем наши данные в нашем ядре, и все будет работать само по себе.

Чтобы проверить, все ли работает, нажмите кнопку тестирования в нижнем левом углу экрана. Подпишитесь на gg/inference/food, и вы увидите свои прогнозы.

Надеюсь, все было ясно. Мы просто хотели объяснить и устроить небольшую демонстрацию того, что такое Greengrass и возможности логического вывода машинного обучения. Процесс прогнозирования занимает от 1 до 1,2 секунды, но в настоящее время мы изучаем некоторые аппаратные ускорители, которые помогут улучшить скорость прогнозирования.

Вам понравилось? В таком случае, не стесняйтесь 👏 нашу статью или подпишитесь на нашу новостную рассылку Innovation watch!
Вы можете подписаться на Smile в Facebook, Twitter и Youtube.