- Meta は、レコード管理方法の高速化とその構築の合理化を目的とした、オリジネート サプライ統合実行エンジンである Velox を導入しています。
Meta のインフラストラクチャは、当社の製品、会社、および製品をサポートするという点で重要な目的を果たします。 当社のレコード インフラストラクチャ エコシステムは、SQL 分析 (バッチおよびインタラクティブ) からトランザクション ワークロード、予算処理、レコード インジェストなどに至るまで、さまざまな使用インスタンスのさまざまなワークロードを中心に、数十の特殊なレコード計算エンジンで構成されています。 最近では、合成知能 (AI) と機械学習 (ML) の即時のブーストにより、 内でインスタンスが使用されます。 Meta のインフラストラクチャ
は、目的のエンジニアリング、レコードの前処理、およびその他を中心とした追加のエンジンとライブラリで終了しました。 ML コーチングとサービング パイプラインのワークロード。 それにもかかわらず、類似点が何であれ、これらのエンジンは大部分を取得します。独自に進化。 この断片化により、特にワークロードが進化するにつれて、これらのワークロードを実行するハードウェアがさらに変化することを考えると、それらの主張と改善が洗練されました。 この断片化は、さまざまな目的セットと一貫性のないセマンティクスを備えたメソッドで結果的に発生し、複数のエンジンとやり取りしてタスクを完了する必要があるレコードデータの顧客の生産性を低下させます.
これらの課題に取り組み、ダングル製品と球体、メタがソースを作成および発信 Velox. これは、構築を合理化するだけでなく、レコード管理方法をクロールすることを目的とした、ユニークな、芸術作品のような統合実行エンジンです。 Velox は、さまざまな計算エンジンに拡張可能で適応可能である一方で、recordsdata 計算エンジンの総レコード集約型要素を統合します。 これは、以前に最も簡単に実装された特定の人物エンジンの最適化を民主化し、一定のセマンティクスが追加で実装される可能性があるフレームワークを提供します。 これにより、作業の重複が減り、再利用が促進され、全体的な効率と一貫性が向上します。
Veloxはフル稼働中ですが、 Presto、Spark、PyTorch (後者は TorchArrow として知られるレコード前処理ライブラリを介して) を含む、Meta での 12 以上のレコード メソッドとの統合のさまざまな段階にあることは間違いありません。他の内部予算処理プラットフォーム、トランザクション エンジン、レコードに加えて、取り込み方法とインフラストラクチャ、目的エンジニアリングのための ML 方法など。
最初だったのでGitHubにアップロード
、Velox 独自の供給プロジェクトは、さまざまな学術機関に加えて、Ahana、Intel、および Voltron Records に相当する主要な協力者を含む 150 を超えるコードの貢献者を引き付けました。 Velox の開発を開始し、近所を育成することで、記録管理設計の建設業界における革新の歩みを這うことができると判断しました。 より多くのメンバーや企業がこの取り組みに参加してくれることを願っています。
概要Veloxの記録計算エンジンは、すべてのことの前に決定されているように見える可能性があります。それらはすべて、言語入口の仕上げ、中間イラストレーション (IR)、オプティマイザー、実行ランタイム、および実行エンジンなど、一連の同一の論理要素で構成されています。 Velox は、式の概要、集約、並べ替え、結合などに相当する、単一のホスト内で完了するすべてのレコード集約型操作で構成される、ドライブ実行エンジンに配置するために必要な構成ブロックを提供します。 したがって、Velox は最適化されたアイデアが入力されることを期待し、ローカル ホストで手元にあるソースを使用して効果的に実行します。
Presto と Spark のレコード管理メソッドは、ダングル実行エンジンやその他の要素を絶え間なく取得します。 Velox は、さまざまなレコード管理方法にわたる総合的な実行エンジンとして機能します。 (フィリップ・ベルの策略)Velox はさまざまなランタイム最適化を利用します。これは、フィルターと結合の並べ替え、配列のキーの正規化、およびハッシュベースと同等です。集計と結合、動的フィルター プッシュダウン、および適応列プリフェッチ。 これらの最適化は、レコードデータの着信バッチから抽出された手持レコードと統計を考慮して、最適なローカル効率を示します。 Velox はさらに、最新のワークロードでの遍在性に起因する複雑なレコード フォームを効果的に支援するようにフロアから設計されており、その後、結合やフィルタリングに相当するカーディナリティの増加およびカーディナリティの削減操作を辞書エンコーディングに広く依存しています。一方、よそよそしいレコード フォームのパスを迅速に提供します。
Velox が装備する基本的な要素は次のとおりです。
- バラエティ:
- 構造体、マップ、配列、機能 (ラムダ)、10 進数、テンソルなどを含む、スカラー、複雑、およびネストされたレコード形式をビルダーが示すことができるようにする一般的な種類の設計
ベクトル: 複数のエンコーディングをサポートする Apache Arrow の空想的なコラム記憶構造モジュール、同等フラット、ディクショナリ、定数、シーケンス/RLE、参照のフィジークに加えて、怠惰なマテリアライゼーション サンプルと、公開されていない結果バッファーの作成に役立ちます。 式の評価: ベクトルでエンコードされたレコードで定数を構築する一連の芸術作品のベクトル化された式の概要エンジン、完全な部分式の除去、定数の折り畳み、雰囲気の良い null 伝播、エンコーディング対応と同等の方法を活用概要、辞書ピーリング、メモ化。 特徴: 追加される可能性のある API スカラー機能用の簡単な (行ごと) およびベクトル化された (バッチごと) インターフェースと集約機能用の API を提供することで、ビルダーは個人のパーソナライズされた機能に弱くなります。
Aパーパス キット 人気の PrestoSQL ダイアレクトに凝ったファンシーがライブラリのフェーズとして追加装備されています。
演算子: TableScan、Project、Filter、Aggregation、Substitute/Merge、OrderBy、TopN、HashJoin、MergeJoin、Unnest などと同等の合計 SQL 演算子の実装。 ) I/O: Velox を有効にする一連の API
と同等の、他のエンジンおよびランタイムのコンテキストで構築されるコネクタ: は、ビルダーが TableScan のレコード ソースとシンクを特殊化できるようにします。 d TableWrite 演算子。
DWIO:
Parquet、ORC、および DWRF と同等の現在のファイル コーデックをエンコード/デコードするためのヘルプを提供する拡張可能なインターフェイス。 ストレージ アダプタ:
Velox が と同等のストレージ メソッドに参加できるようにする、バイトベースの拡張可能なインターフェイステクトニック、S3、HDFS など。 シリアライザー: コミュニティの会話に焦点を当てたシリアライゼーション インターフェース さまざまなワイヤ プロトコルのセットアップが追加で実装される可能性があり、 PrestoPage および Spark の UnsafeRow コーデック
記録計算エンジンは、すべてのことの前に決定されているように見える可能性があります。それらはすべて、言語入口の仕上げ、中間イラストレーション (IR)、オプティマイザー、実行ランタイム、および実行エンジンなど、一連の同一の論理要素で構成されています。 Velox は、式の概要、集約、並べ替え、結合などに相当する、単一のホスト内で完了するすべてのレコード集約型操作で構成される、ドライブ実行エンジンに配置するために必要な構成ブロックを提供します。 したがって、Velox は最適化されたアイデアが入力されることを期待し、ローカル ホストで手元にあるソースを使用して効果的に実行します。

Velox はさまざまなランタイム最適化を利用します。これは、フィルターと結合の並べ替え、配列のキーの正規化、およびハッシュベースと同等です。集計と結合、動的フィルター プッシュダウン、および適応列プリフェッチ。 これらの最適化は、レコードデータの着信バッチから抽出された手持レコードと統計を考慮して、最適なローカル効率を示します。 Velox はさらに、最新のワークロードでの遍在性に起因する複雑なレコード フォームを効果的に支援するようにフロアから設計されており、その後、結合やフィルタリングに相当するカーディナリティの増加およびカーディナリティの削減操作を辞書エンコーディングに広く依存しています。一方、よそよそしいレコード フォームのパスを迅速に提供します。
Velox が装備する基本的な要素は次のとおりです。
- バラエティ:
- 構造体、マップ、配列、機能 (ラムダ)、10 進数、テンソルなどを含む、スカラー、複雑、およびネストされたレコード形式をビルダーが示すことができるようにする一般的な種類の設計
ベクトル: 複数のエンコーディングをサポートする Apache Arrow の空想的なコラム記憶構造モジュール、同等フラット、ディクショナリ、定数、シーケンス/RLE、参照のフィジークに加えて、怠惰なマテリアライゼーション サンプルと、公開されていない結果バッファーの作成に役立ちます。 式の評価: ベクトルでエンコードされたレコードで定数を構築する一連の芸術作品のベクトル化された式の概要エンジン、完全な部分式の除去、定数の折り畳み、雰囲気の良い null 伝播、エンコーディング対応と同等の方法を活用概要、辞書ピーリング、メモ化。 特徴: 追加される可能性のある API スカラー機能用の簡単な (行ごと) およびベクトル化された (バッチごと) インターフェースと集約機能用の API を提供することで、ビルダーは個人のパーソナライズされた機能に弱くなります。
- Aパーパス キット 人気の PrestoSQL ダイアレクトに凝ったファンシーがライブラリのフェーズとして追加装備されています。
演算子: TableScan、Project、Filter、Aggregation、Substitute/Merge、OrderBy、TopN、HashJoin、MergeJoin、Unnest などと同等の合計 SQL 演算子の実装。 ) I/O: Velox を有効にする一連の API
- と同等の、他のエンジンおよびランタイムのコンテキストで構築されるコネクタ: は、ビルダーが TableScan のレコード ソースとシンクを特殊化できるようにします。 d TableWrite 演算子。
DWIO:
Parquet、ORC、および DWRF と同等の現在のファイル コーデックをエンコード/デコードするためのヘルプを提供する拡張可能なインターフェイス。 ストレージ アダプタ:
Velox が と同等のストレージ メソッドに参加できるようにする、バイトベースの拡張可能なインターフェイステクトニック、S3、HDFS など。 シリアライザー: コミュニティの会話に焦点を当てたシリアライゼーション インターフェース さまざまなワイヤ プロトコルのセットアップが追加で実装される可能性があり、 PrestoPage および Spark の UnsafeRow コーデック
リソース管理:
計算ソースを処理するための一連のプリミティブで、CPU と記憶管理、スピル、および記憶と SSD キャッシングに相当します。Velox の基本的な統合と実験結果従来の効率化メリット、Veloxは実行エンジンを統一することで手数料を提供異なるレコード計算エンジンを横断します。 最も好まれている 3 つの統合は、Presto、Spark、TorchArrow/PyTorch です。
従来の効率化メリット、Veloxは実行エンジンを統一することで手数料を提供異なるレコード計算エンジンを横断します。 最も好まれている 3 つの統合は、Presto、Spark、TorchArrow/PyTorch です。
プレスト — プレスティシモ
Velox は Prestissimo プロジェクトでは、設定された Presto Java ワーカーがVelox での C++ プロセス定数。 このプロジェクトは、2020 年に Meta によって作成されたすべてのものの前に存在し、Ahana と協力して、他のオリジネート サプライ コントリビューターと共に継続的に構築されています。
Prestissimo は、Presto の HTTP REST インターフェイスの C++ 実装を提供します。これには、ワーカーからワーカーへのトレード シリアライゼーション プロトコル、コーディネーターからワーカーへのオーケストレーション、およびトレーニングが含まれます。これにより、Presto ワーカーにドロップイン C++ の代替手段が提供されます。 ワークフローの基本的な照会は、Java コーディネーターから Presto のアイデア フラグメントを受け取り、それを Velox のアイデアの照会に変換し、実行のために Velox に渡すことで構成されます。
Presto で Velox が備えている高速化を調査するために、2 つの異なる実験を行いました。 私たちの最初の実験では、TPC-H ベンチマークを弱め、一部の CPU-jog クエリで大幅な高速化が明らかになるまで測定しました。 toddle-jog クエリでは、より緩やかな速度向上 (平均 3 ~ 6 倍) が観察されました。
TPC-H データセットは従来のベンチマークですが、もはや堅固なワークロードを代表するものではありません。 Velox がこれらの不測の事態でどのように機能する可能性があるかを調べるために、Meta で見つかったさまざまなインタラクティブな分析機器によって生成された Web サイトのオンライン Web サイトのオンライン訪問者を作成するセットアップを完了した実験を作成しました。 この実験では、レコードのクエリで平均 6 ~ 7 倍のスピードアップが観察されました。 実験の基本的なポイントとその結果については、私たちの
Prestissimoのコードベースは手元にありますGitHub。
スパーク — グルテンVelox が追加で組み込まれています。 の相として火花を散らす グルテンプロジェクト は Intel によって作成されました。 Gluten により、C++ 実行エンジン (Velox に相当) は、Spark SQL クエリを実行している間、Spark 環境内で弱くすることができます。 Gluten は、JNI API 定数を Apache Arrow レコード レイアウトと Substrait のプランの問い合わせで開発することにより、Spark JVM と実行エンジンを分離します。したがって、Gluten の JNI API と統合するだけで、Velox を Spark 内で弱くすることができます。
トーチアロー
トーチアロー は、深層学習でレコードを前処理するためのデータフレーム Python ライブラリであり、PyTorch プロジェクトのフェーズです。 TorchArrow は、データフレームの図を Velox のアイデアに内部的に解釈し、実行のために Velox に委譲します。 この統合により、Meta は分析エンジンと ML インフラストラクチャの間で実行エンジン コードを統合できます。 同じ一連の機能/UDF を公開し、エンジン間で一定の習慣を保証することにより、特定のプロジェクトを合計するためにさまざまな計算エンジンとやり取りすることが徐々に必要になる ML 仕上げの顧客に、より一定の機能を提供します。
TorchArrow は、以前は ベータモード GitHub上
インターネット空間そして私たちの比較論文「
Velox: Meta の統合実行エンジン.」
Velox が追加で組み込まれています。 の相として火花を散らす グルテンプロジェクト は Intel によって作成されました。 Gluten により、C++ 実行エンジン (Velox に相当) は、Spark SQL クエリを実行している間、Spark 環境内で弱くすることができます。 Gluten は、JNI API 定数を Apache Arrow レコード レイアウトと Substrait のプランの問い合わせで開発することにより、Spark JVM と実行エンジンを分離します。したがって、Gluten の JNI API と統合するだけで、Velox を Spark 内で弱くすることができます。
トーチアロー
トーチアロー は、深層学習でレコードを前処理するためのデータフレーム Python ライブラリであり、PyTorch プロジェクトのフェーズです。 TorchArrow は、データフレームの図を Velox のアイデアに内部的に解釈し、実行のために Velox に委譲します。 この統合により、Meta は分析エンジンと ML インフラストラクチャの間で実行エンジン コードを統合できます。 同じ一連の機能/UDF を公開し、エンジン間で一定の習慣を保証することにより、特定のプロジェクトを合計するためにさまざまな計算エンジンとやり取りすることが徐々に必要になる ML 仕上げの顧客に、より一定の機能を提供します。
TorchArrow は、以前は ベータモード GitHub上
インターネット空間そして私たちの比較論文「
謝辞
Velox プロジェクトのすべての貢献者に感謝します。 Sridhar Anumandla、Philip Bell、Biswapesh Chattopadhyay、Naveen Cherukuri、Wei He、Jiju John、Jimmy Lu、Xiaoxuang Meng、Krishna Pai、Laith Sakka、Bikramjeet Vigand、Meta チームの Kevin Wilfong、そして果てしない近所の方々に特別な感謝を捧げます。 Frank Hu、Deepak Majeti、Aditi Pandit、Ying Su などの寄稿者