概要
AI(Machine Learing:ML)のモデル構築を、3つの観点を考慮したうえで、MLOpsに取り込みを実施することについて説明します。その観点で、Databricks(≒Spark+MLflow+Hyperopt)での検討例を提示しますので、AWS SageMaker、Azure ML等をご利用中の方は自分なりのプラクティスを検討するための参考にしてください。
まず、MLのモデルを、組織として大規模に実施するためには、以下の3つの観点が必要となります。MLOpsを実施することで3が注目されがちですが、1と2も考慮する必要があります。
番号 | 項目 | 実施内容 |
---|---|---|
1 | ML処理の拡張性 | モデル構築を実施する処理の並列化の実施 |
2 | ML管理の拡張性 | ML関連情報の集約化によるML管理オペレーションの低コストで実施するためのMLライフサイクル支援ツールの利用 |
3 | ML運用の拡張性 | MLOpsによる運用オペレーションの削減を行うDevOpsツールの利用 |
そもそも、MLOpsとはどういったものであるかについては、Googles様が素晴らしいドキュメントを公開しております。下記の図がそのドキュメントの一部であり、MLOpsの全体像を端的に表しております。
引用元:MLOps: 機械学習における継続的デリバリーと自動化のパイプライン | Google Cloud
上記図から、私は、MLOpsとは、MLのモデルの構築にDevOpsの要素を取り入れて、MLモデル作成の自動化パイプラインをベースにしたシステム開発手法として解釈しました。そのMLOpsを組織として実施し続けるためには、①自動化パイプラインの実行を大規模に並列処理で実施(=ML処理の拡張性の担保)して、②作成したモデルの情報をてき適切に一元的な管理(=ML管理の拡張性の担保)ができ、③それらのプロセスを低運用コストで実現(=ML運用の拡張性の担保)が必要となります。
Databricksで実現する3つの拡張性
Databricksでは、3つの拡張性を下記の方法により担保することが可能です。また、自動化パイプラインをDatabricksの単一サービスで実施できるため、サービス間の連携を考慮する労力が最小限で済みます。
- ML処理の拡張性
- シングルマシン処理の並列化
- Databricks AutML
- Scikit-learn + Hyperopt
- グループごとのデータに対してシングルマシン処理の並列化
- Hyperopt + PandasUDF
- マルチマシンでの並列化処理
- SparkML
- シングルマシン処理の並列化
- ML管理の拡張性
- Feature Store機能
- MLflow TrackingによるMLモデル情報の収集
- MLflow Model Registryによるモデル情報の集約
- ライブラリのバージョン管理
- ML運用の拡張性
- Databricks ReposによるGit連携機能
- Databricks Jobsによるパイプラインの実施
ML処理の拡張性の補足
Databricks社の資料にて、3つの分散処理が紹介されています。従来のScikit-learnを利用する方法によるMLモデルの開発は、3つの分散処理には該当せず、シングルマシン処理です。
シングルマシン処理の並列化が下記図です。
引用元:Tuning ML Models: Scaling, Workflows, and Architecture (slideshare.net)
グループごとのデータに対してシングルマシン処理の並列化が下記図です。
引用元:Tuning ML Models: Scaling, Workflows, and Architecture (slideshare.net)
マルチマシンでの並列化処理が下記図です。
引用元:Tuning ML Models: Scaling, Workflows, and Architecture (slideshare.net)
関連情報
- ML処理の拡張性関連
- シングルノード処理の並列化
- グループごとのデータに対してシングルマシン処理の並列化
- マルチノードでの並列化処理
- ML管理の拡張性関連
- ML運用の拡張性関連
<次ステップ>データ分析基盤の検討
データ分析基盤の検討方法については下記の記事に整理してます。
最強のデータ分析基盤を目指して~汎用的なデータ分析基盤の選定方法の提案~ - Qiita