MLTransform を使用してデータを前処理する

このページでは、機械学習(ML)モデルのトレーニング用データを準備するために MLTransform 機能を使用する理由と方法について説明します。MLTransform は、複数のデータ処理変換を 1 つのクラスに統合することで、Apache Beam ML データ処理オペレーションをワークフローに適用するプロセスを簡素化しています。

データ処理のステップがハイライト表示された Dataflow ML ワークフローの図。

図 1. 完全な Dataflow ML ワークフロー。ワークフローの前処理ステップで MLTransform を使用します。

利点

MLTransform クラスには次のようなメリットがあります。

  • 複雑なコードの記述や基盤となるライブラリの管理を行わずに、データを変換できます。
  • データをベクトル データベースに push したり、推論を実行するために使用できるエンベディングを生成します。
  • 複数のタイプの処理オペレーションを 1 つのインターフェースで効率的に連結できます。

サポートと制限事項

MLTransform クラスには次の制限があります。

  • Apache Beam Python SDK バージョン 2.53.0 以降を使用するパイプラインで使用できます。
  • パイプラインでは、デフォルト ウィンドウを使用する必要があります。

テキスト エンベディング変換:

TFT を使用するデータ処理変換:

  • Python 3.8、3.9、3.10 をサポートします。
  • バッチ パイプラインをサポートします。

ユースケース

サンプル ノートブックは、特定のユースケースで MLTransform を使用する方法を示しています。

Vertex AI を使用して LLM のテキスト エンベディングを生成したい
Apache Beam MLTransform クラスと Vertex AI text-embeddings API を使用して、テキスト エンベディングを生成します。テキスト エンベディングは、テキストを数値ベクトルとして表現する方法であり、多くの自然言語処理(NLP)タスクで必要になります。
Hugging Face を使用して LLM のテキスト エンベディングを生成したい
Apache Beam MLTransform クラスと Hugging Face Hub モデルを使用して、テキスト エンベディングを生成します。Hugging Face SentenceTransformers フレームワークは、Python を使用して文、テキスト、画像のエンベディングを生成します。
データセットから語彙を計算したい
データセットから一意の語彙を計算し、各単語またはトークンを個別の整数インデックスにマッピングします。この変換を使用して、テキストデータを ML タスクの数値表現に変換します。
ML モデルをトレーニングするためにデータをスケーリングしたい
ML モデルのトレーニングに使用できるように、データをスケーリングします。Apache Beam MLTransform クラスには、複数のデータ スケーリング変換が含まれています。

使用可能な変換の完全なリストについては、Apache Beam ドキュメントの変換をご覧ください。

MLTransform を使用する

MLTransform クラスを使用してデータの前処理を行うには、次のコードをパイプラインに含めます。

  import apache_beam as beam
  from apache_beam.ml.transforms.base import MLTransform
  from apache_beam.ml.transforms.tft import TRANSFORM_NAME
  import tempfile

  data = [
      {
          DATA
      },
  ]

  artifact_location = gs://BUCKET_NAME
  TRANSFORM_FUNCTION_NAME = TRANSFORM_NAME(columns=['x'])

  with beam.Pipeline() as p:
    transformed_data = (
        p
        | beam.Create(data)
        | MLTransform(write_artifact_location=artifact_location).with_transform(
            TRANSFORM_FUNCTION_NAME)
        | beam.Map(print))

次の値を置き換えます。

  • TRANSFORM_NAME: 使用する変換の名前
  • BCUKET_NAME: Cloud Storage バケットの名前
  • DATA: 変換する入力データ
  • TRANSFORM_FUNCTION_NAME: コードの変換関数に割り当てる名前

次のステップ