このページでは、機械学習(ML)モデルのトレーニング用データを準備するために MLTransform
機能を使用する理由と方法について説明します。MLTransform
は、複数のデータ処理変換を 1 つのクラスに統合することで、Apache Beam ML データ処理オペレーションをワークフローに適用するプロセスを簡素化しています。
エンベディング生成タスクでの MLTransform
の使用については、MLTransform を使用してエンベディングを生成するをご覧ください。
MLTransform
を使用します。利点
MLTransform
クラスには次のようなメリットがあります。
- 複雑なコードの記述や基盤となるライブラリの管理を行わずに、データを変換できます。
- 複数のタイプの処理オペレーションを 1 つのインターフェースで効率的に連結できます。
データをベクトル データベースに push したり、推論を実行するために使用できるエンベディングを生成します。
エンベディングの生成の詳細については、MLTransform を使用してエンベディングを生成するをご覧ください。
サポートと制限事項
MLTransform
クラスには次の制限があります。
- Apache Beam Python SDK バージョン 2.53.0 以降を使用するパイプラインで使用できます。
- パイプラインでは、デフォルト ウィンドウを使用する必要があります。
TFT を使用するデータ処理変換:
- Python 3.9、3.10、3.11 をサポートします。
- バッチ パイプラインをサポートします。
ユースケース
サンプル ノートブックは、エンベディング特定のユースケースで MLTransform
を使用する方法を示しています。
- データセットから語彙を計算したい
- データセットから一意の語彙を計算し、各単語またはトークンを個別の整数インデックスにマッピングします。この変換を使用して、テキストデータを 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
: コードの変換関数に割り当てる名前
次のステップ
MLTransform
の詳細については、Apache Beam ドキュメントのデータの前処理をご覧ください。- その他の例については、Apache Beam 変換カタログのデータ処理用の
MLTransform
をご覧ください。 - Colab でインタラクティブ ノートブックを実行する。