コンテンツに移動
データ分析

Dataflow の新機能: インテリジェンス、デベロッパー エクスペリエンス、パフォーマンスなど

2023年11月8日
Google Cloud Japan Team

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

2023 年はこれまでのところ、近年稀に見る年となっています。ML、特に生成 AI とその可能性が多くの業界を席巻しました。開発者やデータ実務者は、ユーザーのために生成 AI を活用する方法を模索しています。同時に、ほとんどの企業は COVID-19(新型コロナウイルス感染症)収束後の統合期に入っており、少ない労力で多くの成果をあげようとしています。このような背景を考えると、ストリーミング データを活用して生産性を向上させ、費用を削減することで、ますます多くのデータリーダーがビジネスを変革する機会を捉えているのは驚くことではありません。

そのような取り組みをできるようにし、サポートするために、Google の Dataflow チームはいくつかのプロダクトの機能に集中して作業を行ってきました。多くのお客様が今後の計画を思い描いていることと思います。そこで今回は、Dataflow の主な新機能の概要を紹介します。

自動チューニング

自動チューニングは Dataflow の基盤となるものです。また、Dataflow が選ばれる大きな理由にもなっています。大規模な分散システムの運用は、特に動き続けるデータをシステムで処理する場合は困難です。そのため、自動チューニングは Google にとって重要な要素となっています。Google は以下の自動チューニング機能を実装しました。

  • 非対称自動スケーリング: ユーザー ワーカーとバックエンド リソースを独立してスケーリングすることでパフォーマンスを向上させます。たとえばシャッフルを多用するジョブでは、非対称自動スケーリングを使用すると、ユーザー ワーカーが少なくなり、レイテンシの急増が低頻度に抑えられ、自動スケーリングの判断が安定します。この機能は一般提供されています。
  • 処理中のジョブ オプションの更新: 長時間実行されるストリーミング ジョブの自動スケーリング パラメータ(ワーカーの最小数 / 最大数)をダウンタイムなしで更新できます。これは、レイテンシ急増時の費用を削減することや、トラフィックの急増を予測する際のダウンスケーリングの制限を調整してレイテンシを低く抑えることを考えていても、実行中のパイプラインの更新に関連したダウンタイムやレイテンシは許容できない、という場合に役立ちます。この機能は一般提供されています。
  • ワーカーの迅速な引き継ぎ: 通常、新しいワーカーは自動スケーリングの際、永続ストアからパイプラインの状態を読み込む必要があります。これは比較的遅いオペレーションであり、結果的にバックログが増え、レイテンシが増加します。これに対処するために、Dataflow では状態をワーカーから直接転送するようにし、レイテンシを削減しました。
  • インテリジェントな自動スケーリング: キー並列処理(別名「キーベースのスロットリング」)を考慮して使用率を向上させます。その他の高度な自動チューニング手法もいくつかあります。
  • インテリジェントなダウンスケール減衰: 積極的なダウンスケーリングが原因で後にアップスケーリングが引き起こされる(上下動)、というのはストリーミング パイプラインによくある課題です。この問題に対処するために、Dataflow ではスケーリングの頻度をトラッキングし、上下動が検出されたらダウンスケーリングをインテリジェントに遅らせるようになりました。
  • BigQuery Storage Write API の自動シャーディング: 自動シャーディングは、BigQuery の書き込みのシャード数を動的に調整して、スループットが入力レートに遅れないようにします。これまで、自動シャーディングは BigQuery ストリーミング挿入でしか利用できませんでした。今回のリリースで、BigQuery Storage API にも自動シャーディングのオプションが用意されました。スループットとバックログを使用してテーブルごとの最適なシャード数を決定し、リソースの無駄を減らします。

パフォーマンスと効率

ユーザーに伺うと、どなたも少ない労力で多くの成果をあげたいと考えています。効率やパフォーマンスを重視した以下の機能により、基となるリソースから得る価値を最大限に高めることができます。

Dynamic Thread Scaling

Dataflow 環境では、CPU リソースが十分に利用されていないことがよくあります。スレッド数を調整することで利用率を上げることができます。しかし、手作業での調整では間違いが起こりやすく、運用の手間が増えることになります。サーバーレスと NoOps のビジョンに沿って、Google はスレッド数を自動的かつ動的に調整して効率を向上させるシステムを構築しました。これは最近バッチジョブ向けにリリースされました。今後ストリーミングのサポートも予定されています。

バッチジョブの垂直自動スケーリング

今年になって、Google はバッチジョブの垂直自動スケーリングをリリースしました。垂直自動スケーリングは、開発者がインフラストラクチャのサイズを適正化する際の運用の手間を減らします。垂直自動スケーリングは水平自動スケーリングと連携し、メモリ不足によるジョブの失敗を防ぐために、リソース(特にメモリ)の量を自動的に調整します。

Dataflow の ARM プロセッサ

Dataflow に T2A VM のサポートを追加しました。Ampere® Altra® Arm ベースのプロセッサを搭載した T2A VM は、卓越したシングルスレッド パフォーマンスを提供します。今後 Dataflow で ARM のサポートを拡大する予定です。

SDK(Apache Beam)のパフォーマンスの向上

今年になってから Google は Apache Beam の機能強化をいくつか行い、パフォーマンスを大幅に向上させました。たとえば次のようなものです。

  1. プリコンバイナ テーブルでキーのグループ化の効率を改善
  2. コピーされるバイト数を減らすことで TextSource のパフォーマンスを向上
  3. グループ化テーブルにサンプルのウィンドウ サイズを追加
  4. 軽量の関数を Contextful でラップしないように変更
  5. PGBK テーブルの最適化
  6. キャッシュに保存された出力レシーバーを使用するように最適化

ML

ML は、良質なデータがあることと、そのデータを処理する能力に依存しています。現在、データの処理、特徴量の抽出、モデルの評価、予測を行うために多くのユーザーが Dataflow を使用しています。たとえば、Spotify は ML ポッドキャスト プレビューの大規模な生成に Dataflow を使用しています。特に、ML によるリアルタイムの分析情報の生成は、新しいユーザー価値とビジネス価値を創出する方法として非常に有望です。Google は、Dataflow で ML を一層簡単かつシンプルにしてすぐに使用できるようにすることに引き続き注力します。そのために、Google は今年になって、ML 予測を行うための Beam 変換である RunInference をリリースしました。複雑で間違いが起こりやすく繰り返しの多いコードが、シンプルな組み込みの変換になります。RunInference を使用するとパイプライン コードに注力でき、モデルを使用する際の複雑さが解消されるため、データ アプリケーションのバックエンドを最適化できます。現在、RunInference に新しい機能と機能強化がいくつか追加されています。

Dataflow ML RunInference は、Dataflow ストリーミング ジョブを停止せずに ML モデルを更新できるようになりました(自動モデル更新)。そのため、データ サイエンス チームが作成している最新かつ最適なモデルで本番環境パイプラインを簡単に更新できるようになりました。また、以下のサポートも追加されました。

  • デッドレター キュー - 不適切なデータを本番環境パス以外で扱うために安全な場所へ簡単に移動できるようにすることで、運用上の問題が生じないようにします。
  • 前処理 / 後処理オペレーション - RunInference 変換内でモデルを呼び出す前にデータに対して使用する典型的なマッピング関数をカプセル化できます。これにより、トレーニングまたはサービング スキューの可能性が排除されます。
  • VertexAIModelHandler の Vertex AI エンドポイントによるリモート推論のサポート。

ML は多くの場合、ML 予測のようなタスクのパフォーマンス上のメリットだけでなく、費用効率の面でも GPU の恩恵を受けます。Google は、GPU リソースの効率と利用率を向上させる機能であるマルチプロセス サービス(MPS)など、GPU サポートの機能強化をいくつかリリースしました。

もちろん選択は常に重要な要素であり、これは GPU にも当てはまります。特定のパフォーマンスや効率のニーズに合わせて適切な GPU を選ぶときは特にそうです。そのために、Google は NVIDIA A100 80 GB と NVIDIA L4 の GPU のサポートも追加し、この四半期にロールアウトしています。

デベロッパー エクスペリエンス

ストリーミング パイプラインの構築と運用は、バッチ パイプラインとは異なります。常時稼働してダウンストリームのユーザーに高い SLA を提供できるパイプラインを構築して運用するには、適切なツールが必要です。以下の新機能は、開発者とデータ エンジニアを念頭に置いて設計されています。

  • データ サンプリング - ユーザーが抱える一般的な課題として、問題があることはわかっているのに、問題が発生したときに処理した特定のデータセットと問題を関連付ける方法がない、というものがあります。データ サンプリングは、この特定の問題に対処するように設計されています。データ サンプリングを使用すると、パイプラインの各ステップで実際のデータをモニタリングできるため、パイプラインの問題をデバッグできます。
  • ストラグラーの検出 - ストラグラーは、同じステージの他の作業項目よりも、完了までに著しく時間のかかる作業項目です。並列処理が減り、新しい作業の開始が妨げられます。そうしたストラグラーを Dataflow で検出できるようになりました。また、ストラグラーの原因の特定を試みることもできます。検出したストラグラーは UI ですぐに確認できます。より柔軟に、ステージまたはワーカーごとに表示できます。
  • 費用のモニタリング - Dataflow ユーザーから、ジョブの推定費用を簡単に調べる機能についての要望が寄せられていました。課金データのエクスポートを含め、課金データは、信頼性の高い課金データソースです。課金データにアクセスできない個人ユーザーでも見積もり額を簡単に確認できるようにするために、Dataflow の UI に費用の見積もりを組み込みました。
  • 自動スケーリングのオブザーバビリティ - 自動スケーリングがジョブに与える影響を把握する機能は、頻繁にリクエストされていました。Dataflow モニタリング インターフェースで、ストリーミング ジョブの自動スケーリングのモニタリング グラフを表示できるようになりました。これらのグラフにはパイプライン ジョブの期間中の指標が表示され、任意の時点においてジョブで使用されるワーカー インスタンスの数、自動スケーリングのログ、推定バックログの推移、平均 CPU 使用率の推移などの情報が含まれます。
https://storage.googleapis.com/gweb-cloudblog-publish/images/image2_6grpja2.max-2000x2000.png
  • ジョブのライフサイクル管理 - Eventarc のインテグレーションにより、Dataflow ジョブの状態変化でトリガーされるイベント ドリブン ワークフローを作成できるようになりました。
  • ワーカーのリージョン プレースメントにより、ジョブがリージョン内の利用可能なすべてのゾーンを自動的に利用できるため、ジョブがリソースの入手可能性に関する問題の影響を受けずに済みます。
  • テンプレート用の UDF ビルダー - 反復的なタスクやパイプラインを簡単にテンプレート化するために、Dataflow ユーザーの多くが Google 提供の、または所属組織で作成した Dataflow テンプレートを利用しています。テンプレートの優れた機能として、UDF を指定することで処理をカスタマイズできることが挙げられます。UI から UDF の作成と編集ができるようになったことで、さらに使いやすくなりました。以前作成した UDF も引き続き使用できます。また、多くの一般的なケースに対応する UDF のサンプルを GitHub で公開しています。
  • Dataflow 向けの Cloud Code プラグイン - Cloud Code では、IntelliJ などの好みの IDE を使用して、Google Cloud でアプリケーションの作成、デプロイ、統合を簡単に行えます。Dataflow プラグインを使用すると、IntelliJ IDE から Dataflow パイプラインを直接実行したり、デバッグしたりできます。

エコシステムのインテグレーション

必要なデータにアクセスできなければ、どの新機能も役に立ちません。そのため Google は、Dataflow を利用できるプロダクトやサービスを継続的に拡大しています。次に例を示します。

業種別ソリューション

ビジネス上の問題に対するソリューションの設計とデプロイにかかる時間を短縮するために、Google の業界別ソリューション チームと連携して Manufacturing Data Engine をリリースしました。このエンドツーエンドのソリューションでは、Dataflow と他の Google Cloud サービスを使用することで、データの取得から取り込み、変換、コンテキスト化、保存、ユースケースの統合まで、「コネクテッド ファクトリー」のユースケースが可能になります。そのため価値実現までの時間が短縮され、ROI が速くなります。今後、Manufacturing Data Engine のようなソリューションをさらにリリースする予定です。

学習と能力開発

Dataflow は簡単に使い始めることができます。パイプラインをデプロイするためのターンキー メカニズムがテンプレートで提供されます。Apache Beam は、本番環境グレードのパイプラインを数時間で作成できるほど直感的です。同時に、SDK とおすすめの方法のメリットについて理解を深めれば、プラットフォームをさらに活用できます。ここでは、新しい開発者の学習と能力開発のアセットを紹介します。

  • Dataflow Cookbook: この包括的なコードサンプル コレクションは、学習、能力開発、高度な問題の解決に役立ちます。
  • Google は Apache Beam コミュニティと連携し、Tour of Beam(開発者がインタラクティブに Beam コードを学習できる、常時稼働でセットアップ不要のオンライン ノートブック環境)、Beam Playground(Apache Beam のサンプルや変換をインタラクティブに試せる無料のオンライン ツール)、Beam Starter Projects(使い始めやすくするための、Apache Beam の主な言語すべてに対応したクローニングしやすいスターター プロジェクト)をリリースしました。Beam の認定資格のクエストは、こうした学習と能力開発の取り組みを補完するものです。ユーザーの認識を高め、認定を受けるのに役立ちます。
  • 6 月 13~15 日にニューヨーク Pier 53 キャンパスで Beam Summit を開催しました。Beam Summit のコンテンツ(2 日間にわたる 30 件のセッションと 6 件のワークショップ)はすべてオンラインで公開されています。
  • 最後に、Google は Apache Beam コミュニティと協力し、毎年 Beam College を開催しています。この仮想イベントでは、Beam の専門知識のレベルがさまざまな開発者が、講義、ハンズオン ワークショップ、専門家による Q&A セッションを通じて新しいコンセプトを学び、マスターすることができます。10 月 23~27 日のイベントに参加するには、こちらから登録してください。

ここまでお読みいただきありがとうございました。こうした機能を導入できたことを嬉しく思います。困難な課題を解決するために、Google のプロダクトをぜひご利用ください。

-Google Cloud グループ プロダクト マネージャー Shan Kulandaivel

-Google Cloud プロダクト マーケティング リード Frank Guan

投稿先