Dataflow ML
Dataflow ML では、Dataflow を使用して完全な ML パイプラインをデプロイおよび管理できます。ML モデルを使用して、バッチ パイプラインとストリーミング パイプラインでローカルとリモートの推論を行います。データ処理ツールを使用して、モデルのトレーニング用データを準備し、モデルの結果を処理します。
with pipeline as p: predictions = ( p | beam.ReadFromSource('a_source') | RunInference(MODEL_HANDLER))
RunInference 変換
RunInference
の使用は、変換コードをパイプラインに追加するのと同じくらい簡単です。この例の MODEL_HANDLER はモデル構成オブジェクトです。
with beam.Pipeline() as p: transformed_data = ( p | beam.Create(data) | MLTransform(...) | beam.Map(print))
MLTransform コード
ML モデルのトレーニング用データを準備するには、パイプラインで
MLTransform
を使用します。MLTransform
は、複数のデータ処理変換を 1 つのクラスにラップするため、さまざまな前処理タスクに 1 つのクラスを使用できます。
事前トレーニング済みモデルによる予測と推論
Pytorch モデルがある場合
Pytorch で事前トレーニング済みモデルを使用します。
scikit-learn モデルがある場合
scikit-learn で事前トレーニング済みモデルを使用します。
TensorFlow モデルがある場合
TensorFlow で事前トレーニング済みモデルを使用します。
Vertex AI モデルハンドラがある場合
Apache Beam には、リモートでデプロイされた Vertex AI エンドポイントにリクエストを送信するためのサポートが組み込まれています。このノートブックでは、Vertex AI で画像分類に Apache Beam
RunInference
変換を使用する方法について説明します。
異なる方法でトレーニングされた複数のモデルをパイプラインで使用したい
同じ
RunInference
変換で複数のモデルを使用するには、キー付きモデルハンドラで RunInference
変換を使用します。
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
クラスには、複数のデータ スケーリング変換が含まれています。
ハブモデルによる予測と推論
感情分析と要約を行いたい
推論パイプラインで Gemma モデルを使用すると、会話の感情を測定したり、会話の内容を要約したり、難しい会話での返信の下書きを作成したりできます。
Hugging Face のトレーニング済みモデルがある
Hugging Face のトレーニング済みモデルで
RunInference
変換を実行します。
TensorFlow Hub にトレーニング済みモデルがある
TensorFlow Hub のトレーニング済みモデルで TensorFlow の
RunInference
変換を使用します。
生成 AI を利用したい
生成 AI タスクに
RunInference
変換を使用します。このノートブックでは、Hugging Face Model Hub の言語モデルが使用されます。
ML ワークフローのオーケストレーション
Vertex AI Pipelines で Dataflow を使用する場合
Vertex AI Pipelines では、ML ワークフローをサーバーレスな方法でオーケストレートすることで、ML システムの自動化、モニタリング、管理を行うことができます。Vertex AI Pipelines では、TFX または KFP で定義されたワークフロー DAG をオーケストレートし、Vertex ML Metadata を使用して ML アーティファクトを自動的に追跡できます。
TFX で Dataflow を使用する場合
TensorFlow Extended(TFX)を使用すると、Apache Beam および Dataflow ランナーとの統合が組み込まれたオーケストレーション フレームワークを使用して、完全な ML パイプラインをデプロイできます。
KFP で Dataflow を使用する場合
Kubeflow を使用すると、Kubernetes での ML ワークフローのデプロイがシンプルでポータブルかつスケーラブルになります。Kubeflow Pipelines は、Kubeflow Pipelines SDK を使用して構築された再利用可能な完全な ML ワークフローです。
その他の機能
GPU を使用する
Dataflow ジョブで GPU を使用すると、画像処理タスクと ML 処理タスクを高速化できます。Dataflow でサポートされている GPU タイプと、さまざまなワークロードに使用する GPU のタイプに関する推奨事項をご覧ください。
CPU と GPU を Right Fitting と組み合わせる
GPU と CPU を組み合わせて、高パフォーマンスとコストの削減を実現します。特定のパイプライン ステップにリソースをターゲット設定できるため、パイプラインの柔軟性と機能性が向上します。さらに、コストの削減を実現できる可能性もあります。
Feature Store データでストリーミング パイプラインを拡充する
Apache Beam には、パイプラインに追加してすぐに使える拡充変換が用意されています。これにより、データ拡充のワークフローを簡素化できます。
リソース
言語横断的なパイプラインを実行する
Java パイプラインで RunInference を使用するには、言語間の Python 変換を作成します。このパイプラインは、前処理、後処理、推論を行う変換を呼び出します。
Dataflow の権限
Dataflow ML のサンプルを実行するには、Google Cloud の権限の構成が必要になることがあります。Dataflow パイプラインに必要な権限に関する詳細なガイドをお読みください。
GitHub でサンプルを表示する
サンプルと対応するソースコードは GitHub から入手できます。GitHub では、Colab でサンプルを実行する手順を確認することもできます。
ユースケースの例を読む
このブログ投稿では、セマンティック検索と数値表現(エンベディング)を使用して RAG アプリケーションをリアルタイムで構築する方法について説明します。Dataflow ML を使用して、データをエンベディングに変換し、AlloyDB などのベクトル データベースに保存することでデータを準備します。