推薦システムへのVertex AI Pipelinesの導入
株式会社ジーニー / 櫻井健太朗
インフラエンジニア / 従業員規模: 501名〜1,000名 / エンジニア組織: 101名〜300名
利用プラン | 利用機能 | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|---|
従量課金 | Vertex AI Pipelines | 10名以下 | 2024年6月 | B to B |
利用プラン | 従量課金 |
---|---|
利用機能 | Vertex AI Pipelines |
ツールの利用規模 | 10名以下 |
ツールの利用開始時期 | 2024年6月 |
事業形態 | B to B |
アーキテクチャ
アーキテクチャの意図・工夫
- Vertex AI Pipelinesを採用し、シンプルなPythonで実装するコンポーネントや任意のDockerコンテナを実行できる柔軟性を重視しました
- GCSをパイプラインのデータソースとすることにより、データクエリ・転送料金の削減を図りました
- Parquet形式でのデータの保管によるコスト最適化・パフォーマンス向上を実現しました
導入の背景・解決したかった問題
導入背景
どのような状態を目指していたか
特に以下のようなパイプラインの最適化やメトリクス監視などが必要でした。
- 各データ処理ステップに最適化されたコンピューティングリソース(CPU/RAM/GPU)の動的割り当てによる処理効率の向上
- 依存関係を考慮したデータ処理パイプラインの自動並列化による全体処理時間の短縮
- エンドツーエンドのデータフローの可視化とメトリクス監視による障害検知・トラブルシューティング時間の大幅削減
- MLOpsのプラクティスに則った再現性の高い機械学習ワークフローの標準化
導入前はどのような状況だったか
GENIEE RECOMMENDでは、レコメンド配信先となる顧客サイトのエンドユーザーの行動データを活用した推薦システムを開発しています。 当時の推薦システムの処理はMLエンジニアが個別に実装し、実行できる形にパッケージングしていました。 GCSのデータ転送料金などを考慮し、簡易的にCloud Run functions/jobsで推薦処理を実行していました。
ツール導入前はどのような課題があったか
推薦システムで扱う行動データや商品データの数に応じた処理ステップごとの適切なメモリ管理が重要でしたが、Cloud Run functions/jobsでは柔軟なリソース調整が困難な状況でした。データ前処理、モデル学習、推論など各処理ステップで必要となるメモリ使用量が大きく異なるため、処理ステップごとに最適なリソース割り当てが必要でしたが、個別に計測・調整する仕組みが整っていませんでした。これにより、メモリ不足による処理失敗やリソースの無駄が生じていました。 また、パイプラインの実行状況の可視化やメトリクス監視が必要でしたが、Cloud Run functions/jobsではそのような機能が不足していました。
比較検討したサービス
- AWS Step Functions + AWS Batch
- MLFlow
比較した軸
開発チーム自体が小さいということもあり、以下の点などの運用コストが低いことが特に重要でした。
- サーバレスコンテナ実行環境の有無
- パイプラインの可視化機能
- Google Cloud環境との統合性
- 機械学習処理との相性
選定理由
Vertex AI Pipelinesは、以下の点が決め手となりました。
- Google Cloud環境との統合性が高く、機械学習処理との相性が良いこと
- Vertex AI Experimentsと連携することで実験履歴を管理し比較できること
- サーバレスコンテナ実行環境(Vertex AI Training Job)による簡単なリソース管理が可能なこと
- Dockerコンテナについては既にAWS ECSで頻繁に使用していたため、コンテナベースでの実行に抵抗がなかったこと
- パイプラインを作成するためのフレームワークとしてKubeflow Pipelines(以下 KFP)が使用でき、必ずしもVertex AI Pipelinesに縛られないこと
導入の成果
改善したかった課題はどれくらい解決されたか
- 各データ処理ステップに適したマシンリソースを柔軟に割り当てることが可能になり、データ量やアルゴリズムに応じたCPU/メモリ設定の最適化ができるようになりました
- Vertex AI Pipelinesではコンポーネントの入力と出力の関係から自動的に依存関係が構成されることで各ステップが自動的に並列化され、処理時間の短縮が実現しました
- 各ステップで生成される中間生成物(アーティファクト)とその容量をコンソールから視覚的に確認できるようになり、ボトルネックの特定や最適化が容易になりました
- パイプライン実行のステータスやエラーログをリアルタイムで確認できるようになり、問題の早期発見と対応が可能になりました
- 再利用可能なコンポーネントの整備により、新規顧客向けのパイプライン構築が効率化されました
どのような成果が得られたか
- 行動データの処理にRAMを8GBから16GBに増加させるなど、適切なリソース割り当てが可能になりました
- 依存関係のないステップが並列実行され、全体の実行時間が短縮されました
- これまでは途中で失敗した場合、推測でデバッグ用のログを追加することが多かったのですが、失敗したコンポーネントの入力を取得して部分的に調査することで問題の特定までの時間が短縮されました
- コンポーネントやパイプラインの再利用性が向上し、新規顧客への導入リードタイムが短縮されました
導入時の苦労・悩み
小規模の開発チームであったこと、また技術選定に関してはエンジニアに裁量が委ねられていたため、Vertex AI Pipelinesの導入決定自体はスムーズに進みました。しかし実際の実装段階では、以下の点で苦労しました。
- 実装としてはVertex AI Pipelinesよりも基盤となるKFPが大きな割合を占めるため、KFPの技術的なキャッチアップが必要だった点
- 日本語のドキュメントや具体的な実装例が少なく、大規模なパイプラインの設計方法やKFPコンポーネントの適切な分割方法などについて調査するのに時間がかかった点
導入に向けた社内への説明
上長・チームへの説明
社内・チーム内へはどのように展開・活用推進したか
KFPコンポーネントの実行がDockerコンテナで行われるため、ポータビリティが高くローカル環境での開発がしやすいことをエンジニアに説明しました。また、Vertex AI Pipelinesが提供する直感的に分かりやすいパイプラインのGUIを用いたデモを実施し、Vertex AI Pipelinesの概要について説明しました。
導入に向けて上長・経営陣どのようにご説明したか
以下の点を中心に説明しました。
- 弊社でのVertex AI Pipelinesの導入は初めてであったため、事前に公式のノートブックなどを参考にプロトタイプを作成し、具体的な活用イメージを示しました
- コスト面では、従量課金制であるため、パイプライン実行時のみ課金され稼働していない時間帯のコストを大幅に削減できる点を説明しました
- スケーラビリティについては、パイプラインの同時実行数の制限やジョブのスペック制限などを調査し、クライアント数増加や大規模なデータ処理にも柔軟に対応できることを示しました
- MLOpsの観点から、実験管理、コンポーネントのバージョン管理、パイプラインの再現性など推薦システムの継続的な改善に必要な機能が統合されており、開発効率の向上が期待できる点を強調しました
活用方法
- 推薦システムの機械学習パイプラインの自動化
- データの前処理、モデルトレーニング、推論処理の一連のフローの構築
- パイプラインの実行状況の可視化
- パイプライン実験履歴の管理
よく使う機能
- Kubeflow Pipelinesによるパイプライン定義
- Container Componentsによる柔軟なDockerコンテナ実行
- GUIによるパイプライン実行状況の可視化
ツールの良い点
- Pythonのみでパイプラインの定義から実行まで完結できる点
- KFP Container Componentsの柔軟性が高い点
- パイプラインの実行状況の可視化が直感的に分かりやすい点
ツールの課題点
- Container Componentsの起動に時間がかかる場合がある(1~3分)
- イメージサイズを削減する工夫が必要になってくる
- 複数パイプラインの連携など複雑なワークフローの実装は他のツールを使用する必要がある
- 複雑な場合はGoogle Cloud Workflowsでカバーしている
ツールを検討されている方へ
KFPコンポーネントの実装においてPythonライブラリの依存関係管理のために複数のPoetryプロジェクトを使用していましたが、管理が煩雑になっていました。 この問題を解決するため、PythonとDockerのモノレポ管理をサポートするPantsbuildを導入することで複数のプロジェクトを統合管理できるようになり、重複していた設定やビルドとテストの効率化ができました。
また、以下の点に注意することも必要です。
- コンテナ起動時間のオーバーヘッドについては許容または改善する工夫が必要です
- アーティファクトの保存期間の管理を怠ると、ストレージ料金が膨らむ可能性があるため注意が必要です
- Vertex AI Experimentsと組み合わせることで定量的な評価に基づいたML開発プロセスを構築できるため、積極的に活用すると良いです
今後の展望
現状は、Google Cloud上で動作確認を行なっているため新規のパイプラインやコンポーネントのフィードバックが依然として遅い状況です。今後はより開発効率を上げるためローカルでのパイプライン動作確認環境の構築に取り組んでいきたいと考えています。
株式会社ジーニー / 櫻井健太朗
インフラエンジニア / 従業員規模: 501名〜1,000名 / エンジニア組織: 101名〜300名
2023年に株式会社ジーニーに新卒入社。マーケティングクラウドプラットフォームのインフラ運用保守業務を経て、2024年4月よりレコメンドサービス「GENIEE RECOMMEND」の開発に従事
よく見られているレビュー
株式会社ジーニー / 櫻井健太朗
インフラエンジニア / 従業員規模: 501名〜1,000名 / エンジニア組織: 101名〜300名
2023年に株式会社ジーニーに新卒入社。...
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法