Примечание редактора. Кай Венер будет спикером ODSC Europe в июне этого года. Обязательно ознакомьтесь с его докладом «Apache Kafka для машинного обучения в реальном времени без озера данных» здесь!

Сочетание потоковой передачи данных и машинного обучения (ML) позволяет создать единую масштабируемую, надежную, но в то же время простую инфраструктуру для всех задач машинного обучения с использованием экосистемы Apache Kafka. В этом сообщении блога представлен вариант использования профилактического обслуживания в инфраструктуре подключенного автомобиля, но обсуждаемые компоненты и архитектура полезны в любой отрасли.

Экосистема Apache Kafka все чаще используется для создания масштабируемой и надежной инфраструктуры машинного обучения для приема данных, предварительной обработки, обучения моделей, прогнозирования в реальном времени и мониторинга. Ранее я обсуждал примеры использования и архитектуры, использующие Apache Kafka и машинное обучение.

Вот краткий обзор того, как это выглядит:

Старый способ: Kafka как уровень загрузки в озеро данных

Озеро данных — это система или репозиторий данных, хранящихся в их естественном/необработанном формате — обычно это большие двоичные объекты или файлы. Обычно это единое хранилище всех корпоративных данных, включая необработанные копии данных исходной системы и преобразованные данные, используемые для таких задач, как отчетность, визуализация, расширенная аналитика и машинное обучение. Обычно используемые технологии для хранения данных — распределенная файловая система Hadoop (HDFS), Amazon S3, облачное хранилище Google (GCS) или хранилище BLOB-объектов Azure, а также такие инструменты, как Apache Hive, Apache Spark и TensorFlow для обработки данных и аналитики. Обработка данных происходит в пакетном режиме, когда данные хранятся в состоянии покоя, и может занять минуты или даже часы.

Apache Kafka — это платформа потоковой передачи событий, которая собирает, хранит и обрабатывает потоки данных (событий) в режиме реального времени эластичным, масштабируемым и отказоустойчивым способом. Брокер Kafka неизменно хранит данные в распределенной высокодоступной инфраструктуре. Потребители читают события и обрабатывают данные в режиме реального времени.

Очень распространенным шаблоном для построения инфраструктуры машинного обучения является прием данных через Kafka в озеро данных.

Оттуда среда машинного обучения, такая как TensorFlow, H2O или Spark MLlib, использует исторические данные для обучения аналитических моделей с помощью таких алгоритмов, как деревья решений, кластеризация или нейронные сети. Затем аналитическая модель развертывается на сервере моделей или любом другом приложении для прогнозирования новых событий в пакетном режиме или в режиме реального времени.

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

Еще одним недостатком этого традиционного подхода является использование озера данных только для хранения данных. Это добавляет дополнительные затраты и эксплуатационные усилия для всей архитектуры. Всегда следует спрашивать себя: нужно ли мне дополнительное озеро данных, если у меня уже есть данные в Kafka? Каковы преимущества и варианты использования? Нужно ли мне центральное озеро данных для всех бизнес-подразделений или озеро данных нужно только для одного бизнес-подразделения? Если да, то это для всех или только для некоторых данных?

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

Новый способ: Kafka для потокового машинного обучения без озера данных

Давайте рассмотрим новый подход к обучению моделей и прогнозам, не требующий озера данных. Вместо этого используется потоковое машинное обучение: прямое потребление потоков данных из Kafka во фреймворк машинного обучения.

В этом примере используется ввод-вывод TensorFlow и его подключаемый модуль Kafka. Экземпляр TensorFlow действует как потребитель Kafka для загрузки новых событий в свою память. Потребление может происходить по-разному:

  • В режиме реального времени непосредственно из кэша страниц: не с дисков, подключенных к брокеру
  • Ретроактивно с дисков: это могут быть все данные в теме Kafka, определенный период времени или определенные разделы.
  • Отставание: даже если целью всегда может быть потребление в режиме реального времени, потребитель может отстать и ему потребуется использовать «старые данные» с дисков. Кафка справляется с противодавлением

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

Благодаря потоковому машинному обучению вы можете напрямую использовать потоковые данные для обучения моделей и прогнозирования либо в одном приложении, либо по отдельности в разных приложениях. Разделение ответственности является передовой практикой и позволяет выбрать правильные технологии для каждой задачи. В следующем примере мы используем Python, любимый язык специалистов по обработке и анализу данных, для обучения моделей и надежное и масштабируемое приложение Java для прогнозирования моделей в реальном времени.

Весь конвейер построен на платформе потоковой передачи событий в независимых микросервисах. Это включает в себя интеграцию данных, предварительную обработку, обучение модели, прогнозирование в реальном времени и мониторинг:

Приведенный выше пример использует архитектуру Kappa, заменяющую Lambda на все большем количестве предприятий.

Потоковое машинное обучение упрощает инфраструктуру машинного обучения

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

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

Описанная архитектура потоковой передачи построена поверх платформы потоковой передачи данных Apache Kafka. В основе его архитектуры лежит основанный на событиях дизайн Kappa. Это позволяет использовать такие шаблоны, как поиск событий и CQRS, а также обработку в реальном времени и использование коммуникационных парадигм и шаблонов обработки, таких как близкое к реальному времени, пакетное или запрос-ответ. Многоуровневое хранилище обеспечивает долгосрочное хранение с низкой стоимостью и возможностью более легкого управления большими кластерами Kafka.

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

Если вы хотите узнать больше об этой инновационной архитектуре и о том, почему она по-прежнему дополняет (а не заменяет!) озеро данных, присоединяйтесь к моему выступлению ODSC в прямом эфире или по запросу.

Об авторе/спикере ODSC Europe:

Кай Венер — полевой технический директор Confluent. Он работает с клиентами и партнерами по всему миру, а также с внутренними командами, такими как инженеры и маркетологи. Основная область знаний Кая лежит в области потоковой передачи данных, аналитики, гибридных облачных архитектур и Интернета вещей. Кай регулярно выступает на международных конференциях, пишет статьи для профессиональных журналов и делится своим опытом использования в отрасли и новых технологий в своем блоге: www.kai-waehner.de. Контактное лицо: [email protected] / Twitter / LinkedIn.

Первоначально опубликовано на OpenDataScience.com

Читайте другие статьи по науке о данных на OpenDataScience.com, включая учебные пособия и руководства от начального до продвинутого уровня! Подпишитесь на нашу еженедельную рассылку здесь и получайте последние новости каждый четверг. Вы также можете пройти обучение по науке о данных по запросу, где бы вы ни находились, с нашей платформой Ai+ Training. Подпишитесь также на нашу быстрорастущую публикацию на Medium, ODSC Journal, и узнайте, как стать писателем.