【Road to Cassandra Day】リアルタイムデータからリアルタイムAIへ〜特徴量エンジンKaskada紹介

# はじめに

## Cassandra Day Tokyo

今年、2023年６月１日に、[Cassandra Day](https://www.datastax.com/events/cassandra-day-japan)が日本でも開催されます。
Cassandra Dayは、昨年、ベルリン、ロンドン、アムステルダム、ハノイ、ジャカルタ、ヒューストン、サンタクララ、シアトル、シンガポールでも開催されました。

今回の東京での開催に向けて、Apache Cassandraに関する記事を発表していきます。

[![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/6a879803-d135-348b-f815-08be011607fa.png)](https://www.datastax.com/events/cassandra-day-japan)

## Apache Cassandraについて

Apache Cassandraとは、一言でいうなら、オープンソースの分散データベース管理システムです。

他の分散データベース管理システム同様、複数の汎用サーバーを用いて、ひとつのデータベースを構築します（開発などの目的のため、一つのサーバーのみで構成することも可能です）。

ここでは、詳しい説明は割愛し、興味のある方へのご紹介の役割は、公式サイトやWikipediaに譲ります。

https://cassandra.apache.org/_/index.html

https://en.wikipedia.org/wiki/Apache_Cassandra

# なぜ、DataStaxは、Kaskadaを買収したのか？

DataStaxは、今年2023年1月に、マシンラーニングソフトウェア企業であるKaskada社を買収しました。

https://www.datastax.com/jp/press-release/datastax-acquires-machine-learning-company-kaskada-to-unlock-real-time-ai

DataStaxは、Kaskadaのテクノロジーのオープンソース化を完了し、加えて、エンタープライズサポートの提供を開始しました。

https://www.datastax.com/jp/products/luna-ml

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/e35ccef5-1f47-5967-a888-819dd3c56032.png)


それでは、なぜ（長年Cassandraデータベースをビジネスの中心としてきた）DataStaxがAI・MLの領域に踏み込んだのでしょう？

この図は、すでに古典的な論文「Hidden Technical Debt in Machine Learning Systems (Sculley et al. 2015)」からの引用として、多くの人が目にしているかと思います。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/6408f392-6c61-1098-50b5-62861a93d131.png)

https://papers.nips.cc/paper/2015/file/86df7dcfd896fcaf2674f757a2463eba-Paper.pdf


中央の黒い四角で表現されたML Coreの領域に対して、非常に多くの技術的領域が、「Hidden Technical Debt」として示されています。
DataStaxは、ChatGPTやTensorFlowのようなML Coreのエリアに取って代わることを意図しているわけではありません。
DataStaxのアプローチは、Hidden Technical Debtに対するニーズに答えるものであると言えるでしょう。

## Kaskadaとは何か？

### フィーチャーストア

フィーチャーストアという技術が登場し、次第に目新しいものではなくなろうとしています。

下記のように、Kaskadaは、このカテゴリーで紹介されていたりもします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/f158ce1a-ad6c-04d0-851d-4395dc63edd6.png)

https://www.moderndatastack.xyz/companies/feature-store

フィーチャーストアについて説明するために多くの言葉を費やすよりも、以下の二つの図につい見てみれば一目瞭然と言えるでしょう。左が、フィーチフィーャーストアのない世界、右が、フィーチャーストアのある世界です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/45777d5a-67f5-5998-36ea-e522b3d58331.png)


https://farmi.medium.com/ml-feature-stores-a-casual-tour-fc45a25b446a

### フィーチャーエンジン

Kaskadaは、「特徴量エンジニアリングのニーズに合わせて設計されたコンピューティング エンジン」として開発されました。Kaskadaの開発者は、Kaskadaを「特徴量エンジン(feature engine)」と呼んでいます。

Kaskadaは、宣言型言語(Fenl)を使用してユーザーが記述した特徴量を計算する機能を提供します。その意味で、単なる「ストア」というよりも、「データプロセッシング」の機能を持つものであると言えます。

Kaskadaは、単なるデータプロセッシングシステムとは異なり、機械学習のニーズを満たすために設計されたものでもあります。Kaskadaは、（これはフィーチャーストアと同様に）機械学習モデルのトレーニング（学習）とサービング（予測）に利用することが出来ます。

以下は、宣言型言語の記載例です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/b9e9451e-5e0f-452e-2114-e6736a299d17.png)



機械学習のトレーニング データを計算する場合、過去のある時点での特徴量と後の時点で確定されたラベル値とを組み合わせるというニーズが発生します。Kaskadaは、このような幾つかの時点を横断した計算を宣言型の言語で記載できるようになっています。この表現範囲は、単なるウィンドウ集計に留まるものではありません。あたかも時間を自由に行き来するような操作という意味で、Kaskadaの開発者はこの機能に「タイムトラベル」というタームを与えています。

### イベント処理エンジン

Kaskadaは、「イベント中心設計」という特徴を持っています。その要素を以下に整理してみます。
 
 - クエリを実行して、時間の経過に伴うすべての結果と最終結果を取得する機能。
 - 一連のイベントを変換し、直接利用、またはテーブルに具体化する機能。
 - ストリーム(Data-in-motion)とテーブル(Data-at-rest)へのアプローチの統一：それらの違いについて意識せずにデータを扱うことができる、つまり、それぞれに異なる API を使用する必要がない。

また、Kaskadaは最新のテクノロジースタック上に構築されており、以下のような特徴を持っています。

 - Kaskada は Rustプログラミング言語で、実装。
 - Apache Arrow （列データ処理フレームワーク）を活用
 - 単一バイナリで構成、ローカルおよびクラウドへの展開が容易

現在、Kaskadaの機能はすべてApache 2.0 ライセンスの下でGitHub リポジトリから入手できます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/daa44a7a-21c9-bff1-f5ee-25f8f83fb35e.png)

## 最後に

Kaskada、そして特徴量エンジンについては、まだまだ馴染みの薄いものだと思いますが、本稿がそのイントロダクションとなれば幸いです。技術的に具体的な内容について、今後発信したいと思っています。

## 関連情報

https://www.youtube.com/watch?v=__8GgbUMBY4