生データをML対応フィーチャーに変換するために必要なインフラを構築するためのAirbnbのプラットフォームChrononがオープンソース化した。AirbnbのMLインフラエンジニアであるVarant Zanoyan氏が説明するように、Chrononは様々なデータソースをサポートし、低レイテンシーのストリーミングを提供することを目指している。
われわれは、ML実務者に共通する悩みを解消するためにChrononを構築しました。彼らは、モデリングそのものよりも、モデルを動かすデータの管理に大半の時間を費やしていたのです。
フィーチャーエンジニアリングは、訓練と推論という2つの微妙に異なるアプローチに自然に適している、とZanoyan氏は説明する。訓練の場合、通常はデータウェアハウスにあるデータから始める方が簡単で、推論の場合はログから抽出したデータの方が利用しやすい。どちらの場合も、もう一方のタスク、つまり、最初のケースではログデータをデータウェアハウス形式に変換する、あるいはモデリングに使用する前にログからデータを蓄積する、といった作業がある程度必要になる。
ML実務者のタスクを単純化するために、Zanoyan氏は言う。
Chrononでは、ML実務者は特徴を一度だけ定義するだけで、モデル学習用のオフライン・フローとモデル推論用のオンライン・フローの両方に対応できます。
Chrononは、バッチフィーチャーと ストリーミングフィーチャーを区別することで、これを実現している。バッチフィーチャーは毎日計算され、ストリーミングフィーチャーはバッチジョブに含まれるだけでなく、リアルタイムの更新にも使用される。この仕組みの詳細な説明は、ここではカバーしきれない。Chrononは、低レイテンシーで両方のフィーチャーを作成・取得するためのAPIを提供している。このAPIはJava、Scala、Pythonのクライアントから利用できる。
Zanoyan氏によれば、Chrononの開発はオープンソース化されただけでは終わらず、反復と計算のコストをさらに下げ、実務家がNLPを使ってより簡単に特徴を定義できるようにし、実務家がより良いモデルを構築できるようなインテリジェンスを追加することを目標としているという。
Chrononを使い始めたい方は、クイックスタートガイドを参照されたい。クイックスタートガイドでは、モデルの実装例を提供し、APIのGroupBy
と Join
の2つの主要コンポーネントの使い方を説明している。
Chrononは、Kafka、Spark/Spark Streaming、Hive、Airflowを使ってパイプラインを構築する。GroupBy
と Join
に加えて、ChrononはStageQuery
をサポートし、ウィンドウ、バケット、その他の時間ベースのアグリゲーションを含むいくつかのアグリゲーションを提供する。さらに、特徴量の導出、特徴量の連鎖、外部特徴量やコンテキスト特徴量などの高度な特徴量計算をサポートしている。