機械学習システムは技術的負債が課題に
今回のテーマは機械学習や深層学習インフラストラクチャの運用(MLOps)のための機械学習パイプラインとなる。まずは基本的なところから確認していこう。
厳密にはMLOpsの定義は各社ごとに異なるものの、ここではWikipediaの表記「MLOpsとは、ディープラーニングなどの機械学習のライフサイクルを管理するための、データサイエンティスト、エンジニア、保守運用担当者のコラボレーションおよびコミュニケーションに関する実践手法」を採用していく。泉氏は「あくまでもコンセプト。DevOpsと組み合わせて、機械学習のプロセスを回していくという発想」と説明する。
なお似たような用語に「AIOps」もある。泉氏は「これはAIをITの運用プロセスに生かしていこうというものなので、本質的には機械学習そのものの運用とはあまり関係がない」とくぎを刺す。
もともと機械学習自体は数十年前に開発されていた。近年急速に実用化が進んでいる背景には、ツール群が発展し、利用しやすい環境が整ってきたためと言える。かつては最小限のライブラリしかなかったところ、今ではPyTorch、Scikit-learn、TensorFlowなど充実している。周辺にはHadoopなどのデータストア、Apache SparkやApache Flinkなどビッグデータ分析フレームワーク、JenkinsなどDevOps周辺を支えるツール群、DockerやKubernetesのようなコンテナやオーケストレーション技術もある。
さらに各種のグローバル展開するクラウドインフラが発展し、そこで拡張性や、ほぼ無制限のようなデータ容量といったメリットを享受できるようになっている。そうした背景のなか「Alibaba Cloudも担い手の1つになっています」と泉氏は言う。Alibaba Cloudでは機械学習で使える各種サービスを提供している(詳しくは後述)。
ただしMLOpsで避けて通れないのが機械学習の技術的負債だ。泉氏は機械学習に関する国際会議(NIPS:Neural Information Processing Systems)で提出された論文「Hidden Technical Debt in Machine Learning Systems」を挙げた。
実は機械学習開発そのものの負荷はそう大きくない。しかし機械学習を実践していくにあたり、設定、データの収集、データの検証、マシンリソース管理、プロセス管理、監視など周辺には多くの負荷がある。機械学習では学習を継続していくことも重要になるため、MLOpsのようなコンセプトを実践していかないと負担だらけになってしまい、結果的には機械学習のプロセスが停滞し、陳腐化してしまうということが起こりかねない。
そのため機械学習においては、機械学習以外の開発コストや負荷、役割分担、環境間の再現性の確保、処理リソースの確保、開発からデプロイまでのリードタイムなどをクリアしていくなどワークフローや体制を整えていく必要がある。
機械学習を実践していくなら、機械学習は継続的な取り組みが必要だと認識しておくべきだろう。アルゴリズムを開発し、モデルを構築したら終わりではない。データをフィードしてトレーニングを重ね、予測と推論ができるサービスとしてデプロイできるような形にする。そして品質や性能を検証して、本番環境にリリースする。ここでも終わりではない。モデルを陳腐化させないためには、フィードバックループを繰り返していく必要があるのだ。