月次会発表切り抜き Vol.5 ログ&ML基盤をオンプレからクラウドに移行した話
はじめまして、T&C開発センター第1開発本部のnaganotです。
T&C開発センターでは毎月月次会をおこなっており、センター全体に向けて各部から取り組みや成果の共有、各種委員会からのお知らせなどをしています。
今回は私のグループで2021年に社内向けの月次会で発表した、ログ&ML基盤をオンプレからクラウドに移行した際のスライドを切り抜きしてお届けいたします。
~~~オンプレ期の課題~~~
アイスタイルのシステムは、こちらの記事にもあるように長年オンプレ環境でサービスの提供を行っておりました。
今から3年ほど前に構築したログ基盤とML基盤も例外ではなく、データセンター内にHadoopを構築し、そこでアクセスログの収集や集計、さらに集計後のデータを利用した機械学習のリコメンドモデルや推論モデルなどを開発していました。
オンプレのログ&ML基盤イメージ(クリックで拡大)
ただ、この図のようにログの収集から最後の配信に至るまでに様々なミドルウェアが使われており、各ミドルウェアに対する運用コストやメンバー間でのナレッジの偏り等、属人性の高さが問題視されていました。
~~~クラウド移行先の選定~~~
そんなときにT&C開発センター全体で、システムをオンプレからクラウドに移行するというプロジェクトが発足し、ML基盤としても上記の理由からクラウドに移行すればコストや属人性も排除できるのでは?ということで移行の検討に入ります。
また、ちょうどこのタイミングでMLチームが分析基盤チームにマージされ、分析基盤チームでは
・BigQuery上にRDBのデータを集約したデータウェアハウスやデータマートの構築
・GoogleAnalytics,FirebaseAnalyticsのアクセスログのBigQueryへの転送
の2点が進められていました。
このBigQueryに蓄積されているログデータがオンプレのアクセスログと比較して精度面や必要な属性等が足りていることを検証できたため、ログ基盤の代替はBigQueryであっさりと決まりました。
~~~MLサービスの選定~~~
ログ基盤の代替は決まりましたが、ML処理を行うための環境は別途選定する必要があります。その選定中(去年の5月頃)にVertexAIという新しいサービスが登場しました。
このサービスはGCPにおける各種MLツールを統合したようなサービスで、
その中核となるVertexPipelinesという機能を使うことでML処理やBigQuery,GoogleCloudStorage転送等との連携が簡単に行えます。
VertexPipelinesのワークフローイメージ
このVertexAIと、その他ではComposer+仮想サーバやGKE等も選択肢としてありましたが、機械学習チームが拡大した際の管理コストを下げるために、移行時からコストより管理性・拡張性を優先して、Vertex AIを採用しました。
~~~移行後~~~
移行後のログ&ML基盤イメージ(クリックで拡大)
移行前ではSparkで処理されていたログの集計や必要データの精査が、移行後はBigQueryのクエリを書くだけで完結し、メイン処理も既存のPython処理をDocker化してGoogleContainerRegistryに登録、あとはVertexAIのパイプライン構築時にそのイメージを指定してコンポーネント化するだけで従来と同じ動きを再現できました。
~~~移行してよかったこと~~~
最後に移行して良かったと思うことをいくつか紹介して終わりにしたいと思います。
1.今までできなかった量の処理も安定的に捌いてくれる
これは普段からBigQueryを使っている方は当然なことですが、私が今回感じたメリットとしてはかなり大きかったので挙げています。
オンプレの頃は例えば「一人ずつの直近○ヶ月の閲覧ページから、そのページにつけられているタグを集計して多い順に保持する」のような処理はかなりの時間がかかっており、スパイクアクセス等でログデータが一定量を超えてしまうと集計が止まっていたりもしたのですが、BigQueryに移行してからは毎日安定的に取得できるようになりました。また過去のログをより深く遡って集計できるようになりました。(ここに関してはHadoopでも台数増やせば解決できそうですが、ラック的な制限の問題もあり、容易に増やせる環境ではなかった)
2.並列稼働やマシン構成の変更が気軽にできる
既存のオンプレだとML処理用のサーバーのリソースが限られているため、夜間バッチも順次実行させる必要がある等、他のタスクに影響を与えないように各担当者が気をつけて運用していました。
クラウド移行後は各自でパイプラインを作ってスケジュールすればその時間に動いてくれるため、データの作成時間のバラツキも解消しました。
また、VertexAIはタスク内の処理をコンポーネントに分けさえすれば部分的に並列実行させたり、マシンスペックの変更もコード数行の変更でできるので、データ量の増加や複雑な処理の追加の際にも柔軟に対応できるようになり、便利です。
3.属人性が大幅に排除された
個人的にはこちらが一番大きいです。移行前の構成を見ていただくとWEBサーバーから最後のML処理に至るまでにFluentdやKafkaと言ったログ基盤の知識や、HadoopやSparkと言った分析基盤、Python等のMLの知識等、幅広い知識が求められます。
今回クラウド移行することでBigQueryとPython、あとはVertexAIとGCPの設定周りを押さえておけば概ねカバーできるというところで非常に安心感が大きいです。
~~~最後に~~~
クラウドに移行したことでMLモデル構築の土台ができ、今後はアットコスメのデータを使って様々な予測モデルの開発を進めていく計画です。
ただMLOps環境の整備に関してはまだまだで、例えばVertex AIのFeature StoreとFeastの比較や実験環境としてMLFlowの検証、デプロイ周りの整備等はこれから取り組んでいく予定です。
アイスタイルT&Cセンターでは、そんなML基盤を一緒に構築していきたい!という仲間を募集しています。
おわり
この記事が気に入ったらサポートをしてみませんか?