機械学習モデルのデプロイ 後編

DataRobot フィールドサポートエンジニアの小島です。

(本記事は こちら の記事からの続編です)
 
前編の記事では、機械学習モデルを実装し、予測処理を利用していく上でのアーキテクチャの
一般的な考え方、またそれぞれの利点と考慮点をご紹介しました。
 
本記事では、DataRobotがこれらアーキテクチャをどう噛み砕き、製品として実現しているのかについてご紹介を進めていきたいと思います。
 

DataRobotの予測エンジン 3種

DataRobotは大きく、3種類の予測を行うための仕組み (本記事ではエンジン、と呼称します)用意しています。
 
1. 共有予測エンジン (通称  : V2エンジン)
2. 専有予測エンジン (通称  : V1エンジン)
3. DataRobot Primeエンジン (通称 Primeエンジン)
 
これらはそれぞれ異なった目的に対応できるように設計されており、利用ケースに応じて選択していく事が効果的です。それぞれご紹介していきたいと思います。
 

機械学習モデルの利用 (DataRobot の実装)

1. 共有予測エンジン (通称:V2エンジン)

V2エンジンは、DataRobotでモデリングを行う際に利用されるエンジンです。
 
DataRobot上で機械学習モデルを作成したり、そのモデルの特性を理解するための様々な処理を行うエンジンです。このエンジンは作成したモデルを利用しての予測処理も行う事ができます。
DataRobot上でモデリングを行っている操作画面 からそのまま、同じ操作感で予測処理を行う事ができるため、分析者にとって使い勝手に非常に優れています。
 
DataRobotをご利用であれば、作成したモデルの画面から “予測” -> “バッチ予測” と選択し、予測対象データをこの画面にドラッグ&ドロップで投入するだけで、作成したモデルを利用して予測処理を行うことができます。ここで使われているのがこのV2エンジンです。
 
 
しかし、V2エンジンはその素晴らしい使い勝手や汎用性の反面、性能面では後述する予測処理専用で作られているV1エンジンには及ばない部分もあります。
 
「モデリングプロセスの試行錯誤の中で手返し良くテストの予測処理を実行する」「一度限りの実行で十分でかつ、時間に余裕がある予測処理を実行する」といった用途では最も適した選択肢となります。
 

機械学習モデルの利用 (DataRobot の実装)

2.  専有予測エンジン (通称:V1エンジン)

V1エンジンは、DataRobotの予測処理のみを行うための予測専用エンジンです。
(予測処理でマシンリソースを「専有」するためこの名称となっています)
 
DataRobot上で作成した機械学習モデルをすばやくデプロイし、多くのクライアントからの予測処理に応答する事ができます。また、モデルを効率的に管理し、必要があればモデルの更新も簡単に実行する事ができるように設計されています。

DataRobotをご利用であれば、作成したモデルのメニュー画面から “予測” -> “デプロイAPI” と選択し、"モデルをデプロイ" というボタンを押下するだけで、このモデルが全自動でV1エンジンにデプロイされ、ユーザから利用できるようになります。

デプロイを行うときにはモデルの管理のため、「何のために作ったモデルなのか」「想定している利用者は誰か」といったコメントをモデル毎に自由に残すこともできるようになっています。

これによりDataRobotで作成したモデルが、多くの端末からAPI経由で利用できるようになります。また、このV1エンジンは予測処理専用に設計されており、その処理性能にも優れています。

V1エンジンはhttp REST 型のAPIで構成されており、端末側には接続ツール等を導入する必要がありません。デプロイ後、直ちに予測処理を開始する事ができます。

加えてDataRobotはユーザがすぐにコピー&ペーストで実行可能な予測処理のためのPythonのコードを出力することもできます。               

(予測デプロイのコードについては こちら の記事もあわせてご参照ください)

またDataRobotでは、こういった不特定多数のユーザがモデルを利用する際に重要となる、

・どのモデルがどれくらい利用されているのか / 利用されなくなっているのか

・予測精度が落ちてきているモデルはどれなのか

・更新すべきモデルはどれなのか

といった管理もダッシュボードで集中的に管理ができる機能が実装されています。

このV1エンジンはhttp REST 型のAPIであり、数GBといった大きさのファイルの予測については予測性能の確保、転送エラーの抑止等のため実行できない仕様となっておりますが、そういった大きなファイルでの予測実行が必要なケースのため、DataRobotはバッチスコアリングというツールをご提供しています。

このツールは、大きなファイルをV1エンジンが処理できる大きさに分割、並列で予測処理を実行、結果をマージしユーザに提供するといった一連の処理を全自動で実行する事ができます。

 

DataRobotではモデルデプロイについての専用トレーニングである、DRU Model Deploy Trainingを開催しておりますが、ご参加いただいた皆様から「とても便利なものだと理解できた」「今後は積極的に利用したい」というフィードバックを最もいただくのがこのV1エンジンです。

機械学習モデルによる予測の実装、管理を行う時に必要となる機能について、データサイエンティストの経験に基づいてよく考えられた実装となっています。DataRobotをご利用であれば是非とも利用について検討いただきたいと思います。

 

機械学習モデルの利用 (DataRobot の実装)

3.  DataRobot Primeエンジン (通称:Primeエンジン)

DataRobotはネットワーク経由で利用する製品ですが、モデルによる予測処理はネットワークに接続されていない / 接続が断続的にしかできない端末でも実行する必要がある場合があります。DataRobotではこういったご要望についても対応する事が可能です。

DataRobot Prime エンジンはDataRobotで作成されたモデルを、PythonもしくはJavaの実行形式でダウンロードし、各端末上で実行できる機能オプションです。 

 
例えば製造現場で稼働するロボットのような機械を始め、あらゆる Python、もしくはJavaが動作する環境上での予測処理を実現する事ができます。
 
DataRobot上でPrimeエンジン機能が有効となっていれば、それぞれのモデルから"予測" -> "DataRobot Prime"と選択する事で、このモデルをダウンロードする機能にアクセスする事ができます。
 
利用モデルはDataRobotで「即・実行可能」な形式にまとめられてダウンロードされます。そのため「端末側でモデルを利用して予測処理を行う仕組み」について別途用意する必要はなく、すぐに端末上での予測処理を稼働させることができます。
 
また、多数の端末でモデルを利用する、モデルの更新を頻繁に行う、といった場合においても、PythonもしくはRのSDKによりモデルのダウンロードを行うSDKが用意されているため、新たなモデルを端末にダウンロードするといった運用タスクの自動化にも対応できるよう考慮されています。
 
データをネットワーク経由で転送する必要がなく、実行基盤の性能にもよりますが、予測処理を高速に実行する事ができるのも、このPrimeエンジンの特徴です。一方で、前述のモデルマネジメント機能の利用はできませんし、モデルリフレッシュ時にはモデル置き換えのための開発工数が生じることなどから、V1/V2 APIをおすすめするケースが多いのも事実です。

 

機械学習モデルの利用 (DataRobot の実装) まとめ

DataRobotはデータサイエンティストの経験をその設計に反映している製品です。
機械学習モデルを利用した予測処理についても、実際にビジネスの現場で必要とされる機能が網羅されています。
 
DataRobotを利用する事で、モデルのデプロイにかかる労力は最小化し、そして機械学習によるROIを最大化していただければと思います。
 
最後に、DataRobotをご利用のユーザ様で、予測エンジンの使い分けに迷われた場合に参照いただきたい簡単なチャートをご紹介します。
 使い分けを考える上でキーとなる質問を黒字で記載しています。
 
 

DataRobot University のご案内

DataRobot では、DataRobot University Model Deploy という定期開催コースで、これら予測エンジンの特性、使い分けについて、Pythonで実際にDataRobot SDKを利用するコーディングを頂きながらご体感いただくトレーニングコースを開催しております。
(次回開催予定は こちら からご確認ください)
 
DataRobotを利用しての機械学習のデプロイについて理解を深めたいとお考えであれば、ぜひともご受講を検討ください。 
 
トレーニング会場でお会いできることを楽しみにしております! 
 
-- -- --
すでに機械学習モデルのデプロイ、活用に成功している多くの成功企業がご登壇!
DataRobot最大のカンファレンス、DataRobot AI Experience Tokyo 2018 を 11月27日に開催します!
お申込みは下記バナーリンクから、是非お早めにお願いします。