Dolphin intelligent computing engine based on Flink+Hologres practice

ユーザーが Taobao アプリを開くと、バックグラウンドで 2 種類のリクエストが発生します。1 つ目はユーザーのニーズに応える自然推薦、2 つ目はユーザーとビジネスの総合的なニーズに応える広告推薦です。

たとえば、開いた Taobao で特定のブランドが表示される場合、それはそのブランドが Alibaba Mama のマーケティングプロダクトでログインした後、広告対象となるオーディエンスを選定し、選ばれたユーザーに広告が表示される仕組みです。

広告主側のマーケティングプロダクトの主な目的は、広告主を支援し、オーディエンスを効果的にターゲティングすることでビジネス成果を向上させることです。このようなマーケティングプロダクトは、オーディエンス選択、インサイト分析、ルックアライク、オーディエンス推薦など、幅広いシナリオをカバーしています。

これらのシナリオには、OLAP 分析、AI アルゴリズム、リアルタイム特徴量計算の基本的な能力要件があります。Alibaba Mama は、このようなデータとアルゴリズムの包括的な能力要件に基づいて、Dolphin エンジンを独自に開発しました。

Dolphin エンジンは AI 分析を統合したスーパーフュージョンエンジンで、OLAP 分析計算、ストリーム計算、バッチ計算、AI アルゴリズム計算の機能を備えています。これらの機能は SQL コンポーネントと Index Build コンポーネントを基盤としています。

SQL コンポーネントの主な機能は、SQL エスケープ、ルーティング、負荷分散、フェデレーテッドクエリです。Index Build コンポーネントは主にインテリジェントインデックス構築、マルチレベルインデックス構築などを担当しています。

Dolphin エンジンは主に 2 つの課題を解決します。1 つは汎用コンピューティング方式を大規模シナリオで使用する際のパフォーマンス問題、もう 1 つはビジネス側がエンジンを利用する際のコスト削減、さらには基盤エンジンの存在を意識させないことです。多くの汎用エンジンではビジネスのパフォーマンス問題を直接解決できないため、インデックスを構築してクエリの最適化を実現する必要があります。さらに Flink と Hologres には一定の学習コストがあるため、Flink と Hologres の上にこのビジネスエンジンを構築することで、ユーザーは Flink と Hologres をより簡単に利用でき、その存在すら意識せずに済みます。

Dolphin エンジンは、独自のインデックス研究、インテリジェントマテリアライゼーション、インテリジェントなインデックス選択、異種データソースクエリ、近似計算などの機能を提供しています。

インテリジェントマテリアライゼーションとは、SQL を自動的にマテリアライズドビューに変換する機能で、手動操作は不要です。実装方法は、ビジネスの過去のクエリ SQL を分析することです。たとえば、どの広告主がどの時間帯にどのデータを頻繁に使用しているかを把握し、高頻度で利用されるデータのマテリアライゼーションを選択できます。インテリジェントインデックスは SQL クエリ文を分析し、条件のヒット率を判断して、さまざまなインデックスを推薦します。推薦の目標は、データクエリに対するインデックスのフィルタリング量を最大化することです。近似計算は主に大規模データの近似結果を計算するために使用されます。

現在のビジネス規模は 2 万コア以上で、1 日あたり 2 億件のリクエスト、3,000 以上の QPS を処理し、数百万の広告主とペタバイト級のデータをサポートしています。

さらに、Dolphin エンジンは Flink と Hologres 上に構築されたビジネスエンジンであるため、他のビジネスにも非常に効率的に対応できます。多くのビジネスが Dolphin エンジンに直接接続するだけで Flink と Hologres を利用でき、利用コストは非常に低くなっています。Alibaba Group 内で 10 社以上を外部サポートし、オーディエンス選択とインサイト分析の機能を提供しています。

基盤となるエンジンには高性能とスケーラビリティが求められます。基盤エンジンのパフォーマンスが不十分であれば、上位レイヤーでさらなる最適化を行ってもその効果が低下してしまいます。同時に、上位レイヤーが基盤エンジン上でさらなる改善や拡張を行い、新しいビジネスシナリオに対応できるようにするため、基盤エンジンは十分なスケーラビリティを備えている必要があります。Flink と Hologres は上記の 2 つの要件を満たしています。

リアルタイムエンジンである Flink は低レイテンシと自動チューニングをサポートし、安定した成熟技術です。ユーザーが Dolphin Streaming プラットフォーム上で SQL を送信すると、その SQL は Flink SQL に変換されて Flink エンジンに送信されます。ここでは、Flink オートスケールの自動設定とチューニング機能を使用して自動的に調整され、ユーザーの Flink に関する学習コストとチューニング・メンテナンスコストを削減します。

Dolphin エンジンと Hologres は過去 4 年間で多くの共同構築と成長を遂げてきました。2019 年には、Dolphin エンジンと Hologres がビットマップコンピューティング能力を共同で構築し、業界の公開情報の中で最大規模、最高パフォーマンス、最低利用コストを実現しました。2020 年には、千万レベルのオーディエンスセンターを共同で構築し、広告オーディエンスの一元管理を実現しました。2021 年には、Dolphin エンジンがアルゴリズムビジネスシナリオをサポートし、Hologres のベクトルコンピューティング能力を使用してアルゴリズムビジネスを支え、主に推薦アルゴリズムにおけるリコール計算リンクのおおまかなソートをサポートしました。2022 年には、アルゴリズムのリアルタイム特徴量開発機能をサポートしました。ここでは Hologres のリアルタイム書き込みとスポットチェック機能を応用し、より効率的なリアルタイム開発を実現しました。最終的に、すべての機能が統合され、スーパー統合エンジン能力が形成されました。

OLAP コンピューティングの核心は大規模な問題を解決することです。広告シナリオではグループ全体のデータを保有しており、広告主に優れたユーザーエクスペリエンスを提供するために、より複雑な計算とより高速な処理をサポートする必要があります。直面しているビジネス上の課題には、数十に及ぶ単一 SQL テーブル結合、最大 1 兆行の単一テーブル行サイズ、最大 100 万の単一テーブル基数、そして万レベルラベルの日次更新があります。

たとえば、ユーザーベーステーブル(性別と年齢)とユーザーストアテーブル(ユーザーとストアタイプ)の 2 つのテーブルがあるとします。あるブランドを訪問した 20 代と 30 代のユーザー数をクエリする必要がある場合、データ量が少ない場合は汎用エンジンでもすぐに結果を取得できます。しかし、SQL に数十の結合テーブルが含まれ、テーブルが数兆行に達する可能性がある場合、汎用コンピューティングエンジンでは計算を完了できないため、ビットマップコンピューティングスキームを共同で構築しました。

このスキームのクエリプロセスは次のとおりです。ユーザーが実行する SQL ロジックを入力すると、Dolphin エンジンがそのロジックを物理 SQL に変換し、Holo Master に転送して実行します。

このソリューションのインデックス構築プロセスは次のとおりです。MaxCompute がタグデータを前処理し、ビットマップインデックスを構築して、Hologres クラスターにアクセスすることでビットマップクエリを実現します。

ビットマップクエリはパフォーマンスとストレージに優れ、QPS 200 以上、平均クエリパフォーマンス 100 ミリ秒を達成し、ユーザーのインタラクティブ分析のニーズを満たしています。

OpenAPI を使用すると、サービスインターフェイス呼び出しの形式で Flink にジョブの送信や一時停止などを直接指示できます。ユーザーの学習コストを削減し、開発効率を向上させるため、Dolphin は OpenAPI を活用して多くの実践を重ね、Dolphin Streaming のリアルタイム開発プラットフォームを開発しました。

DolphinStreaming は Hologres と Flink をカプセル化し、ユーザーによりシンプルな開発インターフェイスである Dolphin SQL を公開しています。Dolphin SQL を送信することで、ユーザーはデータベースを使用するかのようにリアルタイムジョブを開発できます。データベースを使用する際、ユーザーはテーブルを作成して直接書き込むことができ、ストレージ、認証情報の設定、トークン情報などを意識する必要はありません。

ユーザーは Alibaba Mama のインタラクティブな研究開発プラットフォームで Dolphin SQL を送信し、Dolphin Streaming を通じて処理されます。SQL 解析とメタデータ管理の変換を実行した後、OpenAPI を介して Flink に SQL を送信し、ジョブを立ち上げて実行します。実行後、データは Hologres に書き込まれ、その後 Dolphin SQL を使用して Hologres に書き込まれた特徴量を直接クエリできます。全体のプロセスは非常にスムーズでシンプルです。

デモ 1:ユーザーの直近 50 件の行動シーケンスを計算する

ユーザーの直近 50 件の行動シーケンスは、アルゴリズムのシーケンスモデルで一般的な特徴量です。通常、行動シーケンス特徴量は開発作業が必要ですが、Dolphin Streaming を使用して開発する場合、簡単な 3 ステップで完了します。

ステップ 1:データソーステーブルを定義します。biztype に直接 tt を入力できます。これは Alibaba のリアルタイムデータソースです。ここで Flink SQL を記述する場合、tt 管理プラットフォームにログインし、Topic をクエリしてサブスクライブする必要があります。

ステップ 2:出力テーブルを定義します。biztype=feature は Hologres への書き込みを意味し、PK パラメーターを入力します。

ステップ 3:計算ロジックを定義します。SQL の実行後、データは継続的に書き込まれ、select user_id, product_id from ** where user_id=** を通じてユーザーの特徴量をクエリします。

デモ 2:リアルタイムデバッグ機能

リアルタイム開発中は、上流のデータソースを確認する必要があることがよくあります。以前は通常、print 出力ソースを定義し、入力ソースと実行ロジックを定義してデータを標準出力に書き込み、ログを確認して上流のデータソースを取得する必要がありました。そこで、よりシンプルな方法を実装しました。

create table の形式でテーブルを登録した後、select user_id from テーブル名を実行すると、結果にテーブルの詳細が直接表示されます。

マーケティングプラットフォームを使用する際、広告主はどのようにプロモーションを行うか、どのプロモーションチャネルを活用すべきかがわからないことがよくあります。アルゴリズムの観点から広告主のためにこの問題を解決しました。広告主が特定の情報をクリックした際にその意図を判断し、意図と広告主自身のストアやプロダクト情報を組み合わせて、より効果的なプロダクトとチャネルを推薦します。

上記の要求に基づいて、ユーザーのリアルタイム行動特徴量をキャプチャする一連のジョブを開発しました。マーチャントのリアルタイム行動ログを Flink で計算し、Hologres に保存した後、オンラインモデルが特徴量を直接読み取り、リアルタイム特徴量を通じてモデルの推薦効果を向上させます。

この方式は主に Flink のリアルタイムコンピューティング、Hologres のリアルタイム書き込みと行テーブルのスポットチェック機能を活用しており、全体の開発効率が 3 倍以上に向上しました。

アルゴリズムではすべてをベクトルで表現できます。特に推薦アルゴリズムのリコールプロセスでは、ベクトルリコールを使用して Top K の類似オブジェクトを取得することが多く、ここでは Hologres のベクトルリコール機能を利用しています。

ルックアライクは広告プロダクトの重要な機能です。その核心は、シードオーディエンスの特徴量に基づいて類似ユーザーを選択し、ストアに新規ユーザーをもたらすことです。原理は、ストアですでにアクションを起こしたユーザーの特徴量を分析し、類似した特徴量を持つユーザーを見つけ出し、そのユーザーにプロダクトをプロモーションすることです。

ベクトルベースのルックアライクアルゴリズムの実装プロセスは次のとおりです。

まず、広告主のシードオーディエンスを作成します。

次に、シードオーディエンスに基づいて中心ベクトルを計算し、中心ベクトルを通じて全体ユーザーから Top K の類似ユーザーをリコールします。

従来の方式では、Dolphin はベクトルリコール機能を持たない従来のデータベースにデータをインポートしていました。まずデータベースをクエリしてシードオーディエンスの中心ベクトルを計算し、次に Faiss を通じて Top K ベクトルを検索します。従来の方式は全体的な運用・保守・管理コストが高いため、アップグレードを行いました。Hologres を直接使用する方式に切り替えました。Hologres はデータベース機能とベクトル機能の両方をサポートしているため、計算プロセスを簡素化できます。

Hologres のベクトルリコール機能に基づいて、リアルタイムベクトルリコールを開発しました。ユーザーは SQL を直接入力して基盤の Hologres を呼び出すことができます。Dolphin はフォールトトレランスや負荷分散などの重要な機能をカプセル化しており、パラメーターを入力するだけでバッチベクトルリコールの計算を完了できます。

Flink と Hologres の強力な機能に基づいて、ビジネス領域により近い Dolphin エンジンを構築できます。主にビットマップベースの高性能 OLAP コンピューティング、よりシンプルで柔軟なリアルタイム開発機能、Hologres をベースとした強力な AI ベクトルリコール機能を含んでいます。

今後もインテリジェンスと統合を追求し、ユーザーエクスペリエンスを継続的に向上させていきます。

Q&A

Q:最適化されたベクトルリコールも Faiss ベースですか?

A:いいえ、Alibaba が開発したベクトルリコールライブラリ Proxima をベースにしています。

Q:Proxima はパフォーマンス面で Faiss より優れていますか?

A:全体的に Proxima のパフォーマンスの方が優れています。ここで Hologres を選択したのは Proxima のパフォーマンスが理由ではなく、Hologres の技術ソリューションアーキテクチャがよりシンプルで、運用管理コストが低いためです。

Related Articles

Explore More Special Offers

  1. Short Message Service(SMS) & Mail Service

    50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00

phone お問い合わせ
Hi, I'm Alibaba Cloud AI Assistant!
I can help with questions and solutions.