こんにちは、データシステム部推薦基盤ブロックの寺崎(@f6wbl6)です。現在、推薦基盤ブロックではデータサイエンス部MLOpsブロックのメンバーと協力しながらMLOps基盤の構築を進めています。本記事ではMLOps基盤構築の一環として進めているVertex Feature Storeの機械学習システムへの導入に関する知見およびVertex Feature Storeを導入する上での制限や課題をご紹介します。
MLOps基盤に関する取り組みについては以下のテックブログでも取り上げていますので、こちらもご参照ください。
推薦基盤ブロックが抱える機械学習システムの課題
Vertex Feature Storeを説明する前に、推薦基盤ブロックでの機械学習システム(以降、MLシステム)に関する課題について紹介します。
私たちのチームではこれまでに様々なMLモデルやシステムを開発し運用してきています。そもそもMLシステムを構築・運用していくことは、今後継続的にメンテナンスコストがかかることとトレードオフです。このことはMLOps領域に携わっているエンジニアなら何度も目にしたことがある例の図がそれを表しています。
引用:Hidden Technical Debt in Machine Learning Systems
私たちのチームでもその例に漏れず、開発・運用するモデルが増えるにつれて以下のような課題が浮き彫りとなっていました。
- 案件の度に様々なコードや特徴量を生成するクエリが流用・改変され、車輪の再発明がなされている
- モデルの入力として与えているデータが適切なものであることを保証できていない
- モデルの出力として得ている予測結果が適切なものであることを保証できていない
まず、様々な案件で似たようなコードや特徴量が量産されているという課題があります。特に、特徴量に関しては基本的にBigQueryのデータマートやリアルタイムデータ基盤からユーザー情報や商品情報を取得して生成するというのはどの案件でも共通しています。その結果、一度作ったクエリをマイナーアップデートしたものが各所に散らばっている・もしくはそれを認識できていない状態となる傾向があります。つまり、知らず知らずのうちに車輪の再発明をし、メンテナンスの及ばないものが増えていっていることを意味します。
2つ目と3つ目は運用しているMLモデルのモニタリングに関する課題です。MLシステムにおいて、「システムがエラーを起こしていない状態」の定義が困難であることは、MLシステムを運用したことのある方なら容易に想像がつくものと思います。特にMLモデルが正しい振る舞いをしていると保証するには、モデルに与えるデータ(特徴量)が適切であり、またモデルのアウトプットも想定していたものであることを検証する必要があります。
MLモデルの状態や入出力データが正常であるとする定義が非常に難しいということは言うまでもありませんが、まずはそれらを定常的に観測するための仕組みを設けないことには検証自体ができません。
機械学習システムの課題に対する取り組み
前述したもの以外にも様々な課題はありますが、現在は「MLシステム開発の高速化および標準化」を主軸としながら優先順位をつけてそれぞれの課題に取り組んでいます。具体的な取り組みについて以前別の記事で今後の展望として取り上げられているのでこちらもご一読ください。
私たちのチームでは上記の「案件の度に様々なコードやクエリについて車輪の再発明がされている」という課題に対する取り組みの一環で、Vertex Feature Storeの導入を進めてきました。Vertex Feature Storeを導入することで、特徴量の再発明を防止して適切に再利用し、また特徴量が適切にモニタリングできる状態の実現を目指しました。
Feature Store
概要
Vertex Feature Storeの説明の前に、まずFeature Storeとはどのようなものなのかを簡単に説明します。
Feature Storeは機械学習システムで扱う特徴量を管理・提供するための基盤の総称であり、2017年にUberの以下のブログで紹介されたのが初出とされています。
Feature Storeは機械学習で用いる特徴量を共有・再利用することを主な目的としたもので、現在までにOSS・マネージドサービス問わず様々な形でFeature Storeが公開されています。以下にFeature Storeの概念図を示します。
各構成要素の詳細については以下の記事が詳しいので、ぜひ参考にしてみてください。
いくつかFeature Storeを紹介すると、OSSとして公開されているものとしてはFeastやHopsworksなどがあり、マネージドFeature StoreとしてはTectonや2020年のAWS re:Inventで発表されたAmazon SageMaker Feature Storeなどがあります。その他にもAirbnbのZiplineやFacebookのFBLearner、AppleのOvertonといった、各社で構築しているML基盤にもその要素の1つとしてFeature Storeが組み込まれているようです。
Feature Storeの選定
このように様々なFeature Storeが公開されている中で、私たちのチームでは2021年5月のGoogle I/Oで発表されたVertex AIのコンポーネントの1つであるVertex Feature Storeを使うことにしました。
選定にあたっての理由は大きく以下の2点です。
- MLOps基盤の関連資産をGCPに集約させている
- Feature Storeの技術検証を高速に実施するため、マネージドサービスが望ましい
1点目については大前提とも言えるのですが、GCPをベースとしてMLOps基盤を構築している以上、GCPの外部に依存関係を極力持ちたくないという意図です。
2点目はFeature Storeという、まだ発展途上の概念を導入する上での保険です。調査を進めていく中で有用そうであることはわかったものの、導入することで何がどこまで解決できるのか・できないのかの技術検証を高速に行いたいという意図からマネージドで手軽に使えるものを選んでいます。
Vertex Feature Store
Vertex Feature Storeは、GCPが提供しているFeature Storeのフルマネージドサービスです。2022年1月現在でどのような機能が提供されているかを以下の表にまとめます。
続きはこちら