Я создал сценарий для гибридной инфраструктуры машинного обучения, используя 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
Этот проект направлен на прием данных в 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 в облаке ».
Пожалуйста, поделитесь любой обратной связью! Тебе нравится это, или нет? Есть еще мысли?
Опубликовано на Java Code Geeks с разрешения Кая Вейнера, партнера нашей программы JCG. См. Оригинальную статью здесь: Deep Learning KSQL UDF для обнаружения потоковых аномалий данных датчика IoT MQTT
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |