🏪

Feature Storeについて考える:(中小企業にとっての)意義は何なのか?

2023/11/29に公開

はじめに

皆さんの組織では、Feature Storeを使っているでしょうか。

AIや機械学習をしていると、MLOPsとセットでFeature Storeについて様々なメリットを謳う記事を見るのですが、データサイエンティストをしている知人に聞いても、実はあまり使っていない・導入を考えたけど止めたという人が多いように思います。(私の周りだけかもしれませんが)

よく、Feature Storeのメリットとして「特徴量を共有できる」ということが挙げられるのですが、大企業でデータサイエンティストが多数いる環境であればまだしも、中小企業やベンチャー企業にとっては、データサイエンティストの数が限られている(または1人しかいない)ので、そこまでそのメリットが見えないことが、導入につながっていない要因かもしれません。

しかし、実際に試してみると、それ以上のメリットがあるのではと思えてきました。
そこで、改めてFeature Storeについて考えてみたいと思います。

そもそもFeature Storeとは何か?

Feature Storeとは何かについては、詳しい方のサイトを参照しながら深ぼっていきましょう。

https://medium.com/data-for-ai/feature-store-milestones-cca2bafe6e9c

こちらにある、Feature Store Milstonesは興味深いですね。
2020年頃から、様々なプラットフォームでFeature Storeが出てきているのですね。

Feature Store Milstones

個人的には、Google Cloudで仕事をすることが多いので、Vertex AIおよびそこに伴うVertex Feature Storeくらいしか分からないですが、元々はUBERやAIRBNBといった所謂ユーザー企業側なのですね。これは、面白いかも。

Vertex AI Feature Store(名前が色々変わっているのか、今はこれが正式名称っぽい)については、次のサイトが分かり易かったです。

https://book.st-hakky.com/data-science/vertex-ai-feature-store-overview/

Vertex AI Feature Storeだけの特徴かもしれませんが、次のような点があるようです。

Vertex AI Feature Store はfeaturestore -> Entitytype -> Featureの順序でリソースを階層的に整理します。

オンライン ストレージとオフラインストレージの2つのストレージを使用します。(中略) オフラインストレージは数ヶ月〜数年分の特徴量データを保存するために使用され、オンラインストレージは通常、最新の特徴量のみを保持して、保持した特徴量は低レイテンシでアクセスされることを想定する必要があります。

といったように、特徴量を様々にグループ化して、時系列で保存することができるというのが、Feature Storeの通常の機能です。

そのために、異なる分析を行っているチーム間でも、「使いやすい特徴量」を共有・再利用することができるというメリットにつながっていきます。

ただし、Vertex AI Feature Storeでのデメリットであるように

変換処理(Transform)がない。

ということで、あくまで加工後の特徴量を格納しておくものという位置づけになっているようです。

そのため、結局Pythonのプログラムで加工したあとの保管場所のように見えてしまい、管理の二度手間に見えてしまう。Data Catalogとの違いが分からない。といったことにつながっているのではないでしょうか。

Feature Storeの中小企業にとっての意義は何か?

それでは、特徴量の共有に苦労するほどの人員数もいない企業にとってFeature Storeのメリットは何でしょうか。

それが「最新の特徴量と過去の断面で保存した特徴量」というものを使い分けられるということです。

上記のメリットを得られる具体的な場面を考えていきましょう。

業界によっても異なるかもしれませんが、私の関わりが多い購買データでは「同じ商品コード(インストアコード)でも、異なる商品を指す」ということが多々あります。

例えば、A001という商品がある日では「人参」を指していたのに、今日は「牛肉」を指していることもあります(小売り側の管理の仕方にもよりますが)

本来であれば、その日ごとのマスタを管理すべきなのですが、それが非常に難しく結局最新のデータだけを残してマスタ化してしまうということが、残念ながらよくあります。

それに対して、FeatureStoreを使えると、その時点時点のマスタを参照することができるので、正しい値を用いることができます。

これは、購買データの世界でなくても、顧客データのように同じ人が変わっていく(年齢や、年収、家族構成などなど)ようなデータでは、必ず必要になってくるでしょう。

このメリットを活用するためだけのためでも、早急にFeatureStoreを導入することの意味があるのではないでしょうか。

一方で、上記を実現するためのコストはどうなるでしょうか。
Vertex AI FeatureStoreをOnlineで使えるようにしていると、1日で何もしなくても数千円と、(企業によっては)びっくりする金額が請求にのってきます。これは、アプリなどでもこの特徴量を使えるようにするための「オンライン サービング」が高コストなためです。

しかし、そのような使い方をしないのであれば、offlineにしておけば十分です。

下記の費用によると、オフライン ストレージは「$0.023 per GB-month」それに、「1GBあたり$3.50」のスナップショットの分析費用がかかるのでデータ量によって変わってきますが、実際に中小企業レベルでのデータで行った場合には月間で千円もかかりませんでした。
https://cloud.google.com/vertex-ai/pricing?hl=ja#featurestore

その金額で、マスタの過去断面が使えるようになると考えると、十分費用対効果があるのではないでしょうか。

直近であったVertex AI Feature Storeに関するリリース

最後に、Vertex AI Feature Storeの最新情報をまとめておきます。

残念ながら私は時間の関係でいけなかったのですが、Google Next Tokyo'23でVertex AI Feature Storeについても、リリースがあったようです。

https://cloud.google.com/blog/ja/products/ai-machine-learning/new-vertex-ai-feature-store-bigquery-powered-genai-ready/

https://speakerdeck.com/asei/vertex-ai-feature-store-ni-ji-jie-xue-xi-enziniagalei-sita-li-you?slide=3

「BigQueryのTableやViewを扱えるようになった」というのが大きいようです。
たしかに、BigQueryですべての加工を行い、そのデータをFeatureStoreに格納することができれば、BigQueryを中心とした分析基盤が構築されることになるでしょう。

上記であげた「変換処理(Transform)がない。」というデメリットも、BigQueryと連携して使えるのであれば、問題なくなるでしょう。逆に、わざわざFeatureStore側にその機能を持たせてデータ加工を二重にするというのは管理しづらくなります。

また、embeddingのようなデータも使えるというのも、生成AIなどを考えていくと必須になっていきそうなので、非常に重要なアップデートですね。

まだプレビューなので、その恩恵を得られるのはこれからになりそうですが、ぜひこのタイミングでFeatureStoreの導入を考えてみてはどうでしょうか。

Discussion