BigQuery ML 特徴の前処理の再利用とモジュール化
Google Cloud Japan Team
※この投稿は米国時間 2024 年 1 月 13 日に、Google Cloud blog に投稿されたものの抄訳です。
ML において、元データを意味のある特徴に変換することは、特徴量エンジニアリングとして知られる重要な前処理ステップです。BigQuery ML はこの分野で大きな進歩を遂げ、データ サイエンティストや ML エンジニアに、特徴量エンジニアリングのための汎用的な前処理関数を提供できるようになりました(前回のブログ記事をご覧ください)。これらの変換はモデル内にシームレスに埋め込むことができ、Vertex AI など、BigQuery 以外の環境へのポータビリティを可能にします。現在、BigQuery ML ではこの取り組みがさらに進んでおり、特徴量エンジニアリングにモジュール性という独自のアプローチを導入しています。これにより、BigQuery 内で特徴パイプラインが再利用しやすくなると同時に、Vertex AI への直接的なポータビリティも可能になります。
このブログ投稿には、関連するチュートリアルも用意されています。今すぐこの新機能をお試しください。
TRANSFORM 句を使用した特徴の前処理
BigQuery ML でモデルを作成する場合、CREATE MODEL ステートメントには、TRANSFORM ステートメントを含めるオプションがあります。これにより、前処理関数を使用して SELECT ステートメントの列をモデルの特徴に変換するためのカスタム仕様が可能になります。変換に使用される統計情報はモデル作成時に使用されたデータに基づいているため、これは大きな利点です。これにより、TFX フレームワークの Transform コンポーネントなど、他のフレームワークと同様の前処理の一貫性が提供され、トレーニング / サービング スキューを排除するのに役立ちます。TRANSFORM ステートメントがない場合でも、モデルタイプとデータタイプに基づいて自動変換が適用されます。
以下の例は、付属のチュートリアルからの抜粋です。欠損値を補完するために、入力の前に適用される前処理ステップがあります。また、列のスケーリングのために、TRANSFORM ステートメントによる前処理が埋め込まれています。このスケーリングはモデルに埋め込まれ、ここで入力する前にすでに補完されている入力データに適用されます。埋め込みのスケーリング関数の利点は、スケーリングに使用された計算パラメータをモデルが記憶し、後でモデルを推論に使用するときに適用できることです。
ML.TRANSFORM 関数を使用した再利用可能な前処理
新しい ML.TRANSFORM テーブル関数を使用すると、モデルの特徴量エンジニアリング部分を直接呼び出せます。これにより、以下のようないくつかの有用なワークフローが可能になります。
- テーブルを処理して、前処理された特徴をレビューする
- あるモデルの変換を使用して、別のモデルの入力を変換する
以下の例(チュートリアルからの抜粋)では、ML.TRANSFORM 関数が入力データに直接適用されます。元のトレーニング データを使用してスケーリング パラメータを再計算する必要はありません。これにより、将来のモデル、さらなるデータのレビュー、スキューやドリフトを検出するモデルのモニタリング計算のために、変換を効率的に再利用できます。
TRANSFORM_ONLY モデルを使用したモジュールの前処理
変換のみのモデルを作成することによって、再利用性を完全なモジュール状態にします。これは、CREATE MODEL で TRANSFORM ステートメントを使用し、値 model_type = TRANSFORM_ONLY を使用することで、他のモデルと同様に機能します。つまり、パイプラインの特徴量エンジニアリング部分のみのモデル オブジェクトを作成します。これにより、変換モデルは CREATE MODEL ステートメントの入力を変換するために再利用でき、BigQuery 以外の ML パイプラインで使用するためにこのモデルを Vertex AI Model Registry に登録することもできます。完全なポータビリティを実現するために、モデルを GCS にエクスポートすることもできます。
以下のチュートリアルの抜粋は、通常の CREATE MODEL ステートメントを使用して、TRANSFORM ステートメントをモデルとしてコンパイルする例を示しています。この場合、すべての補完ステップは、単一のモデル オブジェクトにまとめて保存されており、トレーニング データからの平均値と中央値を記憶し、推論時であっても将来のレコードの代入にそれらを適用できます。
TRANSFORM_ONLY モデルは、上記で説明したのと同じ ML.TRANSFORM 関数を使用して、他のモデルと同様に使用できます。
特徴パイプライン
TRANSFORM_ONLY モデルのモジュール性により、1 つの特徴パイプラインで複数のモデルを使用できます。BigQuery の SQL クエリ構文 WITH 句(CTE)により、特徴パイプラインが非常に読みやすくなります。このアイデアにより、featurestore のような特徴レベルの変換モデルがモジュール化されて簡単に使用できるようになります。
このアイデアの例として、まず、TRANSFORM_ONLY モデルを個々の特徴(body_mass_g、culmen_length_mm、culmen_depth_mm、flipper_length_mm)ごとに作成します。これらは、最初に作成した完全なモデルと同様に、列を特徴にスケールするために使用されます。
body_mass_g の例:
culmen_length_mm の例:
culmen_depth_mm の例:
CTE を使用すると、特徴パイプラインは以下のように簡単になり、ビューとしてパッケージ化することもできます。
さらに、このモジュール化された特徴パイプラインを使用して上記から元のモデルを作成すると、以下のように、上記のビューとして作成された特徴前処理パイプラインから直接選択されるようになります。
このレベルのモジュール性と再利用性により、MLOps のアクティビティが使い慣れた SQL の構文とフローに組み込まれます。
しかし、オンライン予測やエッジ アプリケーションなどでは、モデルをデータ ウェアハウス外で使用することが必要になる場合もあります。上記のモデルが VERTEX_AI_MODEL_ID パラメータを使用して作成されていることに注目してください。このことは、これらのモデルが自動的に Vertex AI Model Registry に登録され、Vertex AI Prediction エンドポイントにデプロイされる一歩手前であることを意味します。また、他の BigQuery ML モデルと同様に、これらのモデルは EXPORT MODEL ステートメントを使用して Cloud Storage にエクスポートでき、完全なポータビリティを実現できます。
まとめ
BigQuery ML で新たに利用できる再利用可能でモジュール化された特徴量エンジニアリングは、ML パイプラインの構築と保守を容易にし、MLOps を実現する優れたツールです。モジュール化された前処理によって変換のみのモデルを作成し、他のモデルで再利用したり、Vertex AI にエクスポートしたりできます。このモジュール性により、特徴パイプラインを SQL で直接有効にすることもできます。これにより、時間の節約、精度の向上、トレーニング / サービング スキューの防止が可能になると同時に、メンテナンスが簡素化されます。BigQuery を使用した特徴量エンジニアリングの詳細については、チュートリアルをお試しになり、BigQuery ML を使用した特徴量エンジニアリングの詳細をご覧ください。
ー カスタマー エンジニア Mike Henderson
ー ソフトウェア エンジニア Lily Zhang



