Instacartの機械学習プラットフォームであるGriffinを構築した事例とInstacartにおけるMLOpsの紹介
機械学習はInstacartでの体験を強化する上で重要な役割を担っているとのことで,アプリやWebでの体験を強化するためには,MLは必須の技術になっているなという感想.
ユーザーに対しては,「膨大な商品カタログの中から適切な商品を見つけ出せるようにサポート」してたり,ユーザーだけじゃなくて店員に対しては,「アメリカとカナダの数百万人のユーザーに効率的に商品を届けるために,店員をサポート」したり,小売業者やブランドパートナーに対しても色々とサポートしてて,自社の持ってる技術やプラットフォームで関係してるあらゆる人に役立つものを提供してるのは素晴らしいなと思った.
この辺は技術で周りを巻き込んで既存の枠組みを変えて行ってるので,純粋に楽しそうだなと!
紹介されてる図を見るだけでも,商品のレコメンド・検索・経路の最適化・広告商品の配信とかは機械学習が使われてそうな感じ.
元々はOSSのMLフレームワーク「Lore」を使っていたけど,これは少ない数のMLアプリケーションの場合は上手くいってて,会社の規模が大きくなって扱うアプリケーションの数や多様性が増えてくると対応できなくなったため,今回のGriffinを構築したという流れ
サービスの規模で適宜改善するのは良いと思う.LoreはモノリシックなアーキテクチャでGriffinはマイクロサービスアーキテクチャにしたというのも拡張性だったりサービス規模で変更がありそうだけど,後から変更するの大変だなという小並感.この辺りはフェーズ次第で上手くアーキテクチャなり実装方法をPros/Cons出して選択できるようになりたいのと先を見据えた設計はためておきたいお気持ち.
InstacartはMLOpsにSnowflake・AWS・Databricks・Rayなどのマネージドサービスを使いつつ,これらに統一的にアクセスできるように抽象レイヤーは自社でまかなってるハイブリッド形式とのこと.(Netflix, Facebookはin-houseで開発してて,ShopifyやSpotifyなどの企業はMLflowとかのOSSも活用しつつという感じ)
この辺りはある程度MLEやSWEがいる規模感じゃないとハイブリッドだったりin-houseはキツイと思う.数名のMLEとかだとAWSやGCPのマネージドサービスに乗っかる方が運用や継続的な改善を考えると圧倒的に楽だと思う.一方で自社の要件に合わなかったりとか物足りなかったりとかもあるので,これもサービスの規模感やスピード感だったり複数の要素を考慮してベストorベターな選択肢を取れると良さそう!
MLの改善サイクルを素早く回せるよう以下の点を考慮して設計したとのこと
4つのfoundationalなcomponentsを持っている