MLOpsとエコシステム
MLOpsは、幅広い意味で使われますが、簡単に言えば、
データサイエンティストや開発者が協力して、機械学習やAIの開発、運用を円滑に行うことです。
MLOpsは、machine learningとoperationsを合わせた言葉です。
DevOps(development + operations)という言葉で、開発と運用を合わせて考えることがありますが、MLOpsは、DevOpsにさらにmachine learningの要素が加わると考えることができると思います。
近年、機械学習やAIの様々な領域への導入が進んでいます。
MLOpsのワークフローには色々なものがあります。
例えば
- データ収集
- データの前処理
- データ分析
- 機械学習のモデル学習
- モデル評価
- モデルデプロイ
- モデルモニタリング
- 更新(改善)
という一連の流れを繰り返す、というものが考えられます。
このワークフローで使用されるツールやプラットフォームには、様々なものが出てきており、多様なエコシステムを築き上げています。
今日は、
Google、Amazon、Microsoft
の各社が提案しているプラットフォーム
TensorFlow、PyTorch
の各ライブラリが提供しているツール
という面から、MLOpsへの活用が考えられる環境を見ていきます。
プラットフォーム
IT業界の巨大企業は、2021年時点で、多くがMLOps向けのプラットフォームを提供しています。
その中でも、
- Amazon
- Microsoft
が知られています。
Googleが提供しているMLOpsには、
Google Cloud AI Platform Pipelines
があります。
Google Cloud Platform (GCP)は、Googleが提供しているクラウドコンピューティングサービスです。
これまで、GoogleはGCPを通して、ソフトウェア開発向けのツール、データベース管理ツールなど幅広いツールを提供しています。
その延長で、MLOpsのプラットフォームとして、2020年に、Google Cloud AI Platform Pipelinesが公開されました。
Google Cloud AI Platform Pipelinesでは、
GCPの各種サービスとKubeflowなどのツールを組み合わせて使うことで、
MLOpsのデータ分析、機械学習のモデル学習、モデルデプロイ、モデルモニタリングといった幅広いワークフローを管理することができるとされています。
Kubeflowは、オープンソースの機械学習プラットフォームです。同様の機能を提供するものには、AirflowやMLflowなどがあります。
2021年1月では、Cloud AI Platform Pipelinesはまだベータ版ですが、GCPやKubeflowの活用シーンは増えているため、今後広く使われるようになるかもしれません。
Amazon
Amazonが提供しているMLOpsには、
があります。
GoogleのGCPに対応するものが、Amazonでは、Amazon Web Services (AWS)です。
AWSのサービスの一つとして、SageMakerが提供されています。
SageMakerには、Model MonitorやPipelinesなどの機能があり、MLOpsの幅広いワークフローをカバーできるとされています。
AWSには、SageMaker以外にも、MLOpsに活用できるサービスが色々あります。
などです。
Amazon Comprehenは、自然言語処理に関する機械学習のサービスです。AWS MLOps フレームワークを活用すると、学習済みモデルのデプロイ以降の手順をサポートできます。
Microsoft
Microsoftが提供しているMLOpsが、
Microsoft AzureのMachine learning operations (MLOps)
です。
GoogleのGCP、AmazonのAWSに相当するものが、MicrosoftのAzureです。
AzureのMLOpsでは、
などを組み合わせて使うことで、MLOpsのワークフローを扱います。
ライブラリ
ここまで、MLOps環境をややビジネス寄りで見てきましたが、プログラミングコードを書くという出発点から、MLOpsのエコシステムを理解することもできます。
機械学習やAIの研究開発では、JuliaやRといったプログラミング言語が使われることはあるものの、主流はPythonです。Pythonの機械学習ライブラリ、ディープラーニングライブラリとして広く使用されているものが、
- TensorFlow
- PyTorch
です。
TensorFlow
TensorFlowは、Googleが公開したオープンソースの機械学習用ライブラリです。主にPythonやJavaScriptなどでディープラーニングをはじめとした機械学習のモデルを作成、学習させる時に活用されています。
MLOpsの文脈で見た時には、TensorFlow周りには
などがあります。
TFXは、TensorFlowを機械学習の実運用まで拡張させる試みです。
先に紹介した、Kubeflowと組み合わせてMLOpsの環境を構築する提案がされています。
TensorFlow Hubは、学習済みモデルのレポジトリ(格納場所)として使用できます。他の研究者や開発者が学習したモデルを簡単に活用できるようになります。
TensorFlow Servingを用いることで、TensorFlowで作った学習済みモデルを簡単にデプロイすることができるとされています。
Kerasは、ディープラーニング用のライブラリです。
もともとTensorFlowとKerasは兄弟みたいなものだったのですが、TensorFlow2.0からはより、Kerasとの親和性が高くなり、ディープラーニングのモデル構築の際によりコードを書きやすくなったとされています。
このように、TensorFlow周りでは、MLOps環境のデータ収集からデプロイ、モニタリングまで広い工程をカバーすることが試みられています。
PyTorch
TensorFlowの最大の競合相手は
PyTorchです。
PyTorchは、Facebookが公開したオープンソースの機械学習用ライブラリです。
- TensorFlow Hubに対するPyTorch Hub
- TensorFlow Servingに対するTorchServe
- Kerasに対するPyTorch Lightning
という同様の機能のものがPyTorchにもあります。
またPyTorchの環境では、よりディープラーニングの実装を容易にするfastaiというライブラリも公開されています。
このように、TensorFlowとPyTorchは、競い合いながらそれぞれエコシステムを作り上げています。
状況に合わせてベストプラクティスを探す
ここまで紹介してきたように、MLOps向けツールやプラットフォームは、たくさんあります。
それぞれが、特徴を持っています。
2021年時点での、
- Web検索エンジン = Google
- EC市場(中国) = Alibaba
- EC市場(中国以外の多くの国) = Amazon
- 個人向けパソコンのOS = Microsoft
のように圧倒的なシェアを誇るMLOpsプラットフォームはないと思われます、
MLOpsの環境は、今はまだ黎明期でエコシステムが成熟していないとも取れます。
Web検索エンジンの市場に関してGoogleは、後発組であったと言われています。
今は、まだ知られていないMLOpsプラットフォームやツール、技術が、今後世界中で使われるようになるかも知れません。
主要なプラットフォーム3つ、ライブラリ2つの組み合わせも色々と選択できます。
群雄割拠の2021年時点では、
- 使用シーンに合わせて使いやすいツールやプラットフォームを選ぶ
- 新興のツールや技術で、面白そうなもの、活用できそうなものは使っていく
というスタンスが重要かもしれません。
コメント