ヒエラルキー
MLOpsが何なのか曖昧になりがちな気がするので、
今回はMLOpsが何なのか、また、実践するための必要なレイヤーを共有します。
すべてのMLシステムは、基礎ができてようやく機能するようになります。
MLOpsのニーズのヒエラルキーは下記となります。
- DevOps
- Data Automation
- Platform Automation
- MLOps
参考資料: Practical MLOps
1. DevOps
最も基礎となるレイヤーとなります。
DevOpsとは、組織が行う、高品質なソフトウェアをリリースするための速度を最大限に上げるためのテクニカルまたはマネージメントのプラクティスの総称です。
DevOpsを取り入れるメリットは、スピード、信頼性やセキュリティなどがあります。
ベストプラクティスとして、下記のような例があります。
例①:Continuous Integration(CI)
ソフトウェアを継続的にテストし、その結果を元に継続的に改善していく取り組み
例②:Continuous Delivery(CD)
コードを継続的かつ自動的にデプロイする取り組み。
例③:Microservices
マイクロサービスは、機能別に区別されている、ほぼ依存関係を持たないサービスの事です。一番分かりやすい例だと、PythonのFlaskです。特に機械学習モデルの推論用のエンドポイントを設定すれば、かなりマクロサービスと相性が良いです。
2. Data Automation
次はデータの流れの自動化です。
水が無いと人が生活できないように、データの流れを作らないとMLOpsはできません。
多くの組織は、データ関係の作業(データ集約・データエンジニアリング)を一元化されたデータレーク(例:Amazon S3)上で行っています。理由は、自動化をするのが下記の特徴によって簡単だからです。
- ほぼ無限にスケールができる ⇒ とりあえず全部入れられる
- 高い耐久性
- 高い可用性
- データを処理するときに、データ等の移動が不要
3. Platform Automation
データの流れが自動化されたら、次はプラットフォームの自動化が必要になります。
MLOpsを行う上で、必要になる主な工程は、
- データを取得
- データを綺麗にする
- モデルの学習
- 評価
- デプロイ
※他にもまだありますが
MLOpsをするためには、いかに上記のような工程を実行するパイプラインを迅速に構築・改善できるかが大切になります。
このようなパイプラインを作るためには、様々なやり方がありますが(Kubeflow, Google AI Platform, Azure, Amazon)、今回はAWSのS3をデータレークとして使用して、AWS Sagemakerでプラットフォームを構築する例を共有します。
上記のようなインフラを自動化せずに構築しようとすぐ複雑になってくるので、極力シンプルな形で自動化できるようにすることが大切です。
4. MLOps
上記のレイヤーがすべて揃うことでようやくMLOpsという取り組みが可能になります。
MLOpsとは、モデル運用時に常に変化するデータに対応できるように、モデルの更新速度を最大限に上げるためのテクニカルまたはマネージメントのプラクティスの総称です。
MLOpsを取り入れることで、再現可能なモデルのパッケージ化、モデル評価やデプロイなどが行えるメリットがあります。
ベストプラクティスとして、下記のような例があります。
- モデルの開発及び再学習は、再利用可能なパイプラインを用いて行う
- MLモデルのContinual Delivery
- MLOPsパイプラインをモニタリングする
- モデルパフォーマンスを評価する
ヒエラルキーのレイヤーが揃っていれば、上記のベストプラクティスをすぐに行える事がなんとなく想像できるかと思います。
Writed by F.K(20代・入社3年目)