Почему стоит ожидать Flink + AI?

Flink

Автор: Цинь Цзянцзе

На Flink Forward Asia 2019 (далее FFA) в ноябре прошлого года сообщество Flink предложило несколько основных направлений будущего развития, одно из которых — внедрение ИИ [1]. На самом деле, в последние годы ИИ продолжает оставаться на пике популярности, и одна за другой появляются различные вычислительные фреймворки, модели и алгоритмы, и с определенной точки зрения эта дорожка уже немного переполнена. В таком случае, как Flink будет использовать ИИ и какую новую ценность он принесет пользователям? Каковы преимущества и недостатки Flink AI? В этой статье будет проанализировано направление развития Flink AI путем обсуждения этих вопросов.

Архитектура Lambda, унификация пакетов потоков и ИИ в реальном времени

Ценность Flink для ИИ на самом деле связана с двумя концепциями архитектуры Lambda [2] и унификации потоков и пакетов в больших данных. Ценность, которую Flink привносит в большие данные в реальном времени, также принесет пользу ИИ.

Кратко рассмотрим процесс разработки больших данных. Долгое время после публикации новаторской статьи Google «Тройка» [3][4][5] основным направлением разработки больших данных были только пакетные вычисления. Позже, когда все осознали важную роль своевременности данных, движок с открытым исходным кодом для потоковых вычислений Twitter Storm [6] стал очень популярным, а также появились различные движки для потоковых вычислений, включая Flink. Из соображений стоимости, точности вычислений и отказоустойчивости различные предприятия использовали решение, называемое лямбда-архитектурой, которое объединяет пакетные и потоковые вычисления в одной архитектуре, чтобы улучшить стоимость, отказоустойчивость и своевременность данных. между сексом.

Архитектура Lambda также имеет некоторые проблемы при решении проблемы своевременности данных, наиболее критикуемой из которых является системная сложность и ремонтопригодность. Пользователям необходимо поддерживать набор механизмов и кодов для пакетного уровня и уровня скорости, а также необходимо убедиться, что логика расчета между ними полностью согласована (рис. 1).

image.jpeg

Рисунок 1

Чтобы решить эту проблему, каждый вычислительный движок предпринял попытку унифицировать потоки и пакеты, пытаясь использовать один и тот же набор движков для выполнения потоковых и пакетных задач (рис. 2). После нескольких лет больших волн Spark [7] и Flink стали двумя основными вычислительными движками в настоящее время в первом эшелоне. Flink постепенно вошел в пакетные вычисления из потоковых.Очень типичным успешным случаем является использование одного и того же набора стандартных операторов SQL для запросов к потокам и пакетам и для обеспечения согласованности конечных результатов [8]. Spark, с другой стороны, предлагает Spark Streaming от пакетных вычислений к потоковым вычислениям в виде микропакетов, но производительность задержки всегда уступает.

image.jpeg

фигура 2

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

Текущий ИИ можно условно разделить на три основных этапа: предварительная обработка данных (также известная как подготовка данных/разработка функций и т. д.), обучение модели и прогнозирование логических выводов. Давайте рассмотрим требования к ИИ в реальном времени на каждом этапе один за другим и какие проблемы необходимо решить. Чтобы облегчить аналогию с архитектурой больших данных, мы предварительно полагаем, что потоковые вычисления и пакетные вычисления, как тип вычислений, разделили все вычисления на основе данных на две части, и ничего не упущено. Различные этапы ИИ также можно разделить на один из двух в зависимости от сцены.

Предварительная обработка данных (подготовка данных/разработка функций)

Этап предварительной обработки данных — это предварительный процесс обучения модели и прогнозирования вывода, и во многих случаях это скорее проблема больших данных. В зависимости от нисходящего потока после предварительной обработки данных предварительная обработка данных может быть пакетной или потоковой, а тип вычислений соответствует нисходящему. В типичном сценарии обучения в автономном режиме (пакетные вычисления) и прогнозирования в режиме онлайн (потоковые вычисления) логика предварительной обработки, необходимая для генерации входных данных во время обучения и прогнозирования, одинакова (например, одна и та же логика объединения образцов), а требования здесь аналогичны архитектура Lambda.Требования те же, поэтому унифицированный движок Stream-Batch будет особенно выгоден. Это позволяет избежать использования двух разных механизмов для пакетных и потоковых заданий, а также избавляет от необходимости поддерживать два набора кода с согласованной логикой.

обучение модели

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

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

Кроме того, в некоторых сценариях распределение выборки на этапе прогнозирования может быть неизвестно на этапе обучения. Например, в таких сценариях, как Double Eleven от Alibaba, горячий поиск Weibo, высокочастотная торговля и т. д., где распределение выборок может измениться непредсказуемо, очень ценным является способ быстрого обновления модели для получения лучших результатов прогнозирования.

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

предсказание вывода

Среда и типы вычислений канала логического вывода и прогнозирования относительно богаты, включая пакетную обработку (офлайн-прогнозирование) и потоковую обработку. Потоковое прогнозирование можно условно разделить на онлайн-прогнозирование (Online) и ближнее (Nearline) прогнозирование. Онлайн-прогнозирование обычно находится в критическом звене (критическом пути) доступа пользователя, поэтому для него требуются чрезвычайно высокие требования к задержке, например миллисекунды. Требования к предсказанию ближней линии немного ниже, обычно на уровне от доли секунды до второго. В настоящее время большинство движков распределенных вычислений с чистой потоковой передачей (Native Stream Processing) могут удовлетворить потребности в предварительной обработке и прогнозировании данных в режиме реального времени, в то время как для предварительной обработки и прогнозирования онлайн-данных обычно требуется, чтобы код прогнозирования был записан в приложение для обеспечения чрезвычайно низкой задержки. запрос. Таким образом, сцена онлайн-прогнозирования с меньшей вероятностью увидит фигуру двигателя больших данных. В этом отношении Stateful Function Flink [9] является уникальной инновацией. Первоначальная цель Stateful Function состоит в том, чтобы создать онлайн-приложение с помощью нескольких функций с отслеживанием состояния на Flink, с помощью которых можно получить услуги онлайн-прогнозирования со сверхнизкой задержкой. Таким образом , пользователи могут использовать один и тот же набор кодов и один и тот же механизм для предварительной обработки данных и прогнозирования в сценариях офлайн, ближнего и онлайн.

Таким образом, можно увидеть, что существует важное требование для ИИ в реальном времени на каждом основном этапе машинного обучения.Какая системная архитектура может эффективно удовлетворить такие требования?

Архитектура Flink и AI в реальном времени

Наиболее типичным примером архитектуры ИИ на сегодняшний день является автономное обучение в сочетании с онлайн-выводом и прогнозированием (рис. 3).

image.gif

изображение 3

Как упоминалось ранее, в этой архитектуре есть две проблемы:

  1. Цикл обновления модели обычно длительный.
  2. Предварительная обработка в автономном и онлайн-режиме может потребовать поддержки двух наборов кода.

Чтобы решить первую проблему, нам нужно ввести обучающую ссылку в реальном времени (рис. 4).

image.jpeg

Рисунок 4

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

Будь то чисто онлайн или чисто оффлайн ссылка, она подходит не для всех сценариев ИИ. Подобно идее Lambda, мы можем объединить их (рис. 5).

image.jpeg

Рисунок 5

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

image.gif

Изображение 6

Кроме того, чтобы еще больше снизить сложность системы, компания Flink предприняла ряд усилий по обучению моделей (рис. 7).

  • Библиотека алгоритмов Stream-Batch Alink

На прошлогодней FFA 2019 Alibaba объявила, что открыла исходный код библиотеки алгоритмов машинного обучения на основе Flink Alink [10] и планирует постепенно возвращать ее обратно в Apache Flink как Flink ML Lib, которая будет выпущена вместе с Apache Flink. Помимо алгоритмов автономного обучения, главной особенностью Alink является то, что он предоставляет пользователям алгоритмы онлайн-обучения, помогающие Flink играть более важную роль в ИИ в режиме реального времени.

  • Глубокое обучение на Flink (flink-ai-extended [11])

Помогите пользователям интегрировать популярные платформы глубокого обучения (TensorFlow, PyTorch) в Flink. Это позволяет пользователям, не являющимся разработчиками алгоритмов глубокого обучения, реализовать полный набор архитектур ИИ на основе Flink.

  • Stream-Batch Унифицированная итеративная семантика и высокопроизводительная реализация

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

image.jpeg

Рисунок 7

Конечно, в полной архитектуре ИИ, помимо трех основных этапов, упомянутых выше, есть много других задач, которые необходимо выполнить, включая стыковку различных источников данных, стыковку существующих экосистем ИИ, а также онлайн-модель и образец. мониторинга и различных периферийных вспомогательных систем и т. д. Многие из этих усилий хорошо представлены на диаграмме (рис. 8) из основного выступления на FFA 2019 Ван Фэна (Хуа Мин Моуэн), руководителя отдела вычислений в реальном времени в Alibaba.

image.jpeg

Рисунок 8

Сообщество Flink также работает над этим. Грубо говоря, эту работу, связанную с ИИ, можно разделить на три категории: дополнять, улучшать и вводить новшества. Некоторые из незавершенных работ перечислены ниже. Некоторые работы могут не иметь прямого отношения к ИИ, но они повлияют на улучшение сервиса Flink для ИИ в режиме реального времени.

Дополнение: у людей есть, а у меня нет

  • Flink ML Pipeline [12]: помогает пользователям легко хранить и повторно использовать полную вычислительную логику машинного обучения.
  • Flink Python API (PyFlink [13]): Python — это родной язык ИИ, а PyFlink предоставляет пользователям самый важный интерфейс программирования в ИИ.
  • Интеграция с ноутбуком [14] (Zeppelin): предоставляет удобный API для экспериментов пользователей с искусственным интеллектом.
  • Собственная поддержка Kubernetes [15]: интеграция с Kubernetes для поддержки облачной разработки, развертывания и эксплуатации и обслуживания.

Улучшение: люди сильнее меня

  • Модернизация и оптимизация коннектора [16]: упрощение реализации коннектора и расширение экосистемы коннектора.

Инновация: у меня нет ничего без других

  • AI Flow: большие данные + абстракция рабочего процесса верхнего уровня AI и вспомогательные услуги, которые учитывают потоковые вычисления (скоро с открытым исходным кодом).
  • Stateful Function[9]: обеспечивает предварительную обработку данных со сверхнизкой задержкой и прогнозирование логических выводов, сравнимое с онлайн-приложениями.

Некоторые из них являются собственными функциями Flink как популярного механизма больших данных, например, расширение экосистемы коннекторов для подключения различных внешних источников данных. Другие полагаются на экологические проекты, отличные от Flink, для завершения, наиболее важным из которых является AI Flow. Хотя он возник из-за поддержки архитектуры ИИ в реальном времени, он не связывает Flink на уровне механизма, а фокусируется на абстракции унифицированного рабочего процесса верхнего уровня поток-пакет, который направлен на обслуживание различных платформ, механизмов и систем для ИИ в реальном времени. , Архитектура обеспечивает поддержку среды. Из-за нехватки места я не буду повторять их здесь, поэтому представлю их вам в другой статье.

напиши в конце

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

Flink AI, будущее можно ожидать.

Использованная литература:

[1]ver V Эрика Талант /разработчики/… [2] Эн. Wikipedia.org/wiki/lambda… [3]static.Google user content.com/Media/Hot colors… [4]static.Google user content.com/Media/Hot colors… [5]static.Google user content.com/Media/Hot colors… [6] storm.apache.org/ [7] spark.apache.org/ [8]this.apache.org/projects/legal… [9] statefun.io/ [10] GitHub.com/Алибаба/Алибаба… [11] GitHub.com/Alibaba/Благополучие… [12]Из wiki.Apache.org/confluence/… [13]this.apache.org/projects/legal… [14] Tickets.WeChat.QQ.com/Yes/Ah 6za U9 от 1Z… [15]this.apache.org/projects/legal… [16]Из wiki.Apache.org/confluence/…