В нашем предыдущем посте мы показали, как применение принципов Zero Waste Engineering™ увеличивает влияние инициатив по науке о данных IoT. В этой статье представлен обзор некоторых инструментов обработки данных IoT от AWS и Microsoft Azure, которые чаще всего используются в контексте решений IoT для промышленных предприятий.

И AWS, и Azure предлагают управляемые сервисы машинного обучения, которые обещают простую разработку и развертывание машинного обучения. Разработав и развернув модели машинного обучения с предыдущими поколениями облачных сервисов машинного обучения, мы решили протестировать несколько новых предложений, используя недавнюю проблему прогнозирования IoT.

Мы начали с потоковой передачи данных устройств в Azure IoT Hub и AWS IoT Core, которые в конечном итоге попали в озеро данных — Azure Data Lake Storage Gen2 и AWS S3 соответственно. Здесь же мы разместили данные из других систем, необходимые для контекстуализации данных устройства. Вы можете прочитать о построении Конвейера данных IoT в предыдущем посте.

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

Наши клиенты полагаются как на Microsoft, так и на Amazon Web Services, поэтому мы решили решать одни и те же задачи как в Azure Machine Learning, так и в AWS SageMaker:

  • Исследуйте данные Интернета вещей
  • Обучить модель
  • Разверните модель как отдельную конечную точку службы прогнозирования.
  • Разверните модель как часть рабочего процесса пакетной оценки.

Ниже мы делимся нашими выводами и уроками, извлеченными с точки зрения «новичка». Внимание, спойлер: машинное обучение Azure и AWS SageMaker обеспечили надежную работу, и мы остались очень довольны результатами.

Использование местных инструментов

Многие исследования данных начинаются с локальных инструментов и подмножества данных, поэтому стоит упомянуть, что и AWS, и Azure позволяют очень легко загружать данные из соответствующих озер данных для локальной обработки. Вы также можете получить доступ к облачным озерам данных напрямую с помощью локальных инструментов через их SDK.

Сначала я загрузил данные на свой локальный компьютер непосредственно из консоли S3 и портала Azure Data Lake Gen2, а затем прочел их в блокноты Jupyter Anaconda (индивидуальная версия бесплатна) для изучения и визуализации локальных данных. Тем не менее, любой удобный инструмент, который может обрабатывать ваши данные, прекрасно подойдет, если вы можете заставить его сообщить вам то, что вы хотите знать; иногда электронная таблица — это все, что вам нужно для начала работы. Упрощать, упрощать.

Предложения Microsoft Azure по обработке и анализу данных

Azure Databricks

Azure Databricks — это полностью управляемая платформа Apache Spark для аналитики, обработки данных и обработки данных. Он позволяет запрашивать, исследовать и анализировать очень большие файлы и наборы данных, а также объединять разрозненные источники данных в озера данных. Встроенный интерфейс ноутбука поддерживает Python, R, SQL, .NET, Java и Scala и позволяет разрабатывать и обучать модели на основе огромных наборов данных. Он также предоставляет возможность обрабатывать потоки данных в реальном времени, управлять вычислительными кластерами, моделями и планировать задания.

Наша деятельность в Databricks была сосредоточена на исследовании данных, специальном анализе и обработке данных без машинного обучения. Мы получили доступ к нашему озеру данных с помощью dbutils, затем использовали комбинацию PySpark и SQL (spark.read.json, create temp view, spark.sql) для запроса и объединения IoT и других источников данных, создавая фреймы данных с наборы результатов для дальнейшей обработки и визуализации.
Мы выполнили такой же запрос данных и обработали их через блокноты в кластере Azure HDInsights также без проблем.

Машинное обучение Azure

Azure Machine Learning (AzureML), как и Databricks, представляет собой полностью управляемый сервис для поддержки полного жизненного цикла разработки машинного обучения, предоставляющий возможность обучать, развертывать, автоматизировать, управлять и отслеживать модели машинного обучения, эксперименты, конечные точки и конвейеры. .

AzureML предлагает глубокое обучение, настройку гиперпараметров и автоматизированное машинное обучение, когда вы предоставляете набор данных, определяете задачу и метрику, которую хотите оптимизировать, а затем служба экспериментирует с несколькими алгоритмами, чтобы определить наилучшую модель. Вы можете установить границы вокруг процесса; сервис отслеживает все эксперименты, а модели объяснимы. Это дает преимущество, особенно если вы не специалист по данным, экономя часы первоначальных исследований и ручных экспериментов. Однако получившиеся модели все еще нуждаются в проверке, настройке и оптимизации — это не панацея.

Вы можете взаимодействовать с сервисом через веб-портал AzureML Studio, интерфейс командной строки или SDK. AzureML поддерживает записные книжки Jupyter/JupyterLab с Python или R. Корпоративная версия также предлагает интерфейс без кода/минимального кода для работы с данными, который называется Designer (предварительная версия на момент написания этой статьи), предназначенный для тех, кто только начинает работать с данными. наука. Вместо написания кода в блокнотах вы перетаскиваете модули, выполняющие различные задачи, на холст, чтобы создать свою деятельность по машинному обучению (снимок экрана ниже). Корпоративная версия также предоставляет графический интерфейс для автоматического машинного обучения.

Studio — это IDE для управления всем в мире AzureML. Доступ к рабочей области управляется с помощью типичного управления доступом Azure IAM, что упрощает совместную работу. Он предоставляет средства для управления источниками данных и наборами данных, записными книжками, вычислительными ресурсами, отслеживанием экспериментов (обучающие задания, оптимизация параметров и т. д.), моделями, конечными точками и конвейерами. Интерфейс довольно интуитивно понятен и прост в использовании, если вы ориентируетесь в документах.

Исследование данных

Я работал со Studio и Jupyter Notebooks (python) во время взаимодействия со службой, и мне было легко получить доступ к озеру данных для исследования данных и создания функций. Доступ к данным осуществляется через хранилища данных. Я настроил один для нашего озера данных Gen2, а затем создал из него набор данных, используя Dataset.Tabular.from_delimted_files. Затем я загрузил набор данных в фрейм данных pandas и отправился в путь.

Разработка модели

Нашей задачей была контролируемая классификация. Я выполнил ручное создание функций с пандами и использовал логистическую регрессию SKLearn для обучения модели. Можно настроить эксперименты по настройке параметров и отслеживать результаты в консоли. Как только у меня появилась модель, которой я был доволен, я сериализовал ее с помощью pickle и зарегистрировал полученный файл .pkl в качестве модели в рабочей области.

Развертывание

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

Я также настроил конвейер машинного обучения, чтобы использовать модель для процесса пакетной оценки. Конвейеру передается имя файла исходных входных данных, он содержит шаги для подготовки данных и создания функций, пакетной оценки и записывает выходной файл для дальнейшей обработки. Построение и отладка конвейера машинного обучения были сложными при работе только с документами, но я нашел набор учебников на сайте MSLearn, в которых были хорошие объяснения. Затем я включил конвейер машинного обучения в конвейер Azure DataFactory, запускаемый при добавлении файла в озеро данных.

Предложения AWS по машинному обучению

AWS SageMaker

Amazon SageMaker — это полностью управляемый сервис машинного обучения, который предоставляет возможность создавать, обучать и развертывать модели машинного обучения. SageMaker предлагает традиционное машинное обучение, глубокое обучение, контролируемое и неконтролируемое обучение, автоматическое машинное обучение и настройку гиперпараметров. Кроме того, они также предлагают услугу маркировки данных с использованием механического турка, развертывания нескольких моделей, компилятора моделей (Neo) для создания очень портативных развертываний и искусственного интеллекта, дополненного человеком.

Вы можете взаимодействовать с SageMaker через консоль веб-сайта, интерфейс командной строки или SDK. В их консоли вы можете дополнительно настроить Studio, которую они называют IDE для управления вашей деятельностью по машинному обучению. Интерфейс AWS Studio напоминает мне Azure Studio. Это почти как оболочка для остальной части сервиса, но не совсем. Однако найти его непросто (см. изображение ниже).

В целом, я нашел SageMaker более сложным и менее интуитивным для работы, чем сервис AzureML, хотя такие различия являются теми вещами, над которыми Microsoft и AWS постоянно работают. Текущие версии документов и учебных материалов также кажутся немного скудными, хотя вы можете рассчитывать на то, что со временем это тоже улучшится.

Мы нацелились на ту же функциональность в SageMaker, что и в AzureML, — разработку модели на основе данных устройства IoT в озере данных и ее развертывание в конечной точке для обслуживания одиночных прогнозов, а также использование модели для пакетных прогнозов.

Исследование данных

Было очень легко запустить экземпляр ноутбука (EC2) и получить доступ к нашему озеру данных через ноутбуки Jupyter Lab. Я использовал блокнот Python и библиотеку boto3 для перебора целевых подкаталогов и файлов корзины S3, чтобы создать один большой набор данных, которым я затем манипулировал с помощью pandas.

Разработка модели

Отказ нашего устройства — это проблема бинарной классификации, и я использовал встроенный в SageMaker алгоритм xgboost для разработки своей модели. Я ничего не делал, кроме минимальной очистки данных, и быстро обучил довольно точную модель, которую было легко развернуть и протестировать. Вероятно, в немалой степени это связано с тем, что я решил использовать XGBoost (без написания и отладки скрипта подсчета очков). Журналы заданий по обучению были доступны через CloudWatch.

Развертывание

Я развернул свою модель в качестве конечной точки, чтобы сделать один прогноз, который затем протестировал с помощью ноутбука, и он работал нормально. Вы также можете использовать postman для создания подписанного заголовка — они не предназначены для общедоступных конечных точек — хотя здесь у нас были проблемы с авторизацией. Если вы хотите пойти по этому пути, вот несколько советов, которые вам помогут.

Следующей задачей было запустить пакетные прогнозы с использованием той же модели. Настроить задание пакетного преобразования было довольно просто: мне нужно было создать входной и выходной каталоги в корзине S3 и загрузить входной файл. Потребовалось всего несколько строк кода в блокноте, чтобы создать запуск пакетного преобразования с записью ожидаемых результатов обратно в S3. У меня было несколько первоначальных сбоев из-за проблем с входными файлами, и я смог получить доступ ко всем журналам запуска через CloudWatch.

Наконец, я включил пакетные прогнозы в рабочий процесс, запускаемый добавлением файла в озеро данных с использованием лямбда-функции с триггером S3. Я написал функцию на python, используя клиент boto3 sagemaker для создания задания преобразования. Это было очень просто.

Ради интереса я также запустил задание autoML с помощью Studio. AutoPilot обработал мои данные, проработал пару часов, вызвав поразительное количество заданий, а затем предложил лучшее предложение для моей модели классификатора. AutoPilot демонстрирует свою работу: в процессе работы он создал две записные книжки, чтобы вы могли точно видеть, что было сделано. Прохладный.

Вывод

Как Azure Machine Learning, так и AWS SageMaker оправдывают свои обещания относительно простой разработки и развертывания моделей машинного обучения. мы смогли без особых трудностей разработать и развернуть наши модели данных IoT в обеих службах. Поэтому наша рекомендация относительно Azure и AWS — использовать облачную платформу, от которой уже зависит ваше предприятие. В качестве альтернативы, если это все еще открытое решение, начните с того, что вашей команде наиболее удобно, чтобы начать свои усилия по анализу данных IoT.

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

Первоначально опубликовано на https://brightwolf.com 14 августа 2020 г.