コンテンツに移動
AI & 機械学習

Apache Beam の新しい Dataflow ML イノベーションで ML モデルの実行がより簡単に

2023年7月1日
Google Cloud Japan Team

※この投稿は米国時間 2023 年 5 月 3 日に、Google Cloud blog に投稿されたものの抄訳です。

Harvard Business Review によると、AI 用の自社モデルを本番環境に投入できている企業はわずか 20% です。Google Cloud Dataflow は、最もよく利用されているオープンソース フレームワークの一つである Apache Beam を基盤として活用します。Apache Beam は、統合型プログラミング モデルであり、バッチおよびストリーミング パイプラインの開発向け SDK を提供します。オープンなプロダクトを構築するための取り組みを続けるなかで、Google は Beam コミュニティと密に連携して、ML に焦点を当てた 3 つの新機能を Dataflow に追加することになりました。これらの機能とコミュニティの膨大なリソースを併せて活用すれば、本番環境における大規模なストリーミング ML モデルの実行を簡略化できます。

  1. 自動モデル更新: データや ML モデルは常に変化しているため、効果を維持するには、モデルを継続的に再トレーニングして改善する必要があります。こうしたモデルの更新では、データ エンジニアリング チームが再デプロイに膨大な労力を注ぐ必要はありません。新しいストリーミングの自動モデル更新機能を使用すると、モデルを更新し、データ ストリーム処理を一時停止することなく稼働中のストリーミング パイプラインでホットスワップできるため、ダウンタイムの回避が可能となります。

  2. TensorFlow Hub のインテグレーション: TensorFlow Hub は、事前トレーニング済み ML モデルのリポジトリであり、素早く簡単にアプリケーションに ML モデルをデプロイしたい研究者やデベロッパーの貴重なリソースとなっています。オープンソース モデルは、単体でも複数の組み合わせ(アンサンブル)でも、データ サイエンティストによく使用されるツールです。たとえば、お客様が投稿したレビューの感情分析を行う際、カスタムのドメイン固有モデルにデータを渡す前に、エンベディングの段階でオープンソースのモデルを使用します。Apache Beam ユーザーがこの手順を簡単に実施できるように、TensorFlow Hub のインテグレーションによって、わずか数行のコード入力でモデルをダウンロードしてバッチまたはストリーミング Dataflow パイプライン内で利用できるようにしました。

  3. モデル アンサンブル: ML のフレームワークが急増する中、使用できる処理パイプラインが 1 つに制限されてしまうのは理想的とはいえません。Apache Beam SDK を活用すると、TensorFlow、PyTorch、SKLearn などの複数のフレームワークを、アンサンブルとして 1 つのパイプラインで使用することが可能になります。Apache Beam コミュニティは最近、ONNX モデルハンドラのサポートを開始し、サポート対象のフレームワークがさらに増えました。

ストリーミングの自動モデル更新

Apache Beam は、単一の統合型 API を使用してストリーミングとバッチの両方に対応できることで知られています。この機能によりデベロッパーは、コードの変更や多数の新しい import ステートメントの追加を必要とせずに、バッチとストリーミングを切り替えることができます。しかしこれまでは、モデルが再トレーニングされるたびに、オペレーション エンジニアはパイプラインのさまざまなライフサイクル イベントを処理する必要がありました。この自動モデル更新機能では、パイプライン全体の更新や再デプロイを必要とせず、RunInference 変換が自動的にモデルハンドラを更新します。

この機能では、次の 2 つのモードが利用可能です。

  1. ウォッチモード: このモードでは、Google Cloud Storage から更新を pull します。RunInference の WatchFilePattern クラスを使用して、最新のファイルを確認します。その後、タイムスタンプに基づいて file_pattern を照合することで更新します。最新の ModelMetadata が出力され、これを RunInference の PTransform で使用して、Beam パイプラインを止めることなく ML モデルを更新します。

  2. イベントモード: Pub/Sub のような無限ソースにパイプラインを接続することで、更新イベントが変換に直接送られ、オンデマンドでモデルのホットスワップが開始されます。

TensorFlow Hub のインテグレーション

新しいネイティブの TensorFlow モデルハンドラでは、引数として URL をモデルに渡すことで、Dataflow パイプラインで TensorFlow Hub モデルを使用できます。TensorFlow Hub は、TensorFlow フレームワークや、その高水準なラッパーである Keras 内で使用可能な、事前トレーニング済み ML モデルのリポジトリです。パワフルなモデルをトレーニングなしで、さまざまなタスクに活用できます。リポジトリには 1,000 を超えるモデルが含まれており、コミュニティの協力によりさらに増え続けています。

それでは、小売店舗管理や e コマースサイトなど、さまざまな業界でよく使用されている画像分類の例を見てみましょう。次の例では、tfhub 上で mobilenet_v2 モデルを使用しています。わずか数行のコードで、数百万の画像処理が可能なモデルをパイプラインで使用できます(このノートブックの実行可能なコピーは、こちらからご利用いただけます)。
読み込んでいます...

このコードを数百万の画像用に機能させるためには、ソースをオブジェクト ストア上のバケットに変更し、多数の Apache Beam シンクの一つを使用して目的の場所に結果を出力します。

モデル アンサンブル

1 つのビジネス ユースケースであったとしても、複数のフレームワークを使用して構築するケースがますます増えています。そのため、可能な限り多くのフレームワークを RunInference でもサポートすることが必要になってきます。RunInference では、モデルハンドラにこうしたサポートを追加しています。

今回のリリース前までは、Apache Beam では以下をサポートしていました。

Beam コミュニティは、ONNX のモデルハンドラを伴う ONNX runtime を追加しました。パイプラインのサンプルは、onnx_sentiment_classification.py で確認できます。

1 つのパイプラインでの複数モデルの使用について詳しくは、こちらをご覧ください。BLIP モデルと CLIP モデルの併用について説明するノートブックも含まれています。

まとめ

これからは、データ エンジニア、データ サイエンティスト、デベロッパーは Dataflow ML の最新機能を活用できます。その間にも、Apache Beam コミュニティは、ML の本番環境への移行と開発をより簡単で、より柔軟にするために、RunInference 変換に機能を追加し続けていきます。

  • 同一パイプライン内の異なるフレームワークから、モデルのアンサンブルをより簡単に作成できるようになりました。

  • TensorFlow モデルや TensorFlow Hub モデルを使用する際に記述が必要なコードの量が削減されました。

  • 自動モデル更新によって、ストリーミング パイプラインへの継続的デプロイがこれまでになく簡単になりました。

これらの機能の詳細や、サンプルのノートブックをさらに確認したい場合は、Dataflow ML のドキュメントをご覧ください。


- Dataflow チーム、シニアスタッフ プリンシプル Reza Rokni
- Dataflow チーム、テクニカル リード Danny McCormick
投稿先