web-dev-qa-db-ja.com

実稼働環境でRモデルを展開するためのオプション

本番環境に予測モデルを展開するためのオプションが多すぎるとは思えませんが、これはビッグデータの爆発を考えると驚くべきことです。

オープンソースのPMMLを使用して、モデルをXML仕様としてエクスポートできることを理解しています。これは、データベース内のスコアリング/予測に使用できます。ただし、この作業を行うには、ZementisのPMMLプラグインを使用する必要があるようです。これは、ソリューションが真にオープンソースではないことを意味します。スコアリングのためにPMMLをSQLにマップする簡単でオープンな方法はありますか?

もう1つのオプションは、XMLの代わりにJSONを使用してモデル予測を出力することです。しかし、この場合、Rモデルはどこにあるのでしょうか? Rモデルがデータと同じサーバー上にあり、Rスクリプトを使用してその着信データに対して実行できない限り、常にSQLにマップする必要があると想定していますか?

他のオプションはありますか?

36
Cybernetic

答えは実稼働環境によって異なります。

「ビッグデータ」がHadoopにある場合は、この比較的新しいオープンソースPMML「スコアリングエンジン」と呼ばれる Pattern を試すことができます。

それ以外の場合は、カスタムモデル固有のコードを書く以外に選択肢はありませんが、サーバーでRを実行する必要があります。 saveを使用して、フィットしたモデルを.RDataファイルに保存してからloadを保存し、サーバーで対応するpredictを実行します。 (これは遅くなるはずですが、いつでももっと多くのハードウェアを試すことができます。)

その方法は、プラットフォームによって異なります。通常、Rで記述された「カスタム」関数を追加する方法があります。用語はUDF(ユーザー定義関数)です。 Hadoopでは、そのような関数をPigに追加できます(例 https://github.com/cd-wood/pigaddons )。または RHadoop を使用して単純なmap-reduceを記述できますモデルをロードしてRでpredictを呼び出すコード。データがHiveにある場合は、 Hive TRANSFORM を使用して外部Rスクリプトを呼び出すことができます。

Rで記述された関数をさまざまなSQLデータベースに追加するベンダー固有の方法もあります。再びドキュメントでUDFを探します。たとえば、PostgreSQLには PL/R があります。

15
Alex Vorobiev

以下は、本番環境でRモデルをデプロイするためにこれまでに見つけた代替手段のリストです。これらの製品を使用するワークフローは互いに大きく異なりますが、トレーニングされたRモデルをサービスとして公開するプロセスを促進するために、何らかの形で方向付けられていることに注意してください。

20
leo9r

配管工( https://github.com/trestletech/plumber )を使用して、Rスクリプト用のRESTful APIを作成できます。

それについてのブログ記事を書きました( http://www.knowru.com/blog/how-create-restful-api-for-machine-learning-credit-model-in-r/ )例としてクレジットモデルの展開を使用します。

一般に、使用したパッケージがPMMLへの変換をサポートしていない可能性があるため、PMMLはお勧めしません。

7
Ken Park

一般的な方法は、Rで新しい/更新されたデータセットをスコアリングし、結果(ID、スコア、確率、その他の必要なフィールド)のみを運用環境/データウェアハウスに移動することです。

これには制限(頻繁な更新、ITへの依存、データセットサイズ/コンピューティングパワーの制限)があり、多くの(上司)が求めている最先端の答えではないかもしれません。しかし、多くのユースケースでは、これはうまく機能します(そしてコストにやさしい!)。

1
Mark

質問が最初に尋ねられてから数年が経ちました。

ラピッドプロトタイピングの場合、現在最も簡単なアプローチはJupyter Kernel Gatewayを使用することです。これにより、Jupyterノートブックの任意のセルにRESTエンドポイントを追加できます。これは、使用しているカーネルに応じてRとPythonの両方で機能します。

つまり、RまたはPythonコードをWebインターフェースを介して簡単に呼び出すことができます。Dockerと組み合わせて使用​​すると、アプリケーションをデプロイおよびスケーリングするマイクロサービスアプローチに役立ちます。

Jupyter Kernel Gatewayを使用してJupyter Notebookをすばやくセットアップするための最初から最後までの記事を次に示します。

機械学習サービスの構築、実際のアプリケーションのプロトタイプ作成、およびユーザーへの作業の展開を学ぶ

ソリューションの移動先生産の場合、2019年の主要なアプローチは Kubeflow を使用することです。 KubeflowはGoogleによって作成および管理されており、「機械学習(ML)モデルのスケーリングと本番環境への展開を可能な限りシンプルにします」。

彼らのウェブサイトから:

構成を調整して、使用するplatformsおよびservicesを選択しますMLワークフローの各段階 :データの準備、モデルのトレーニング、予測の提供、およびサービス管理。ワークロードの展開を選択できますローカルまたはクラウド環境

1
Cybernetic

ここヤットからのエリーゼ。

前述の@Ramnathや@ leo9rのように、このソフトウェアを使用すると、R(またはPythonについて)モデルをREST APIエンドポイントを介して直接実稼働に配置できます。

リアルタイムまたはバッチ、およびプロセスに関連するすべてのモデルテストとバージョニング+システム管理を処理します。

この ケーススタディ VIA SMSと共著しました。Rモデルをどのように導入するかを考えている場合に役立ちます。プロダクション(データサイエンスチームはPHP)に再コーディングしていました)。

乾杯!

1
Elise Breda