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