DUICUO

4Paradigm の OpenMLDB 研究開発責任者兼システム アーキテクトの Lu Mian 氏: OpenMLDB は、オープンソースの機械学習データベースであり、オンラインとオフラインの両方で一貫性のある実稼働レベルの機能プラットフォームです。

ゲスト:ルー・ミアン

編集者: Ink

AISummitグローバル人工知能技術カンファレンスは、予定通り2022年8月6日〜7日に開催されました。カンファレンスでは、4Paradigmのシステムアーキテクトであり、OpenMLDB研究開発責任者でもあるLu Mian氏が「OpenMLDB:一貫性のあるオンラインおよびオフラインの製品グレードの機能プラットフォーム」と題した基調講演を行い、AIエンジニアリング実装におけるデータと機能の課題、OpenMLDBの一貫性のあるオンラインおよびオフラインの製品グレードの機能計算プラットフォーム、OpenMLDB v0.5のパフォーマンス、コスト、使いやすさの強化という3つの側面から知見を共有しました。

以下はスピーチの要約です。皆様のお役に立てれば幸いです。

人工知能のエンジニアリング実装におけるデータと機能の課題

現在、統計によると、人工知能(AI)の実装プロセスにおける時間の95%はデータ処理に費やされています。MySQLなどの様々なデータツールが市場に出回っていますが、AI実装の課題を解決するには程遠い状況です。そこで、まずはデータ処理の課題を理解しましょう。

何らかの機械学習アプリケーションの開発に参加したことがある場合は、次の図に示すように、MLOps に精通しているはずです。

実際、MLOpsには現在のところ厳密な学術的定義はありません。一般的には、オフライン開発とオンラインサービスの2つのプロセスに分けられます。それぞれのプロセスにおいて、データや機能からモデルに至るまでの情報キャリアは、オフライン開発プロセスからオンラインサービスプロセスまで、3つの異なるキャリアを経由します。

次に、中間機能プロセスに焦点を当てて、課題がどのように解決されるかを理解します。

アプリケーションの背景: 意思決定シナリオにおける時系列データに基づく特徴エンジニアリング

人工知能(AI)は進化を遂げ、主に認識ベースと意思決定ベースの2つのアプリケーションカテゴリーに分類されます。顔認識などの認識ベースのAIアプリケーションは、通常DNNアルゴリズムに基づいています。意思決定ベースのAIアプリケーションには、Taobaoにおけるパーソナライズされたレコメンデーションのようなシナリオが含まれます。さらに、リスク管理や不正防止も、意思決定におけるAIの応用として広く利用されています。

したがって、ここで議論するアプリケーションの背景は、主にこの種の意思決定シナリオを対象としています。その最大の特徴は、データが2次元テーブルの構造化データであり、かつ時系列データであることです。下図に示すように、ユーザー取引テーブルには各レコードの時点を表す「trans_time」フィールドがあり、これらを接続することで時系列データが形成されます。時系列データに対する最も一般的な特徴量エンジニアリングのアプローチは、時間ウィンドウを用いた集計関数に基づいています。例えば、これは、ユーザーの1日における総取引額の分析など、意思決定シナリオにおける特徴量エンジニアリングでよく使用される操作です。

ビジネス シナリオ: 実稼働レベルの展開要件を満たすリアルタイム推奨システム。

なぜ今 OpenMLDB を使用しているのでしょうか? 主な理由は、真のハードリアルタイムコンピューティングで AI の需要を満たす必要があることです。

ハードリアルタイムコンピューティングとは何でしょうか?これには2つの意味があります。1つは、最新のリアルタイムデータを用いて、最大の意思決定効果を達成することです。例えば、過去1年や一昨年のデータではなく、過去10秒または1分間のユーザーのクリック行動に基づいてビジネス上の意思決定を行うといったことです。

もう 1 つの重要な点は、リアルタイム コンピューティングでは、ユーザーが動作要求を発行すると、短時間、場合によっては数ミリ秒以内に機能の計算を実行する必要があることです。

バッチ コンピューティング/ストリーミング コンピューティングを実行する製品は市場に多数存在しますが、ミリ秒レベルのハード リアルタイム コンピューティングの要件を満たすものはまだありません。

例えば、図に示すように、本番環境向けに設計されたリアルタイムレコメンデーションシステムを考えてみます。ユーザーLiはキーワード「洗濯機」を検索します。システムは、元のリクエストデータとユーザー、製品、取引情報を組み合わせてリアルタイムの特徴量計算を行い、より意味のある特徴量を生成する必要があります。このプロセスは特徴量エンジニアリングと呼ばれます。例えば、システムは「過去3ヶ月間に特定の年齢層の顧客が購入した、売れ筋の洗濯機トップ3」といった特徴量を生成する可能性があります。これらの特徴量は必ずしもタイムリーである必要はなく、より長い履歴データに基づいて計算されます。しかし、システムは「過去1時間/30分以内の閲覧履歴」といった、よりタイムリーなデータも必要とする場合があります。新しく計算された特徴量を取得した後、システムはそれらを推論モデルに入力します。このような特徴量プラットフォームには、精度(オンラインとオフラインの特徴量計算の一貫性)と効率(レイテンシ20ミリ秒未満のリアルタイム特徴量計算)という2つの主要な要件があります。

機能コンピューティングの開発と展開ライフサイクル

OpenMLDB 方法論が利用可能になる前は、特徴計算の開発は主に下の図に示すプロセスを使用して行われていました。

まず、データサイエンティストがPython/SparkSQLツールを使用してオフライン特徴抽出を行うシナリオを考えてみましょう。彼らのKPIは、ビジネス精度要件を満たすモデルを作成することです。モデルの品質が基準を満たせば、タスクは完了とみなされます。しかし、特徴抽出スクリプトのデプロイ後に発生する低レイテンシ、高同時実行性、高可用性といったエンジニアリング上の課題は、彼らの専門分野ではありません。

 

データサイエンティストが作成したPythonスクリプトをデプロイするには、エンジニアリングチームが必要です。彼らの役割は、データサイエンティストが作成したオフラインスクリプトをリファクタリングおよび最適化し、C++/データベースを使用してリアルタイムの特徴抽出サービスを提供することです。これにより、低レイテンシ、高い同時実行性、高可用性といった一連のエンジニアリング要件が満たされ、特徴抽出スクリプトをオンラインサービスに真にデプロイできるようになります。

このプロセスは非常にコストが高く、異なるツールを使用する2つのスキルチームの関与が必要です。両方のプロセスを完了した後、計算ロジックの整合性検証が必要です。つまり、データサイエンティストが開発した機能スクリプトの計算ロジックは、最終的なリアルタイム機能抽出および展開ロジックと完全に一致している必要があります。この要件は明確でシンプルに見えますが、整合性検証プロセスは、多大なコミュニケーション、テスト、そして反復的な開発コストをもたらします。過去の経験に基づくと、プロジェクトの規模が大きければ大きいほど、整合性検証プロセスにかかる時間とコストは増大します。

一般的に、一貫性検証におけるオンラインプロセスとオフラインプロセス間の不一致の主な原因は、開発ツールの不一致です。例えば、科学者はPythonを使用し、エンジニアリングチームはデータベースを使用します。ツールの機能の違いは、機能上の妥協や不一致につながる可能性があります。その他の原因としては、データの定義、アルゴリズムの定義、そして理解の違いなどが挙げられます。

要約すると、従来の 2 プロセス アーキテクチャに基づく開発コストは非常に高く、異なるスキルセットを持つ 2 つの開発者グループ、2 つのシステムの開発と運用、および大量の検証とチェックの追加が必要になります。

OpenMLDB は低コストのオープンソース ソリューションを提供します。

OpenMLDB: オンライン環境とオフライン環境の両方に対応した、一貫性のあるプロダクショングレードの機能計算プラットフォーム。

OpenMLDBは昨年6月に正式にオープンソース化されました。オープンソースコミュニティではまだ若いプロジェクトですが、既に100以上のシナリオに適用され、300以上のノードをカバーしています。

OpenMLDBはオープンソースの機械学習データベースであり、その主な機能はオンラインとオフラインの両方で一貫した特徴量プラットフォームを提供することです。では、OpenMLDBはどのようにして高いパフォーマンスと精度の要件を満たしているのでしょうか?

 

上の図に示すように、OpenMLDBで使用されるプログラミング言語はSQLのみです。ツールチェーンは2つに分かれており、データサイエンティストであれ開発者であれ、誰もがSQLを使用して機能を表現します。

次に、OpenMLDBは内部的に2つのエンジンで構成されています。1つはSpark++をベースにソースコードレベルの最適化を施した「バッチSQLエンジン」で、より高性能な計算処理と構文拡張を提供します。もう1つは、社内開発のリソースベースの時系列データベースである「リアルタイムSQLエンジン」です。これは、デフォルトでインメモリストレージエンジンをベースとした時系列データベースです。「リアルタイムSQLエンジン」を基盤とすることで、高可用性、低レイテンシ、そして高い同時実行性を確保しながら、効率的なミリ秒レベルのリアルタイムオンライン計算を実現します。

これら2つのエンジンの間には、オンラインシステムとオフラインシステム間の実行計画ロジックの一貫性を確保するために設計された、重要な「一貫性実行計画ジェネレーター」が存在します。このジェネレーターは、オンラインシステムとオフラインシステム間の一貫性を本質的に保証するため、手動による検証が不要になります。

要約すると、このアーキテクチャに基づいて、私たちの最終的な目標は、「開発と稼働開始」という最適化目標を達成することです。これには主に、オフライン SQL 機能スクリプトの開発、ワンクリックでの展開と稼働開始、リアルタイムの要求データ ストリームへのアクセスという 3 つのステップが含まれます。

これまでの2つのプロセス、2つのツールチェーン、そして2組の開発者と比較して、このエンジンの最大の利点は、エンジニアリングコストを大幅に削減できることです。データサイエンティストがSQLを用いて機能スクリプトを開発すれば、エンジニアリングチームが2回目の最適化を行う必要がなく、そのままデプロイできます。また、途中でオンラインとオフラインの整合性検証を手動で行う必要もなく、時間とコストを大幅に節約できます。

以下の図は、オフライン開発からオンライン サービスまでの OpenMLDB の完全なプロセスを示しています。

 

全体として、OpenMLDBはオンライン機械学習とオフライン機械学習の一貫性という中核的な問題を解決し、ミリ秒レベルのリアルタイム特徴量計算という中核的な機能を提供します。これら2点こそが、OpenMLDBが提供する核心的な価値です。

OpenMLDBにはオンラインエンジンとオフラインエンジンの両方があるため、適用方法はそれぞれ異なります。以下の図は、参考までに推奨されるアプローチを示しています。

 

次に、OpenMLDB のコア コンポーネントまたは機能のいくつかを紹介します。

機能1:オンラインとオフラインの一貫性を維持した実行エンジン。統一された基盤計算機能に基づき、論理計画から物理計画までのオンラインおよびオフライン実行モードを適応的に調整することで、オンラインとオフラインの一貫性を自然に保証します。

機能 2: 高性能な 2 レベル スキップ リスト メモリ インデックス データ構造を含む高性能オンライン機能計算エンジン、リアルタイム計算 + 事前集約テクノロジのハイブリッド最適化戦略、およびさまざまなパフォーマンスとコストの要件を満たすためにメモリとディスク ストレージ エンジンの両方を提供します。

3つ目の機能は、特徴量計算向けに最適化されたオフライン計算エンジンです。これには、マルチウィンドウ並列計算の最適化、データスキュー計算の最適化、SQL構文拡張、そして特徴量計算に最適化されたSparkディストリビューションが含まれます。これらの機能により、コミュニティエディションと比較して大幅なパフォーマンス向上が実現します。

機能4:特徴量エンジニアリングのためのSQL拡張。先ほど、特徴量定義にSQLを使用することについて触れましたが、SQLは実際には特徴量計算用に設計されたものではありません。そのため、数多くの事例を研究し、経験を積み重ねる中で、特徴量計算のシナリオをより適切に処理するためにSQL構文を拡張する必要があることがわかりました。重要な拡張は、次の図に示すように、LAST JOINとよく使用されるWINDOW UNIONの2つです。

 

機能5:エンタープライズレベルの機能サポート。分散データベースであるOpenMLDBは、高可用性、シームレスなスケーリング、スムーズなアップグレードを特徴としており、既に多くのエンタープライズアプリケーションに実装されています。

特徴6:SQL中心の開発と管理。OpenMLDBもデータベース管理システムであり、従来のデータベースと非常によく似ています。例えば、CLIを提供しているため、オフライン機能の計算、SQLソリューションの展開、オンラインリクエストまで、プロセス全体をCLIで実行でき、SQLとCLIに基づくフルプロセスの開発エクスペリエンスを提供します。

さらに、OpenMLDB は現在オープンソースであり、その上流および下流のエコシステムの拡張は次の図に示されています。

OpenMLDB v0.5.0: パフォーマンス、コスト、使いやすさが向上

次に、 3 つの領域で機能強化を行った OpenMLDB v0.5 の新しいバージョンを紹介します

まず、OpenMLDBの開発履歴を見てみましょう。OpenMLDBは2021年6月にオープンソース化されました。実際、それ以前から多くの顧客を抱えており、2017年には最初のコードの開発を開始し、4~5年にわたる技術的専門知識を蓄積していました。

オープンソース化されてから1年の間に、約5つのバージョンがリリースされてきました。以前のバージョンと比較して、v0.5.0には以下の重要な機能があります。

パフォーマンスの向上:集約技術により、長いウィンドウのパフォーマンスを大幅に向上させることができます。事前集約の最適化により、長いウィンドウのクエリのレイテンシとスループットが2桁向上します。

コスト削減:バージョンv0.5.0以降、オンラインエンジンはメモリベースと外部ストレージベースの2つのエンジンオプションを提供します。メモリベースのエンジンは低レイテンシと高い同時実行性を提供しますが、コストが高く、応答レイテンシはミリ秒レベルになります。外部ストレージベースのエンジンはパフォーマンスの影響を受けにくく、SSDベースの構成によるコスト効率の高い導入により、最大75%のコスト削減が可能です。上位層のビジネスコードはどちらのエンジンも認識しないため、コストゼロでの切り替えが可能です。

ユーザビリティの向上。バージョンv0.5.0では、ユーザー定義関数(UDF)を導入しました。これにより、SQLで特徴抽出ロジックに対応できない場合でも、C/C++ UDFや動的UDF登録などのユーザー定義関数がサポートされ、計算ロジックの拡張やアプリケーションカバレッジの向上が容易になります。

最後に、OpenMLDBの開発者の皆様に感謝申し上げます。オープンソース化以来、100名近くのコントリビューターがコミュニティにコードを提供してきました。より多くの開発者の皆様にコミュニティにご参加いただき、貢献していただき、共に意義のある活動を行っていただけることを願っております。

カンファレンスのプレゼンテーションの録画とパワーポイント資料がオンラインで公開されました。ハイライトは公式ウェブサイトをご覧ください。