Apache Airflowでエンドユーザーのための機械学習パイプラインを構築する Part0
本連載では、Apache Airflowを用いて機械学習の専門家ではないユーザー(=エンドユーザー)が、機械学習を活用するためのパイプラインの構築を目指します。Part0では、このチャレンジを行う背景について書きたいと思います(長くなってしまったので・・・)。
取り組む課題
「エンドユーザーのための機械学習パイプライン」とは、以下のようなパイプラインを想定しています。
パイプラインの入り口はエンドユーザーが用意した「データ」、出口は「機械学習モデル」、そして機械学習モデルの「評価指標」「判断根拠」の計3つとします。「評価指標」「判断根拠」を出力するのは、機械学習モデルができるだけではユーザーはそれをどう扱えばいいかわからないためです。計算処理とそれを表示する可視化の処理は異なるため、以下のように分ける予定です。
- Airflowを使用して、入口=>出口までの計算プロセスを構築する
- 各プロセスにおける出力結果を、統合的に可視化する
課題の背景
本課題に取り組むのは、実は初めてではありません。昔取り組んだ課題に対し、近年の技術的な進展を取り込もうということが背景にあります。技術的な進展とは、主に以下2点です。
- 機械学習モデルを自動構築する、AutoMLの発達
- データ処理を行うインフラ、ソフトウェアの発達
AutoMLの発達については、以下の資料が詳しいです(うちのエースの力作です)。
近年では、専門家でなくとも機械学習が利用できるようになっています。様々な企業が提供している機械学習APIはもちろんですが、AutoMLの発達によりお仕着せフォーマットのAPIではなく、自らが定義するタスク(データ)にあわせてモデルを作ることも可能になってきています。
今「機械学習インフラ」というと、データサイエンティストや機械学習エンジニアのための分析環境というのが一般的と思います。しかし、今後はそこから自動化できる部分は自動化され、専門家でないエンドユーザーも使うインフラとなるのではないかと考えています。
「データ処理を行うインフラ、ソフトウェアの発達」については、本連載のタイトルにあるようにApache Airflowがその代表格となります。
機械学習には当然モデルだけでなくデータも必要です。そのデータの流れを管理できるソフトウェアの登場により、データの加工処理も含めたパイプラインの構築が行いやすくなってきました。
発達した上記2つの技術を用い、「データ」を用意したら予測を行うための「機械学習モデル」、そして改善サイクルを回すための「評価指標」と「判断根拠」が得られるパイプラインを構築する、というのが本連載のゴールになります。
ここからは昔語りになりますが、「本課題に取り組むのは、実は初めてではありません」と冒頭で述べた通り、過去に同じコンセプトで実装を行ったことがありました。karuraというプロジェクトで、以下がその紹介記事になります。
以下はkintoneという業務アプリケーション構築のプラットフォームと連携した例です。業務システムであるkintoneから学習データを取り、ボタンをぽちぽちとすると評価指標/判断根拠についてフィードバックが得られるというデモになっています。
ソースコードはGitHubで公開しています。Jupyterでも試せるので、よろしければ使ってみてください。
ただ、karuraはパイプラインの処理を直列で行なっています。具体的には特徴量の作成、モデルの選択、さらにチューニングまで直列の1プロセスで実行しています。途中でどこかが落ちたら最初からやり直しなので、これはなんともきつい話です。実際、適用検証をした際は大量のデータをさばくのに長時間待ったり、挙句落ちるということもあったりして難しい局面もありました。
というわけで、次回から本格的にスタートです!