blog

DeNAのエンジニアが考えていることや、担当しているサービスについて情報発信しています

2024.09.25 技術記事

機械学習モデル推論プラットフォーム Hekatoncheir の現在 (2024年9月)

by kajiwara daishin

#hekatoncheir #ai #mlops #kubernetes #gke #cloud native #platform engineering

はじめに

こんにちは、データ基盤部プラットフォームグループ所属の梶原です。
本記事では、データ基盤部で開発・運用している機械学習モデルの推論プラットフォームである「Hekatoncheir」について紹介します。

これまでの Hekatoncheir

データ基盤部では、2020 年ごろから Hekatoncheir と呼ばれる機械学習基盤の開発・運用を行っています。

当初の Hekatoncheir は、機械学習モデルの学習と評価を行い、学習済みモデルや推論 API 用のコンテナイメージなどといった成果物の作成までを担うパイプラインシステム(以下、Hekaton パイプライン)として登場しました。
この Hekaton パイプラインではモデルファイルやコンテナイメージなどの成果物の生成までを責務とし、AI サービス導入のための準備や運用などは導入先の事業部に任されており、このことが AI 導入の障壁となっていました。 また、AI サービスごとに運用を行うチームがバラバラになってしまうため、運用のノウハウを蓄積することが難しいなどの課題もありました。 そのため、これらの課題を解消するために、推論 API の serving (以下、Hekaton Serving)を Hekatoncheir の機能として提供することになりました。

その後、Hekaton パイプラインは Vertex AI Pipelines に移行し、推論 API の Serving を担う Hekaton Serving のみが機能として残り、Hekatoncheir = 機械学習モデル推論基盤 という形になりました。

本記事では、現在の「機械学習モデル推論基盤としての Hekatoncheir」について紹介します。
なお、これまでの Hekatoncheir についての詳細は以下の資料が参考になります。

モデル推論基盤としての Hekatoncheir

Hekatoncheir は Google Kubernetes Engine (以下 GKE と記載) をベースに推論 API の実行基盤が構築されています。
kubernetes に標準で備わっているコンテナの管理機能に加えて、ロードバランサ、https エンドポイント、モニタリング環境などといった、運用の際に必要となるインフラの準備をプラットフォームでサポートしており、開発者はアプリケーションに必要な kubernetes マニフェストを準備するだけで 推論 API のデプロイ を行うことが可能になっています。

加えて、 Hekatoncheir では ArgoCD を用いた GitOps 環境が整備されています。 そのため開発者はサービスごとに独自の CD を実装する必要はなく、所定の GitHub リポジトリに push することで、推論 API のデプロイを行うことができるようになっています。

Hekatoncheir で推論 API をデプロイする際の流れは以下のようになります。

ALT

  1. kubernetes マニフェストの記述
  2. 所定のブランチに push
  3. ArgoCD によって、ブランチに応じた環境に kubernetes マニフェストが apply される

開発環境用のクラスタへはマニフェストをそのまま apply して動作確認などを行うことが可能です。

Hekatoncheir の技術要素

クラスタの構成

前章で GKE をベースに構築されていると述べましたが、GKE クラスタは次のような構成になっています。

ALT

推論サーバを serving するためのクラスタ(hekaton クラスタ)と、ArgoCD を動作させるクラスタ(cicd クラスタ)の 2 種類の GKE クラスタを利用しています。
hekaton クラスタでは、AI プロジェクトを1つのテナントと捉えたマルチテナント方式を採用しており、テナントごとに名前空間を分割して必要となるリソースの管理を行っています。 またその他にも、テナントごとに必要となるリソースや、システム用のリソースもこのクラスタで管理しています。
cicd クラスタは前述の通り ArgoCD を動作させるためのクラスタで、ArgoCD の各種コンポーネントや ArgoCD 関連のリソースの管理を行っています。 マルチテナント構成を実現するために AppProject による Application のグルーピングを行ったり、 App of Apps 構成 を採用したりしています。

ArgoCD

ArgoCD とは

ArgoCD は kubernetes 向けの継続的デリバリーツールになります。ArgoCD のコントローラが、git リポジトリを定期的にポーリング(もしくは webhook で event を受信)し、クラスタ上のリソースの状態と差分があれば、git リポジトリの内容を新たに apply することで GitOps を実現します。この git リポジトリで宣言された内容と、クラスタの状態を一致させることを sync と呼びます。
また ArgoCD では、デフォルトで Web UI が提供されており、設定内容や sync 状況の確認、手動 sync の実行などを UI を通して行うことができます。

Application の構成

ALT

ArgoCD には単一のアプリケーションを表す Application というカスタムリソースと、これらの Application をグルーピングするための AppProject というカスタムリソースがあります。 Application では、マニフェスト群とそのデプロイ先クラスタを管理し、AppProject では、デプロイソースやデプロイ先、デプロイ可能な Object などを制御します。
Hekatoncheir では、推論 API などのサービス単位で Application を作成し、テナントごとに AppProject を用意してデプロイ先や利用者の制限を行っています。

また ArgoCD では、 App of Apps と呼ばれる、「アプリケーションを管理するためのアプリケーションを用意する」という設計パターンがあります。
Hekatoncheir ではこの App of Apps パターンを採用しており、これによって、Application の追加や削除を利用者自身が行えるようになり、管理チームへの依頼の手間を省くことが可能になっています。

その他の技術

その他にも運用業務の効率化のために必要なさまざまなツールを導入しています。 例として次のようなものが挙げられます。

また、独自にカスタムコントローラやツールなどの開発も行っています。

活用事例

Pococha での活用事例

ライブ配信アプリ Pococha では、ユーザーコミュニティの安心・安全の向上のために配信内容などの審査を行っており、この審査に AI を活用しています。 この審査で利用される推論 API は Hekatoncheir 上で serving されています。

配信審査における AI の活用に関しては、次の発表が参考になります。

最後に

本記事では、データ基盤部で開発・運用している機械学習モデル推論プラットフォーム「Hekatoncheir」について紹介しました。 社内での AI 活用を推進していけるように、今後も開発を進めてまいります。

最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。

recruit

DeNAでは、失敗を恐れず常に挑戦し続けるエンジニアを募集しています。