データ分析・機械学習モデル開発から、デプロイ・運用まで自動化を行うMLOpsプラットフォームを開発しました。
## 課題
データ分析・機械学習を実装するデータサイエンティストは増えつつあるものの、実際にモデルが売上を生み出すにはシステムに組み込まなければ意味がありません。しかし、データサイエンティストのスキルはアプリケーション開発ではなく、データサイエンティストはデータ分析や機械学習の本質的な設計に工数を割く必要があります。AWSなどのマネージド・サービスにも機械学習のプラットフォームが提供されていますが、ビジネス要件を達成するために必要な機能が十分とはいえません。
例えば、毎日自動で学習・モデルのリリースを行いA/Bテストを行い、結果を自動集計し、自動で性能の良い方をデプロイするといったオペレーションを構築するのは、マネージド・サービスの機能では十分ではありません。社内システムとも密接な連携が必要になるでしょう。
そこで、TektonというOSSのCI/CDシステムをベースに、**Kubernetes上ですべてが自動化されたMLOpsシステムを立案、設計・開発しました。**マネージャが1人、開発には2人のメンバーを迎えました。一部の運用は他チームへ委譲しています。
## 主なコンポーネント
- Jupyter
- データサイエンティストがすぐに開発を始められるように、Kubernetes上にJupyter Hubを構築しています。GPUを使ったり、メモリに特化したインスタンスなどを自由に選んで、すぐに開発を行えます。社内システムとも連携しており、また、Tektonパイプラインや自動デプロイされるモデルの推論APIなども、同じKubernetes内でアクセスが可能になっています。
- Jupyter上で開発したプログラムを、コマンド一つでそのまま分散学習パイプラインを起動し、完了後にそのままAPIを起動することも可能にしています。
- Tekton
- アプリケーションのlintやテスト、ビルドからデプロイ、デプロイ後の自動テストなど、様々なパイプラインを構築しています。これらはKubernetesリソースとしてyamlで管理され、コード化されています。実際にはデータサイエンティストはほとんどyamlを覚える必要はなく、コードから自動生成することができます。
## アピールポイント
Kubernetesの運用、オペレーター開発、gRPC API開発、GitOps/CIOpsの経験、最適化の技術があります。
TensorFlow,Sparkなどの分散エンジン・フレームワークのランタイムの最適化、並びにそれを最大化するためにKubernetesのスケジューリング・スケーリングを自動化・最適化できます。