データエンジニアリングとマシンラーニングパイプライン

「データエンジニアリングとマシンラーニングのパイプライン」

データエンジニアリングと機械学習パイプラインは非常に異なるものですが、不思議なことに非常に似た感じがすることがあります。過去に話をした多くのMLエンジニアは、バッチモデルを展開するためにAirflowなどのツールに頼っていると言います。

ですので、データエンジニアリングと機械学習パイプラインの違いについて話し合いたいと思います。

この質問に答えるために、経験豊富なデータエンジニアであり、ニュースレター「Dutch Engineer」の作者であるSarah Florisさんを招きました。

では、さっそく見ていきましょう。

過去5年間、TikTokやSnapchatなどのソーシャルメディアプラットフォームの人気によって引き起こされたデータ蓄積は、データと機械学習(ML)パイプラインの違いを明確にしました。これらはどちらも企業にとって不可欠な要素ですが、しばしば混同されます。共通点があるものの、その目的は大きく異なります。

データとMLプラットフォームを構築することは、思わぬほど簡単なものではありません。それには多くの作業が必要であり、私は毎日その作業を行っています。この記事では、機械学習とデータのパイプラインの動作の違い、およびそれぞれに必要なものについて探っていきます。

データエンジニアリングのパイプライン

まず、データパイプラインについて見ていきましょう。データパイプラインとは、さまざまなソースからデータを抽出し、クリーンアップしてからデータウェアハウスまたはデータベースに保存する一連のプロセスのことです。これは企業にとって重要です。データパイプラインは以下の4つのパートから構成されています:

データエンジニアリングのパイプラインは一般的にはMLパイプラインに繋がっていますが、コミュニケーションの問題が原因でMLエンジニアがカスタムのエンドツーエンドのパイプラインを構築するケースも多いです。

データ収集:ここではデータをデータベース、API、ファイルシステムなどのさまざまなソースから収集します。データは構造化、準構造化、非構造化など、さまざまな形式である場合があります。データの収集には注意深い計画と実行が必要です。

データクリーニング:ここでは、欠損値のチェック、エラーの修正、データを一貫した形式に変換することによってデータをクリーニングします。これにより、データが正確かつ信頼性があることが保証されます。

データ統合:ここでは、さまざまなソースからのデータが1つのデータセットに統合されます。これはビジネスにとって重要であり、一貫性のある正確な情報を確保します。

データ保存:ここでは、処理されたデータが保存されます。データへの迅速かつ簡単なアクセス、データの保護、セキュリティに重要です。

これら4つのデータパイプラインのパートは、抽出(データ収集)、変換(データクリーニングと統合)、ロード(データ保存)としても知られています。データの抽出、変換、ロードのプロセスは一般的にETLまたはELTと呼ばれます。

ETLおよびELTは、セットに含まれるストリーミングパターン(パブ/サブやCDCなど)などの他のサブクラスが存在するため、各々は包括的な「データワークフロー」またはデータパイプラインのサブセットとして知られていることに注意する人もいるでしょう。- ベン・ロゴジャン

これらのプロセスは、プロジェクトの要件に応じてさまざまな順序で実行されることがあります。

データパイプラインの実施方法に関わらず、ソースから始まりストレージで終わるという一貫したプロセスに従うことが一般的です。

したがって、普通のデータエンジニアがポイントAからポイントBにデータを移動すると言うのはそのためです。

SeattleDataGuyのニュースレターは読者のサポートによって存在しています。新しい投稿を受け取り、私の仕事をサポートするために、無料または有料の購読者になることを検討してください。

機械学習パイプライン

機械学習(ML)パイプラインは、データパイプラインと同じような直線的な方法では機能しません。代わりに、MLモデルの構築、トレーニング、デプロイメントが含まれます。これは、データの収集から本番環境への展開まで、MLモデルの構築プロセス全体を自動化するために使用されます。MLパイプラインは以下の5つのパーツから構成されています:

データクリーニング:データクリーニングおよびデータの標準化は、機械学習パイプラインの重要な側面です。データエンジニアが初期クリーニングを行いますが、データサイエンティストはより精度と有用性を確保するためにさらにクリーニングを行います。これには、一貫した日付形式の確認、ヌル値の除去、および年齢のビニングなどのタスクが含まれます。彼らはまた、パターンやトレンドを特定するために探索的データ分析を行う場合もあります。この役割には、データクリーニングの技術的な側面とデータが使用される広い文脈の両方に対する深い理解が必要です。

特徴エンジニアリング:特徴エンジニアリングは、生データから関連する特徴を選択し抽出するプロセスであり、機械学習モデルのパフォーマンスを向上させるために行われます。イテレーションの速度を上げるために、機械学習エンジニアは、実質的にはいくつかのテーブルを作成してバージョン管理され、各モデルの焦点領域である販売、獲得などの領域に関連付けられるフィーチャーストアを構築します。

モデルトレーニング:モデルトレーニングは通常、適切な機械学習アルゴリズムを見つけることから始まります。アルゴリズムが選択されたら、エンジニアリングされた特徴を持つデータに対してそのアルゴリズムをトレーニングします。このプロセスでは通常、モデルアーキテクチャとハイパーパラメータ(/?s=hyperparameters)の反復を含み、所望のパフォーマンスレベルが達成されるまで行われます。最後に、トレーニングされたモデルは新しいデータに対して予測を行うために使用することができます。

モデル評価:このフェーズでは、トレーニングされたMLモデルのパフォーマンスをテストデータセットで評価します。モデルが評価され、デプロイ準備ができた場合、モデルをモデルレジストリに保存することがよくあります。

モデルレジストリ:モデルレジストリは、会社の機械学習セットアップの重要な部分です。トレーニングとデプロイメントが行われたモデルに関する詳細を保存するための中心的なハブとして機能します。モデル自体だけでなく、各モデルのパフォーマンスメトリックやその他のメタデータも追跡します。この情報は、モデルが再現可能であることを確認し、ライフサイクル全体で追跡できるようにするために重要です。

モデルデプロイメント:保存されたモデル(モデルレジストリからのものまたは他の場所に保存されたモデル)を使用し、新しいデータに対して予測を行うために本番システムに統合します。

モデルモニタリング:主なモニタリング技術は、パフォーマンス分析モニタリングとデータドリフトモニタリングです。

パフォーマンス分析モニタリングは、一定の時間(1時間、1か月など)内にメトリックが失敗したかどうかを特定するためのルールを設定することを含みます。たとえば、80%以上の精度は良いベンチマークであり、回帰モデルの場合は精度以外の他のメトリック(分類モデルの場合は精度、適合率、再現率など)もモニタすることが重要です。これらのチェックに加えて、モデルのパフォーマンスに影響を与える可能性のあるデータの異常やパターンを追跡することが役立ちます。

モデルのパフォーマンスを監視するもう一つの主な方法は、基礎となるデータを調べることです。これを行うためには、統計的手法やその他の方法を使用してデータの分布を比較する必要があります。

これらすべてのコンポーネントは、データから始めてデータを再導入し、サイクルを繰り返すという循環的なステップで完了します。

ジョブタイプ

バッチジョブは、定期的な間隔でデータを処理し、ユーザーの行動を予測し結果を保存します。データパイプラインの場合、これは30分または1時間ごとにデータを取り込むことを意味しますが、機械学習パイプラインではオフラインの予測やバッチジョブがよく行われます。後者は、ユーザーが現在番組を視聴していない間にユーザーの好みを予測します。

データパイプラインとMLパイプラインには、もう1つ共通点があります。それはオンデマンドパイプライニングです。

データパイプラインでは、これはしばしば「プッシュメカニズム」と呼ばれるもので、イベントが作成され、そのイベントのデータがKafkaクラスタにプッシュされます。

機械学習パイプラインでは、このタイプのプロセスはオンライン推論としてよく言及されます。例えば、新しい予測が必要なウェブサイトのページをユーザーがクリックした場合です。

別の例として、HBO Maxの「Last of Us」の視聴を終え、似たようなものや違ったものを含む新しい番組の推薦が必要な場合があります。

私が見たデータパイプラインには1種類のジョブしかありませんでした。ストリーミングです。ストリーミングデータパイプラインは、データをリアルタイムで処理し、移動するシステムです。オンデマンドパイプライニングとは異なり、一部の人々が主張するかもしれませんが、私は異なると考えています。ストリーミングデータは連続的に発生しますが、オンデマンドパイプライニングは断続的に発生します。

データパイプラインには3種類のジョブがあります:ストリーミング、バッチ、オンデマンド。対照的に、MLパイプラインにはバッチとオンデマンド(または「推論」)のジョブタイプのみがあります。

計算ニーズ

データとMLパイプラインは、すべての組織における重要なコンポーネントであり、同様の計算要件を持つ場合があります。

データパイプラインは、入力データのボリュームに依存しますが、理想的にはめったに変更されません。しかし、データボリュームの急な変化が起こることもあり、データパイプラインが適応できるようにすることが重要です。そうしないと、データ処理に遅延が生じ、組織の業務に悪影響を及ぼす可能性があります。

一方、MLパイプラインはデータ量とMLパイプラインプロセスの段階の両方に依存します。MLパイプラインの計算ニーズは、パイプラインの段階に基づいて変化します。トレーニングでは処理や予測よりも多くの計算能力が必要です。したがって、計算ニーズを適切に調整する必要があります。

データパイプラインまたはMLパイプラインを使用しているかに関係なく、計算要件の急な変化に対応できることが重要です。これは特にデータパイプラインにとって重要であり、予期しないデータボリュームの変化が、組織の情報をもとにした意思決定能力に影響を与える可能性があるからです。したがって、データとMLパイプラインがスケーラブルであり、計算要件の変化に対応できるようにすることが重要です。そうしないと、これらのパイプラインは失敗し、データ処理に遅延が生じ、ユーザーエクスペリエンスが低下する可能性があります。

終わりのないパイプライン

まとめると、データパイプラインとMLパイプラインは、データを扱う企業にとって重要です。それらは異なる目標、ジョブタイプ、計算ニーズを持っています。これらの違いを理解することは、正確かつタイムリーなデータを提供し、意思決定の質を向上させるために突然の計算ニーズの変化に対応し、効果的なパイプラインを構築し、拡張し、保守するために重要です。

元の記事はこちら(Ben Rogojanによる投稿)。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more