Dataflow ML

Dataflow ML では、Dataflow を使用して完全な ML パイプラインをデプロイおよび管理できます。ML モデルを使用して、バッチ パイプラインとストリーミング パイプラインでローカルとリモートの推論を行います。データ処理ツールを使用して、モデルのトレーニング用データを準備し、モデルの結果を処理します。
画像のリアルタイム分類、リモート推論呼び出しの実行、カスタム モデルハンドラの構築など、完全な Dataflow ML のサンプルを確認できます。
MLTransform クラスを使用して、機械学習(ML)ワークフロー用のデータを前処理します。MLTransform は、複数のデータ処理変換を 1 つのクラスに統合することで、Apache Beam ML データ処理変換をワークフローに適用するプロセスを簡素化しています。
with pipeline as p:
  predictions = (
      p
      | beam.ReadFromSource('a_source')
      | RunInference(MODEL_HANDLER))
RunInference の使用は、変換コードをパイプラインに追加するのと同じくらい簡単です。この例の MODEL_HANDLER はモデル構成オブジェクトです。
with beam.Pipeline() as p:
  transformed_data = (
    p
    | beam.Create(data)
    | MLTransform(...)
    | beam.Map(print))
ML モデルのトレーニング用データを準備するには、パイプラインで MLTransform を使用します。MLTransform は、複数のデータ処理変換を 1 つのクラスにラップするため、さまざまな前処理タスクに 1 つのクラスを使用できます。

事前トレーニング済みモデルによる予測と推論

Pytorch で事前トレーニング済みモデルを使用します。
scikit-learn で事前トレーニング済みモデルを使用します。
TensorFlow で事前トレーニング済みモデルを使用します。
Apache Beam には、リモートでデプロイされた Vertex AI エンドポイントにリクエストを送信するためのサポートが組み込まれています。このノートブックでは、Vertex AI で画像分類に Apache Beam RunInference 変換を使用する方法について説明します。
同じ RunInference 変換で複数のモデルを使用するには、キー付きモデルハンドラで RunInference 変換を使用します。

MLTransform を使用したデータ処理

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

ハブモデルによる予測と推論

推論パイプラインで Gemma モデルを使用すると、会話の感情を測定したり、会話の内容を要約したり、難しい会話での返信の下書きを作成したりできます。
Hugging Face のトレーニング済みモデルで RunInference 変換を実行します。
TensorFlow Hub のトレーニング済みモデルで TensorFlow の RunInference 変換を使用します。
生成 AI タスクに RunInference 変換を使用します。このノートブックでは、Hugging Face Model Hub の言語モデルが使用されます。

ML ワークフローのオーケストレーション

Vertex AI Pipelines では、ML ワークフローをサーバーレスな方法でオーケストレートすることで、ML システムの自動化、モニタリング、管理を行うことができます。Vertex AI Pipelines では、TFX または KFP で定義されたワークフロー DAG をオーケストレートし、Vertex ML Metadata を使用して ML アーティファクトを自動的に追跡できます。
TensorFlow Extended(TFX)を使用すると、Apache Beam および Dataflow ランナーとの統合が組み込まれたオーケストレーション フレームワークを使用して、完全な ML パイプラインをデプロイできます。
Kubeflow を使用すると、Kubernetes での ML ワークフローのデプロイがシンプルでポータブルかつスケーラブルになります。Kubeflow Pipelines は、Kubeflow Pipelines SDK を使用して構築された再利用可能な完全な ML ワークフローです。

その他の機能

Dataflow ジョブで GPU を使用すると、画像処理タスクと ML 処理タスクを高速化できます。Dataflow でサポートされている GPU タイプと、さまざまなワークロードに使用する GPU のタイプに関する推奨事項をご覧ください。
GPU と CPU を組み合わせて、高パフォーマンスとコストの削減を実現します。特定のパイプライン ステップにリソースをターゲット設定できるため、パイプラインの柔軟性と機能性が向上します。さらに、コストの削減を実現できる可能性もあります。
Apache Beam には、パイプラインに追加してすぐに使える拡充変換が用意されています。これにより、データ拡充のワークフローを簡素化できます。

モデルのメンテナンスと評価

RunInference を使用すると、Apache Beam パイプラインを停止せずにモデルを自動的に更新できます。パイプラインが実行中であっても、副入力を使用して、モデルをリアルタイムで更新してください。
TensorFlow Model Analysis(TFMA)を使用して、2 つのモデルを作成して比較することで、モデルのパフォーマンスを調査し、可視化します。Apache Beam を使用すると、複数のモデルを一度に評価して比較できます。

リソース

Java パイプラインで RunInference を使用するには、言語間の Python 変換を作成します。このパイプラインは、前処理、後処理、推論を行う変換を呼び出します。
Dataflow ML のサンプルを実行するには、Google Cloud の権限の構成が必要になることがあります。Dataflow パイプラインに必要な権限に関する詳細なガイドをお読みください。
サンプルと対応するソースコードは GitHub から入手できます。GitHub では、Colab でサンプルを実行する手順を確認することもできます。