KafkaにWASMモジュールを組み込んでリアルタイムで機械学習を実行するRedpandaのデモセッションを解説
ストリーミング処理のKafkaとAPI互換のあるRedpandaを使ってストリーミングでデータを受け取り、機械学習をバッチではなくリアルタイムでモデルを更新する、よりモダンなデモを使ってKafka互換のストリーミング処理を解説した動画セミナーを紹介する。これはThe Linux Foundationが2024年7月26日に公開したYouTubeの動画である。
●動画:Real-Time Predictions with Machine Learning & Streaming Data Transforms
動画の長さは50分を超えており、日本時間の7月26日深夜1時に行われたZoomによる配信がソースである。セッションを行ったのはRedpandaのDeveloper Advocate、Christina Lin氏だ。
Lin氏は台湾出身で、Redpandaの前のキャリアはRed Hatのアーキテクトという名称の役職に就いていたようだが、LinkedInのプロフィールを見るとテクニカルなマーケティングというよりも顧客のシステムを解説し、販促に使うという仕事だったようだ。現在はマサチューセッツ州在住で、Redpandaのデベロッパー向けのマーケティング職となっている。セッションのタイトルが「Real-Time Predictions with Machine Learning & Redpanda Streaming Data Transform」となっているように、機械学習をリアルタイムで実行し、予測を行うシステムの解説とストリーミング処理をKafkaではなくRedpandaを使うことによる利点を前後半に分けて解説している。
前半はストリーミング処理の入門編という内容で、KafkaとRedpandaの比較を含めて解説している。そして後半は、現状の機械学習で主流のバッチ処理によってデータセットを生成するという方法に対して、リアルタイムでデータを更新するデモを解説することで、バッチに頼らない方法が可能であることを説明する内容となっている。
前半の一番大事なスライドはコレだろう。Kafkaを構成するJavaとJVM、そしてここでは省略されているがZooKeeperという状態管理のためのクラスターからなる複雑なシステムから、C++で書かれたシンプルで高速なストリーミング処理のためのRedpandaを比較している。
そして機械学習や大規模言語モデル(LLM)を使ったアプリケーションの実装例を示して解説。ここでは包括的なモデルを提供するLLMとドメインに特化した推論を提供する機械学習モデルがハイブリッドになることで、現実的なアプリケーションとなるということを抽象的に解説している。
これには背景があると考えるべきだろう。Kafkaのストリーミング処理はイベントから発生するデータを複数のアプリケーションで活用するために、BrokerとConsumerが連係してやり取りすることで実装される。その前提からすればLLMも機械学習もアプリケーションのひとつとしてデータを消費する対象であるべきだというのがKafkaやRedpandaの発想だと思われる。
この図では、左側で発生したイベントデータがBrokerを通じてLLMや他のアプリケーションに配信され処理される概念を示している。アプリケーションによって処理されたデータは最終的に集約されてフィードバックされることも想定されている。
ここからは、ストリーミング処理の中で複数のConsumerアプリケーションがメッセージを処理するというデモを解説するフェーズになった。デモの構成図は複雑だが、実際にはRPGを模したゲームのキャラクターが対話を行う内容となっている。
ここでは対話の処理の部分に複数のLLMを使って、それぞれの対話のトーンを変えるという内容のようだ。
そしてAIの実装についても解説を行っている。これは後半のデモの前振りとなるもので、さまざまなイベントデータを取り込んで機械学習のためのデータセットの生成(テストや学習を含む)を経てモデルが完成し、そのデータセットを使って推論を行うという機械学習のプロセスの中では定番という内容となっている。
ここでは特にデータ処理のパイプラインが実行されることを強調している。そしてそのパイプラインの種類について解説したのが次のスライドだ。
この図にある三角形のトップにあるのが、従来の機械学習に使われるバッチ式でデータセットを処理する部分を表している。ここでは非構造的なクレンジングされていないデータを使うためにはバッチ式で行うことが示されているが、必ずしもそれを否定しているのではなく、バッチ式で構造的データに整形された後は、マイクロバッチ、ステートフルなストリーミング処理、最後にステートレスなストリーミング処理に移行していくということを意図していると思われる。
そしてデータ処理がステートレスなリアルタイム処理に近付くに従って、問題として浮き上がってくるのが「データピンポン問題」であると説明。ここで「データピンポン」とはデータを処理するアプリケーションが分散していることでピンポンのボールのようにデータが行ったり来たりを繰り返すことでシステム全体の効率を落とすことだと説明。ここでもKafkaのレガシーなシステム構成が非効率的な構造であることを指摘していると言える。
そしてKafkaに比べて高速で非効率なデータ交換が不要なシステムとして紹介したのが、Redpandaのデータ変換のためのパイプラインだ。WebAssemblyがデータ変換アプリケーションとして実行されることで通信が削減されることを解説した。
このスライドではKafkaのコンセプトである複数のノードでデータを複製することで障害時にもデータが保全される機能をRedpandaも持っていることを示している。そしてrpkというRedpandaのクラスターを管理するためのコマンドライン(rpkはRedpanda Keeperの略)を示して、初期化から実装までが行われることを説明している。これはこの後で実際にrpkコマンドでデモアプリを管理していることから、Redpandaを知らないエンジニアに簡単に操作が行えることを見せたということだろう。
ここからは後半のデモに移行して、バッチによるデータ処理ではなくリアルタイムでデータを更新することで、即座に推論に使える仕組みを解説するフェーズとなった。このデモで使われている例はフードデリバリーのアプリケーションだ。ここでは過去のデリバリーの結果のデータから、実際にデリバリーを依頼した時にどのくらいの時間で配達が行われるのかを推論するというものだ。
実際にデモのためのデータをJupyter Notebookを使って見せながら、データ処理、データの相関関係を検証、追加データをリアルタイムでデータセットに追加、更新されたデータセットを使って推論という部分を解説している。
データに存在する配達した距離、ドライバーの年齢や配達に利用する車種、ドライバーのレイティングなどの相関関係を見せながらデモを行っている。
Redpandaのコンソールから実際にデータが処理されていく状況を見せて説明。
複数のソースコードを見せながら、コンソールを使いつつコマンドを実際に入力してデモを行っているため、スクリーンが何度も変わっていく。それゆえに理解するのが難しい部分もあるが、システムの概念図は至ってシンプルだ。
デモの最後の部分では、実際にリアルタイムで更新されたデータセットを使って予想される配達時間を推論させている。この画面の赤い部分の下にLin氏がデータを入力して推論させた結果が表示されている。
50分という長いセッションの中でデータストリーミングの考え方から分散メッセージングを使って複数のアプリケーションをWebAssemblyで実装し、機械学習のためのデータセット更新をリアルタイムで行うデモまでを駆け抜けたという感じのセッションとなっている。
このセッションではKafkaの弱点を指摘し、データピンポン問題にも触れ、WebAssemblyによって高速なシングルバイナリーによる実行、そしてリアルタイムでデータセット更新というところまでを一気に説明している。前半のデモに気を取られずに後半のデモ、システム構成などにも注目して欲しい。
またRedpandaがWebAssemblyを使うことに関しては過去の以下の記事も参考にして欲しい。
●参考:Cloud Native Wasm DayからKafkaの拡張にWasmを使うRedpandaのセッションを紹介
またKafkaとAPI互換のあるRedpandaとしては、現在Kafkaを使っているユーザーが機械学習やLLMなどのアプリケーションをKafkaで構築するよりも、より高速でシンプルな構成となるRedpandaの上で構築してもらいたいと思っているのは当然だろう。Kafkaのコミュニティが従来のZooKeeperモードから新しいRaft合意形成プロトコルを使ったKRaftモードに移行することを強く推奨しているが、それには多くのコストが必要となる。そこで、その移行先をRedpandaにして欲しいという内容のブログが公開された。2024年7月30日に公開されたブログ記事では、移行のための複雑なプロセスが解説されている。これから新たなアプリケーションをKafkaで実装するのか、Redpandaというモダンなプラットフォームを選ぶのか、こちらも参考にして欲しい。
●KafkaのKRaftモードへの移行に関するブログ:ZooKeeper to KRaft migration: a brief overview and a simpler alternative
また今回のセッションを担当したCristina Lin氏によるデベロッパーアドボケイトの職を解説するブログも合わせて紹介しておこう。
●Lin氏の仕事を紹介するブログ:A day in the life of a developer advocate
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Cloud Native Wasm DayからKafkaの拡張にWasmを使うRedpandaのセッションを紹介
- Kafka on KubernetesのStrimziConから新機能を解説するセッションを紹介
- Wasmでストリーミングエンジンを実装したRedpandaを紹介
- Kafka on Kubernetesを実現するStrimziに特化したカンファレンスStrimziCon 2024からキーノートを紹介
- KubeCon Europe 2024からWASMとeBPFを使ってストリーム処理を解説するセッションを紹介
- WasmCon 2023でFermyonのCTO、Radu Matei氏に訊いた。WASI進化の注目ポイントとは
- KubeCon+CloudNativeCon North America 2023のキーノートとショーケースを紹介
- RustとWASMで開発されKubernetesで実装されたデータストリームシステムFluvioを紹介
- WasmCon 2023からLLMをWASMで実装するセッションを紹介
- Kafka on KubernetesのStrimziConから新機能を解説するセッションを紹介