Статьи

UDF KSQL с глубоким обучением для обнаружения потоковых аномалий данных датчика IoT MQTT

Я создал сценарий для гибридной инфраструктуры машинного обучения, используя Apache Kafka в качестве масштабируемой центральной нервной системы. Публичное облако используется для обучения аналитических моделей в экстремальных масштабах (например, с использованием TensorFlow и TPU на облачной платформе Google (GCP) через Google ML Engine . Прогнозы (то есть вывод модели) выполняются на месте на краю в локальной инфраструктуре Kafka ( например, используя Kafka Streams или KSQL для потоковой аналитики).

Этот пост посвящен развертыванию в помещении. Я создал проект Github с KSQL UDF для сенсорной аналитики . Он использует новые функции API в KSQL, чтобы легко создавать функции UDF / UDAF с Java для непрерывной потоковой обработки входящих событий.

Вариант использования: Подключенные машины — потоковая аналитика в реальном времени с использованием Deep Learning

Непрерывно обрабатывать миллионы событий от подключенных устройств (в данном примере датчиков автомобилей):

Глубокое обучение

Я построил разные аналитические модели для этого. Они обучаются использованию публичного облака с использованием TensorFlow, H2O и Google ML Engine. Создание модели не является предметом этого примера. Окончательная модель уже готова к производству и может быть развернута для выполнения прогнозов в режиме реального времени.

Обслуживание модели может осуществляться через сервер моделей или встроено в приложение потоковой обработки. Посмотрите компромиссы между RPC и Stream Processing для развертывания модели и пример «TensorFlow + gRPC + Kafka Streams» здесь .

Демонстрация: вывод модели на грани с MQTT, Kafka и KSQL

Проект Github генерирует данные автомобильного датчика и передает их через Confluent MQTT Proxy в кластер Kafka для обработки KSQL и анализа в реальном времени .

Этот проект направлен на прием данных в Kafka через MQTT и обработку данных через KSQL:

Глубокое обучение

Большим преимуществом Confluent MQTT Proxy является простота реализации сценариев IoT без необходимости использования MQTT-брокера. Вы можете пересылать сообщения непосредственно с устройств MQTT на Kafka через прокси-сервер MQTT. Это значительно снижает усилия и затраты. Это идеальное решение, если вы просто хотите общаться между устройствами Kafka и MQTT.

Если вы хотите увидеть другую часть истории (интеграция с приложениями-приемниками, такими как Elasticsearch / Grafana), обратите внимание на проект Github « KSQL для потоковой передачи данных IoT ». Это реализует интеграцию с ElasticSearch и Grafana через Kafka Connect и Elastic Connector.

KSQL UDF — Исходный код

Разработать UDF довольно просто. Просто реализуйте функцию в одном методе Java в классе UDF:

1
2
@Udf(description = "apply analytic model to sensor input")
            public String anomaly(String sensorinput){ "YOUR LOGIC" }

Вот полный исходный код UDF для обнаружения аномалий KSQL .

Как запустить демоверсию с Apache Kafka и MQTT Proxy?

Все шаги для запуска демонстрации описаны в проекте Github.

Вам просто нужно установить Confluent Platform, а затем выполнить эти шаги для развертывания UDF, создания событий MQTT и обработки их через KSQL, используя аналитическую модель .

Я использую Mosquitto для генерации MQTT-сообщений . Конечно, вы также можете использовать любой другой клиент MQTT. Это большое преимущество открытого и стандартизированного протокола.

Гибридная облачная архитектура для Apache Kafka и машинного обучения

Если вы хотите узнать больше о концепциях масштабируемой, независимой от производителя инфраструктуры машинного обучения, посмотрите мою презентацию на Slideshare или посмотрите запись соответствующего веб-семинара Confluent « Раскрытие Apache Kafka и TensorFlow в облаке ».

Выпуск Apache Kafka и TensorFlow в облаке от Кая Венера

Пожалуйста, поделитесь любой обратной связью! Тебе нравится это, или нет? Есть еще мысли?

Опубликовано на Java Code Geeks с разрешения Кая Вейнера, партнера нашей программы JCG. См. Оригинальную статью здесь: Deep Learning KSQL UDF для обнаружения потоковых аномалий данных датчика IoT MQTT

Мнения, высказанные участниками Java Code Geeks, являются их собственными.