Meta が公開したデータ処理の効率化・高速化を狙うエンジン Velox が面白そう
日課の RSS フィードを眺めていると、クエリエンジンやデータ処理の最適化のための高速化ライブラリが Meta が OSS として公開した1 のを知った。
Velox のリポジトリはこちら
実際にリポジトリを観てみると C++で書かれており、たしかにパフォーマンスが高いのが納得。
ドキュメントやチュートリアルなどはこちらのサイトで用意されています。
Meta 社内では、Presto や Spark に適用して処理の高速化、PyTorch に活用して前処理や特徴量エンジニアリングの高速化が進められているらしいです。
技術ブログ記事 1が何をやっているか明瞭なので、かいつまんでメモを残しておきます。
- SQL の分析、ストリーミング処理や機械学習のためのデータ処理など実際の処理内容は似通っているが、様々なフレームワークが使われ、独立して進化している。
- この断片化によって、保守と拡張が困難になっていたが、それらを統合する形で実行可能にするのが Verox
- Presto, Spark などのデータ処理エンジンは、一見異なるように見えるが、レイヤー構造で考えると非常に似通っている。
- Verox は一般的に実行エンジンレイヤーの代わりとなり、式評価、集約、ソート、結合などの処理を提供する。(一般的に data plane と呼ばれる)
- 実例と結果
- Presto は Java で実行されるが、それを C++の Velox で置き換えた。Prestissimo というプロジェクト名で進んだ。(カッコいいね)
- Java での実行と比べると、大体 6 倍ほど高速化された
- Spark 上では、Gluten とよばれるプロジェクトで Velox と同じように C++での実行を試みるプロジェクトが公開されている。
- PyTorch の TorchArrowを Velox 上で実行可能
- Presto は Java で実行されるが、それを C++の Velox で置き換えた。Prestissimo というプロジェクト名で進んだ。(カッコいいね)
最終的には、Velox で従来のデータマネジメントの部分と機械学習インフラストラクチャの部分の垣根を統一することを狙っている。
詳細な内容を知りたい方は、VLDB2022 で論文として発表された2ので、そちらを読むと良さそうです。
実際に実行して手で触ってみたいという方は、10 分で始める Verox というチュートリアル資料3があったので、そちらを読むと良さそうです。 コードを眺めると Verox がどんなことをしてくれるのかイメージが付きました。 ものすごく野心的な試みで、これからの発展が楽しみなプロジェクトでした。
関連しているかもしれない記事
📮 📧 🐏: 記事への感想のおたよりをおまちしてます。 お気軽にお送りください。 メールアドレス入力があればメールで返信させていただきます。 もちろんお返事を希望せずに単なる感想だけでも大歓迎です。
このサイトの更新情報をRSSで配信しています。 お好きなフィードリーダーで購読してみてください。
このウェブサイトの運営や著者の活動を支援していただける方を募集しています。 もしよろしければ、Buy Me a Coffee からサポート(投げ銭)していただけると、著者の活動のモチベーションに繋がります✨
Amazonでほしいものリストも公開しているので、こちらからもサポートしていただけると励みになります。