この記事では,Kubeflowの代替案を考えます.
Kubeflowとは
- kubernetes上で動くいくつかのMLツールを悪魔合体させたもの
- Googleが主導で開発
- 元々はKubernetesでTensorFlowジョブを実行するためのツールしてGoogleで始まったプロジェクトが母体
- 2020年3月にv1.0リリース
Kubeflowの機能
一言でいうとMLOpsです.具体的には以下の機能の寄せ集めになっています:
- MLワークフローの支援, 実験管理
- ノートブックサーバー
- ハイパーパラメータの調整
- サービング
- ハイブリッドクラウド環境での推論モデルのデプロイプロセスの簡素化
なぜKubeflowの代替案を考えるか
他の選択肢と比較するためですが,正直に言えば,Kubeflowの今後に少し不安があったからです.
以下は2021年4月までの約4年にわたるKubeflowリポジトリのアクティビティです.
2020年に入ってからあまり元気がなさそうです.
最近ちょっとコミットが増えていましたが,今後はまたゼロに近くなりそうです.
「お前が貢献すればいいだろ!」と言われればぐうの音も出ないのですが…
元気のなさを度外視したとしても,Kubeflowには以下の長所と短所があります.
- 長所
- k8sネイティブ
- 自由にカスタマイズ可能
- オープンソース
- 短所
- 学習コストが非常に大きい
- k8sとDevOpsの専門知識が必要
- 運用コストが大きい
- 学習コストが非常に大きい
短所に起因する代償を払うことなく,個別の機能を選択的に導入するほうが楽かもしれませんので,代替案を考えました.
Kubeflow Pipelinesの代替案
要はMLワークフローの自動化, 実験管理ができればよいので,その代替案は以下のとおりです.
パイプライン管理ツール
- SageMaker Pipelines
- AWSのマネージドサービス
- AI Platform Pipelines
- GCPのマネージドサービス.裏ではKubeflow Pipelinesが動いている
- Kedro
- QuantumBlack というロンドンのデータ分析企業(マッキンゼー傘下)が開発したワークフロー構築用ツール
- Apache Airflow
- ML以外の一般のワークフロー管理に使えるJob管理ツール
- metaflow
- Netflixの開発したMLワークフロー管理用ライブラリ
- Luigi
- Digdag
実験管理ツール
パイプライン管理の機能も併せ持つものが多いです.
- MLFlow
- neptune
- Comet
- ClearML
- maggot
- Sacred
Katibの代替案
ハイパーパラメータの調整ができればよいので,その代替案は以下のとおりです.
パラメータ管理ツール
- Hydra
最適化
- Optuna
- HyperOpt
- skopt
- HpBandSter
KFServingの代替案
要はモデルのサービングができればよいので,以下が代替案になります.
- Flask
- FastAPI
- TensorFlow Serving
- TorchServe
- Triton Inference Server
- OpenVINO Model Server
- Seldon Core
- BentoML
- AI Platform Prediction
- Sagemaker
参照:Machine Learning Model Serving Overview (Seldon Core, KFServing, BentoML, MLFlow)
Kubeflow Fairing の代替案
要はnotebookで訓練したモデルをDocker image等にパッケージングして,推論サーバーをクラウド等にデプロイできればよいので,以下が代替案です.
-
SageMaker Python SDK
- SageMaker Python SDKのローカルモードを使うことで,ローカル環境でモデルの学習とホスティングが可能となります
-
Vertex AI API(旧AI Platform API)
- GCPでも同様のことが可能です
追記(20210505)
- neptuneの中の人が似たような記事を書いていました
免責事項
- この記事の内容は間違いを含む可能性があります.この記事の内容によって生じた直接的・間接的な損害に対し,一切の責任を負いかねますのでご了承ください.