Wayfair が Vertex AI で MLOps を効果的に活用している方法
Google Cloud Japan Team
※この投稿は米国時間 2022 年 8 月 5 日に、Google Cloud blog に投稿されたものの抄訳です。
編集者注: このブログ投稿の 1 回目では、Wayfair が機械学習(ML)を使って 3,000 万人のアクティブなお客様一人ひとりをサポートしている方法を紹介しました。Wayfair のデータ サイエンティストが Vertex AI を使ってモデルの運用化、サービスの提供、運用準備の速度を改善している方法について、Wayfair の ML エンジニアリング責任者 Vinay Narayana 氏、リード ML エンジニア Bas Geerdink 氏、機械学習シニア エンジニア Christian Rehm 氏が、さらに深く掘り下げて紹介します。このブログ記事作成にご協力いただいた Google のプリンシパル アーキテクト Hasan Khan に著者一同よりお礼申し上げます。
2021 年の Google による Vertex AI プラットフォームの発表は、弊社が包括的で信頼性の高い AI Platform を探していた時期と完璧に重なりました。この数年にわたり、すでに Google Cloud への移行に取り組んでいましたが、クラウドへ移行しても仕事は終わりではないと考えていました。ワークロードのモダナイゼーションに向けてもう一歩踏み出し、安定性と運用上のオーバーヘッドに問題のある、従来のインフラストラクチャ コンポーネントを使った ML モデルのデプロイおよび提供から脱却する準備ができたにすぎませんでした。これは、MLOps を効果的に活用するために重要であり、そこで Vertex AI が非常に役立つことははっきりしていました。
MLOps を効果的に活用するための道を切り開く
Wayfair が掲げる MLOps のビジョンは、社内のチーム間でのコラボレーションをサポートするツールを提供し、データ サイエンティストが信頼性の高いデータにアクセスすることを可能にすると同時に、データ処理、モデルのトレーニング、評価、検証を自動化することです。データ サイエンティストは、バッチおよびオンライン サービング用のモデルを運用化し、本番環境のデータとモデルを継続的にモニタリングするために、自律性を必要としています。Vertex AI で目指しているのは、データ サイエンティストがエンジニアに頼らずにモデルを運用化し、簡単にモニタリングして、進化させられるようにすることです。Vertex AI を使えば、トレーニング、検証、ML モデルとパイプラインのデプロイ用のツールによって、これを可能にするインフラストラクチャを得られます。
以前は、包括的な AI プラットフォームがなかったため、それぞれのデータ サイエンス チームが、従来のインフラストラクチャ コンポーネントに固有のモデル運用化プロセスを構築する必要がありました。Wayfair のあらゆる ML プロジェクトにメリットをもたらしてくれる、一元化された特徴量ストアもありませんでした。このことを念頭に置いて、弊社は Vertex AI プラットフォームの初期導入において、Feature Store コンポーネントに焦点を合わせることにしました。
最初の概念実証によって、データ サイエンティストがモデルのトレーニングのために Feature Store から簡単に特徴量を取得でき、バッチおよびオンライン推論用のモデルを 1 行のコードで容易に提供できるようになったことを確認しました。また、Feature Store では、バッチおよびオンライン リクエストのパフォーマンスを自動的に管理できます。Wayfair のワークフロー オーケストレーションの既存技術では大幅に作業速度が落ちていたため、これらの結果を受けて、次に Vertex AI Pipelines の導入を評価する意欲が高まりました。結論から言えば、両方のサービスが現在 Wayfair で構築および提供しているいくつものモデルの基礎となっています。
データ サイエンティストが世界水準の ML モデルの構築に集中できるようにする
Vertex AI Feature Store と AI Pipelines の導入以降、Wayfair ではいくつかの機能を追加することで、ユーザー エクスペリエンスを大幅に改善し、データ サイエンティストが参入するハードルを下げて、Vertex AI とそれによって提供されるすべてのものを活用できるようにしています。
1. CI / CD とスケジュールされたパイプラインの構築
Google のチームと協力して、Wayfair と Google で共通のツールおよびベスト プラクティスをもとに、効率的な CI / CD とスケジュールされたパイプラインを構築しました。これによって、Vertex AI Pipelines をテスト環境と本番環境にリリースし、クラウドネイティブなサービスを活用できます。
コードはすべて GitHub Enterprise で管理しており、Kubeflow コードと Docker イメージの定義を保存している Vertex AI Pipelines 専用のリポジトリがあります。変更がブランチに push されると、Buildkite ツールで自動的に構築が始まります。構築にはいくつかのステップがあり、単体テストと統合テストや、コードの lint チェック、ドキュメント生成、自動デプロイなどがあります。構築の最後にリリースされる最も重要なアーティファクトは、Docker イメージとコンパイルされた Kubeflow テンプレートです。Docker イメージは Google Cloud Artifact Registry にリリースされます。Kubeflow テンプレートは完全にバージョニングかつ保護された専用の Google Cloud Storage バケットに保存しています。このようにして、パイプラインを(手動またはスケジュールに従って)実行すると、Vertex AI Pipeline を実行するのに必要なあらゆるコンポーネントが利用可能になります。
パイプラインをスケジュールするために、パイプラインの実行権限がある専用の Cloud Function を構築しました。この Function は、Pub/Sub トピックをリッスンします。そこでは、どのパイプラインをどのパラメータで実行するかを指定するように定義されたスキーマで、メッセージをパブリッシュできます。これらのメッセージは、Google Kubernetes Engine のスケジュール設定に従って、シンプルな cron ジョブからパブリッシュされます。このようにして、フルサポートかつフルマネージドのインフラストラクチャを使用して、パイプラインをスケジュールするための分離された安全な環境を確保しています。
2. 共有ライブラリを使った Vertex AI サービスの抽象化
現在使用している Vertex AI の関連サービスを共有 Python ライブラリで抽象化することで、新しいソフトウェアの開発または Vertex AI への移行を行っているチームをサポートしています。「wf-vertex」と呼ばれるこのライブラリには、ヘルパー メソッド、例、Vertex AI で作業をするためのドキュメントだけでなく、Vertex AI Feature Store、Pipelines、Artifact Registry のガイドラインも含まれています。
その一例が「run_pipeline」メソッドであり、メッセージを適切なスキーマで Pub/Sub トピックにパブリッシュすることで、Vertex AI パイプラインを実行できます。パイプラインをスケジュールするとき、デベロッパーはセキュリティやインフラストラクチャ構成を心配せずに、このメソッドを呼び出すだけでよいのです。
最も注目すべきは、Vertex AI Pipelines でのハイパーパラメータの調整を可能にする既存のベスト プラクティスの確立です。これによって、データ サイエンティストが行うハイパーパラメータの調整時間を 2 週間から 1 時間以下に短縮できます。
Kubeflow で並列ステップ(コンポーネント)の出力を組み合わせることはまだできないため、弊社ではそれを可能にするメカニズムを設計しました。そこでは、実行時にパラメータを定義し、Kubeflow の parallel-for 演算子を通じて、得られたステップを並行して実行します。最後に、これらの並列ステップの結果を組み合わせて、結果を解釈するためのステップを作成しました。このメカニズムによって、並行してトレーニングされた一連の候補から、精度の観点で最適なモデルを選択できます。
弊社の CI / CD、スケジュールされたパイプライン、共有ライブラリにより、モデルの運用化の労力を 3 か月以上から約 4 週間まで削減できました。共有ライブラリを構築し、チームメンバーが Vertex AI の使用に関する専門知識を継続して取得しているため、2022 年の終わりまでに、この時間をさらに 2 週間まで削減できると考えています。
MLOps のさらなる可能性に期待
今後の目標は、Vertex AI のすべての機能を最大限に活用し、データ サイエンティストがモデルの運用化のあらゆる作業においてエンジニアから完全に自律するところまで、MLOps スタックを引き続きモダナイズすることです。次に注目しているのは、Vertex AI Model Registry と Vertex ML Metadata に加えて、AutoML の機能をさらに利用することです。現在 Wayfair が本番環境で提供しているカスタムモデルの次に、いくつかのユースケースに役立てるため、AutoML 用の Vertex AI モデルおよびエンドポイントを試しています。
MLOps の変革によってさまざまな機能が弊社のチームに導入されると確信しています。たとえば、パイプラインへと自動化されたデータおよびモデルのモニタリング ステップや、メタデータ管理、Wayfair のネットワークへのアクセスを必要とするリアルタイム モデルをサポートするアーキテクチャ パターンなどです。また、モデル予測サービスの継続的インテグレーション、提供、デプロイを可能にする ML パイプラインを完全に自動化することで、モデルを継続的にトレーニングしていくことも期待しています。
Wayfair に特化した堅牢な Vertex AI の共有ライブラリを構築するために、協力と投資を引き続き行っていきます。バッチモデルを最終的には 100%、Vertex AI に移行することが目標です。MLOps の効果的な活用の探求に大きく期待しています。
- Wayfair、機械学習シニア エンジニア Christian Rehm 氏