MLOpsとはなにか

2016年頃になって、急速に機械学習を取り込んだシステムの開発や現実の問題への適用が一般的な企業にも広まってきた。それ以前からも一部の先進的な企業では取り組まれていたが、2018年になって、特に「MLOps」(DevOpsから派生した造語で、機械学習システムの運用周りを指す言葉)という考え方が重要視されるようになってきた。

以前は、機械学習というと新しいアルゴリズムに関する学術論文への投稿などの研究開発が主で、機械学習を組み込んだシステムを開発・運用するということは少なかった。しかし、2017年頃から、多くの企業で実問題に機械学習を取り込んできたため、こうしたMLOpsのような考え方が増えてきている。

本稿では、MLOpsという新しく出てきた概念と、なぜそれが重要なのか、MLOps共通の課題、それらに対してどのようなアプローチが取られているのかについて述べていく。

なぜ「MLOps」が重要か?

2014年にGoogleのチームが国際会議NeurIPSのワークショップSE4ML(Software Engineering for Machine Learning)に出した有名な論文"Machine Learning: The High Interest Credit Card of Technical Debt"及び、その翌年にNeurIPSで発表された"Hidden Technical Debt in Machine Learning Systems"という論文がある。これらは、機械学習を含んだシステムの「技術的負債」についていわゆるアンチパターンに言及した論文である。

この論文の中でよく引用される有名な図がある。下の図は、機械学習の予測アルゴリズムなどを記述するいわゆるモデリングと呼ばれる処理に関するコードを書くのは本当に一部でしかないということを表している。これは、一般的に「機械学習の作業は前処理が大半を占め、モデルを学習する部分は少ない」と言われ続けてきたこととも一致する。

"Hidden Technical Debt in Machine Learning Systems"から引用

"Hidden Technical Debt in Machine Learning Systems"から引用

国内ではじめてのMLOpsのミートアップを開催した主催者の下田は、MLOpsに期待されていることとして以下の4点をあげている。

  1. そもそもシステムやサービスのどこにどのように機械学習を利用しているのかの話
  2. 機械学習のコードのテスト、モデルのデプロイ、モデルとデータの監視、自動化、などのいわゆるシステム運用の機械学習版っぽい話
  3. 機械学習のコード、あるいはシステム全体の高速化(GPUなどのハードウェア的な話や分散処理を含む)の話
  4. 機械学習システムの開発/運用体制の話

本稿では、1のユースケースと3のGPUやハードウェアでの高速化についてはGoogleのTPUやNIVIDAのGPU周辺のライブラリ・ツール開発など多くの話題が提供されているため詳しく触れない。2, 4の機械学習システムの運用を中心とした、モデリングと呼ばれるアルゴリズム開発の部分以外についてにフォーカスし、それらの課題について述べていく。

国内外でのMLOpsの高まり

国内では、筆者らが主催するMachine Learning Casual Talksを始め、MLOps勉強会、日本ソフトウェア科学会の機械学習工学研究会、海外でもOpMLといったカンファレンスで機械学習システムの開発運用に関する議論がされている。特にMLOps勉強会では、世界に先駆けて「MLOps」という単語を使い、実世界でのシステムの知見について議論がはじまった。