MLOpsとは
MLOpsとはDevOpsの概念に機械学習のライフサイクルの管理を上乗せしたものであり、CI/CDに加えてCT(Continuous Training)も考慮します。
また、DevOpsがエンジニアと保守運用担当者のコラボレーションやコミュニケーションを対象にしているのに対し、MLOpsではそこにデータサイエンティストが加わります。
2012年からの機械学習のビックブームにより機械学習が「研究」から「実用」へと急激に広まっていきました。しかし、機械学習の実運用では、開発環境の再現、ライブラリのバージョン管理、時間の経過によるモデルの劣化など多くの課題があります。そこでそれらの課題に対するアプローチとして提案されたのがMLOpsです。
下の図Googleの研究者によって描かれた機械学習のエコシステムの図です。
見ての通り、本番運用する上で機械学習そのものはごく一部に過ぎません。
データ管理やモデルのバージョン、性能の管理など実際にはそのほか多くの要素が複雑に作用しあっています。
MLOpsではこれらの要素をML Piplineとして定義し、ツールを用いてパイプラインの管理を行います。
ML Piplineとは
ML Piplineは基本的には以下の7つのステップに分けることができます。
- Data ingestion
- Data validation
- Data processing
- Model training
- Model validation and tuning
- Model deploy
- Monitoring performance and capturing new data
ML Piplineではワークフローをパイプラインのコンポーネントとして定義することで以下のメリットを享受することができます。
- 既存のモデルのメンテナンスから解放されて、新しいモデルの開発に専念できる
- バグを未然に防ぎ、また、デバッグしやすくなる
- プロダクションで用いているモデルの性能の監視をトラッキングして性能が悪くなった場合には自動で通知できる
- コンポーネントをDockerやBeamを用いて標準化することにより開発環境の移行が簡単に行える
- エンジニアからデータサイエンティストまでチームとしての生産性が向上する
MLOpsツール
Kubeflow
Kubeflowは機械学習パイプラインをK8s環境で実行するためのツールです。
元々はGoogle社内で使用されていたものを社外に向けて一般化してオープンにしたもの。
サンプルやチュートリアルも豊富です。
公式サンプル
チュートリアル
TensorFlow Extend (TFX)
TFXはML Piplineをコンポーネントとして実装し、それらを管理、実行するためのライブラリー郡です。
公式では、
TensorFlow Extended(TFX)は、本番環境用 ML パイプラインをデプロイするためのエンドツーエンドのプラットフォームです
と説明されています。
TFXでは以下のように、それぞれベースとなるパイプラインコンポーネントがAPIとして提供されていてそれらを使って(またはカスタマイズして)、ML Piplineを実装することができます。
Tensorflowと名前についていますが、TensorFlowに限らず他のモデルにも対応しています。(親和性は劣りそうです)
TFXで定義したパイプラインはBeamをベースとしており、KubeflowやAirflow、Dataflowなど環境に依存せずに使うことができます。
また、TFX自体、TF servingやTF Data validator, TF Model analysisなど多くのライブラリーからなっており、そのほかにもTF RecordやgRPCなどについての知識も必要となります。