Google Cloud Dataflow, вероятно, уже встроен где-то в вашу повседневную жизнь и позволяет компаниям обрабатывать огромные объемы данных в режиме реального времени. Но представьте, что вы могли бы объединить это — в том числе в режиме реального времени — с прогнозирующей силой нейронных сетей. Именно об этом мы поговорим в нашем последнем блоге!

Все началось с возни с Apache Beam, инкубационным проектом Apache, который предоставляет модель программирования, которая обрабатывает как пакетные, так и потоковые задачи обработки. Мы хотели протестировать возможности потоковой передачи, запускающие конвейер в Google Cloud Dataflow, управляемой Google службе для запуска таких конвейеров. Конечно, нужен источник данных, и в данном случае потоковый. Войдите в Twitter, который обеспечивает приятный непрерывный поток данных в виде твитов.

Чтобы легко получать твиты в Beam, мы подключили поток к Google Cloud PubSub, высоко масштабируемой очереди сообщений. Мы установили некоторые фильтры для потока Twitter (очевидно, мы включили @teamdatatonic и #datatonic), а затем подключили поток PubSub к Dataflow.

Dataflow имеет коннектор, который легко считывает данные из PubSub. Входящие точки данных являются необработанными строковыми json-файлами, и их сначала нужно разобрать и отфильтровать. Это делается в части конвейера "Анализ твитов" (обзор конвейера см. ниже). Мы извлекаем текст из твитов, но чтобы получить достоверные данные для модели машинного обучения, мы также должны их векторизировать. Это делается на шаге «Создание векторов из текста».
Как вы можете заметить на приведенном ниже графике потока данных, на этом шаге используется побочный ввод: Что ж. Поскольку входными данными для модели машинного обучения, которую мы использовали, являются числа, а не строки, мы назначаем разные слова разным индексам и используем справочную таблицу для их преобразования. Делается это путем загрузки словаря в память (полный словарь составил 4,5 МБ) всех воркеров Dataflow, где таблица поиска реализована в виде Hashmap.

Конвейер Google Cloud Dataflow для обработки твитов, прогнозирования настроений и записи в BigQuery Следующее, что нам нужно, — это простая, но крутая модель, которую мы могли бы применить к нашим твитам. К счастью, на GitHub есть несколько готовых к использованию моделей, таких как эта, которая предсказывает настроения с помощью сверточной нейронной сети (CNN). Мы не будем здесь вдаваться в подробности, так как сосредоточили свою работу на конвейере, а не на получении наиболее точных прогнозов. Единственные изменения, которые мы внесли в модель, описаны здесь, что позволяет Google Cloud Machine Learning обрабатывать входные и выходные данные графа Tensorflow, а затем мы развернули его.

Одно из Возможности Cloud Machine Learning — это онлайн-прогнозы — они создаются с помощью HTTP-запросов, тело которых содержит экземпляры, которые мы хотим классифицировать. Мы использовали клиентскую библиотеку для Java для обработки связи между рабочими потоками данных и интерфейсом API облачного машинного обучения, который требует авторизации.

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

Мы отправили каждый твит с его настроением в BigQuery, где его можно использовать для дальнейшего анализа или визуализации. Обзор полной архитектуры можно найти ниже. Как видите, мы добавили Google Cloud Datastore и Google Cloud BigTable, которые можно использовать, когда файл поиска становится слишком большим, чтобы поместиться в памяти, или их можно использовать для улучшения данных в вашем конвейере в другие способы. Это позволит использовать ряд различных приложений (например, анализ временных рядов), где нам нужен произвольный доступ с малой задержкой к большим объемам данных.

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

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