ポータブル予測¶
DataRobotでは、予測 > ポータブル予測タブでポータブル予測の方法を提供しており、DataRobotアプリケーションの外で予測ジョブを実行することができます。 ポータブル予測の方法は以下に詳しく説明します。
方法 | 説明 |
---|---|
ポータブル予測サーバー | 自己完結型のDockerイメージとして配布されるDataRobotモデルパッケージ(.mlpkg ファイル)用のリモートDataRobot実行環境を設定します。 |
スコアリングコード | Export a Scoring Code JAR file from DataRobot and copy the Java, Python, or CLI snippet used to make predictions. スコアリングコードには移植性があるので、任意のコンピューティング環境で実行できます。 この方法は、REST APIのパフォーマンスを完全にサポートできないアプリケーションやネットワークアクセスが十分でない低レイテンシーアプリケーションの場合に便利です。 |
ポータブル予測サーバー¶
本機能の提供について
ポータブル予測サーバーは、DatRobot MLOpsでのみ利用可能なプレミアム機能です。 この機能を有効にする方法については、DataRobotの担当者または管理者にお問い合わせください。
ポータブル予測サーバー(PPS)は、自己完結型のDockerイメージとして配布されるDataRobotモデルパッケージ(.mlpkg
ファイル)用のDataRobot実行環境です。 ポータブル予測サーバーを設定したら、単一または複数モデルのポータブルリアルタイム予測 やポータブルバッチ予測 ジョブの実行を開始できます。
CPUに関する注意事項
DataRobotでは、Intel CPUを使用して、ポータブル予測サーバーを実行することを強く推奨します。 Intel以外のCPUを使用すると、特に、TensorflowまたはKerasで構築されたディープラーニングのようなモデルで、予測の不一致となる場合があります。 これには、ARMアーキテクチャプロセッサー(AArch32やAArch64など)が含まれます。
一般的な設定手順は次のとおりです。
- モデルパッケージのダウンロード
- PPS Dockerイメージをダウンロードします。
- PPS Dockerへのイメージのロード
- DataRobotが提供するDockerスニペットをコピーして、Dockerコンテナでポータブル予測サーバーを実行します。
重要
デプロイによってモデルのポータブル予測サーバーを設定したい場合は、まず外部の予測環境を追加して、そのモデルを外部環境へデプロイする必要があります。
モデルパッケージのダウンロード¶
外部予測環境で実行されているデプロイ済みDataRobotモデルのPPSモデルパッケージをダウンロードして、DataRobot外部のポータブル予測サーバーで予測ジョブを実行できます。 デプロイからモデルパッケージをダウンロードすると、ポータブル予測サーバーはモデルのパフォーマンスを監視 して予測統計を追跡します。ただし、デプロイでモデルパッケージのダウンロードがサポートされていることを確認する必要があります。 デプロイには、DataRobotの構築環境と外部予測環境が必要です。
デプロイタブ(デプロイインベントリ)で、DataRobotの構築環境と外部の予測環境の両方を持つデプロイを開き、予測 > ポータブル予測タブに移動します。
要素 | 説明 | |
---|---|---|
1 | ポータブル予測方法 / ポータブル予測サーバー | REST APIベースの予測サーバーをDockerイメージとして設定するのに便利です。 |
2 | ポータブル予測サーバーの使用方法 | 開発者ツールタブにリンクすると、ポータブル予測サーバーのDockerイメージを取得できます。 |
3 | モデルパッケージ(.mlpkg)をダウンロード | デプロイされたモデルのモデルパッケージをダウンロードします。 |
4 | Dockerスニペット | モデルパッケージをダウンロードしたら、Dockerスニペットを使用して、モニタリングが有効になっているモデルのポータブル予測サーバーを起動します。 起動する前に、APIキー、ローカルファイル名、パス、モニタリングを指定する必要があります。 |
5 | クリップボードにコピー | Dockerスニペットをクリップボードにコピーして、コマンドラインに貼り付けられるようにします。 |
予測 > ポータブル予測タブで、モデルパッケージをダウンロード(.mlpkg)をクリックします。 ダウンロードが完了すると、ダウンロードがダウンロードバーに表示されます。 モデルパッケージをダウンロードしたら、クリップボードにコピーをクリックし、後で使用するためにコードスニペットを保存します。 ダウンロードしたモデルパッケージでポータブル予測サーバーを起動するには、このコードが必要です。
時系列モデルパッケージのダウンロード¶
ポータブル予測で時系列モデルをエクスポートする場合は、モデルパッケージ生成時のモデルの時系列予測間隔(1~100)の計算を有効にすることができます。 このインターフェイスは時系列以外のモデルのインターフェイスと同じですが、予測間隔の計算設定が追加されています。
モデルパッケージ生成のパフォーマンスに関する注意事項
予測区間を計算オプションはデフォルトで無効になっています。これは、予測間隔の計算と組み込みにより、モデルパッケージの生成に要する時間が大幅に増加する可能性があるためです。
モデルパッケージの予測間隔を有効にし、モデルをポータブル予測サーバーにデプロイした後、.yaml
PPS設定ファイルまたはPPS環境変数を使用して、予測間隔のパーセンタイルと指数傾向を設定できます。
備考
以下の環境変数は、YAML設定が指定されていない場合にのみ使用されます。
YAML変数 / 環境変数 | 説明 | タイプ | デフォルト |
---|---|---|---|
prediction_intervals_percentile / MLOPS_PREDICTION_INTERVALS_PERCENTILE |
予測間隔範囲の定義に使用するパーセンタイルを設定します。 | 整数 | 80 |
ポータブル予測サーバーの設定¶
ダウンロードしたモデルパッケージをポータブル予測サーバーにデプロイするには、まずPPS Dockerイメージをダウンロードし、そのイメージをDockerに読み込む必要があります。
PPS Dockerイメージの取得¶
開発者ツールタブに移動し、ポータブル予測サーバーのDockerイメージをダウンロードします。 次の表で説明するように、DataRobotの環境とバージョンに応じて最新のイメージにアクセスするためのオプションが異なる場合があります。
デプロイのタイプ | ソフトウェアバージョン | アクセス方法 |
---|---|---|
セルフマネージドAIプラットフォーム | v6.3以前 | 詳細については、DataRobotの担当者に連絡してください。 イメージはリクエストに応じて提供されます。 |
セルフマネージドAIプラットフォーム | v7.0以降 | 開発者ツールからイメージをダウンロード します(以下の説明に従ってインストールしてください)。 イメージを取得できない場合は、DataRobotの担当者に連絡してください。 |
マネージドAIプラットフォーム | 2021年1月以降 | 開発者ツールからイメージをダウンロード します(以下の説明に従ってインストールしてください)。 |
Dockerへのイメージのロード¶
注意
現在、DataRobotはイメージサイズの縮小に取り組んでいますが、圧縮されたDockerイメージは6 GBを超える場合があります(Dockerが読み込まれたイメージのレイヤーは14 GBを超える場合があります)。 PPSイメージをダウンロードおよびインポートする場合は、これらのサイズを考慮してください。
続行する前に、開発者ツールからイメージをダウンロードします。 Dockerで読み込める、gzip
されたtarアーカイブです。
ダウンロードしてファイルのチェックサムを確認したら、docker load
を使用してイメージを読み込みます。 Dockerはgzip
されたtarアーカイブからのイメージ読み込みをネイティブにサポートしているので、ダウンロードしたファイルを解凍する必要はありません。
以下のコマンドをコピーし、<version>
を置き換えてコマンドを実行すると、PPSイメージがDockerに読み込まれます。
docker load < datarobot-portable-prediction-api-<version>.tar.gz
ファイルパスに関する注意事項
PPSファイルがカレントディレクトリにない場合は、tarファイルへのローカルな絶対ファイルパスを指定する必要があります(例:/path/to/datarobot-portable-prediction-api-<version>.tar.gz
)。
PPSファイルにdocker load
コマンドを実行すると、次のような出力が表示されるはずです。
docker load < datarobot-portable-prediction-api-9.0.0-r4582.tar.gz
33204bfe17ee: Loading layer [==================================================>] 214.1MB/214.1MB
62c077c42637: Loading layer [==================================================>] 3.584kB/3.584kB
54475c7b6aee: Loading layer [==================================================>] 30.21kB/30.21kB
0f91625c248c: Loading layer [==================================================>] 3.072kB/3.072kB
21c5127d921b: Loading layer [==================================================>] 27.05MB/27.05MB
91feb2d07e73: Loading layer [==================================================>] 421.4kB/421.4kB
12ca493d22d9: Loading layer [==================================================>] 41.61MB/41.61MB
ffb6e915efe7: Loading layer [==================================================>] 26.55MB/26.55MB
83e2c4ee6761: Loading layer [==================================================>] 5.632kB/5.632kB
109bf21d51e0: Loading layer [==================================================>] 3.093MB/3.093MB
d5ebeca35cd2: Loading layer [==================================================>] 646.6MB/646.6MB
f72ea73370ce: Loading layer [==================================================>] 1.108GB/1.108GB
4ecb5fe1d7c7: Loading layer [==================================================>] 1.844GB/1.844GB
d5d87d53ea21: Loading layer [==================================================>] 71.79MB/71.79MB
34e5df35e3cf: Loading layer [==================================================>] 187.3MB/187.3MB
38ccf3dd09eb: Loading layer [==================================================>] 995.5MB/995.5MB
fc5583d56a81: Loading layer [==================================================>] 3.584kB/3.584kB
c51face886fc: Loading layer [==================================================>] 402MB/402MB
c6017c1b6604: Loading layer [==================================================>] 1.465GB/1.465GB
7a879d3cd431: Loading layer [==================================================>] 166.6MB/166.6MB
8c2f17f7a166: Loading layer [==================================================>] 188.7MB/188.7MB
059189864c15: Loading layer [==================================================>] 115.9MB/115.9MB
991f5ac99c29: Loading layer [==================================================>] 3.072kB/3.072kB
f6bbaa29a1c6: Loading layer [==================================================>] 2.56kB/2.56kB
4a0a241b3aab: Loading layer [==================================================>] 415.7kB/415.7kB
3d509cf1aa18: Loading layer [==================================================>] 5.632kB/5.632kB
a611f162b44f: Loading layer [==================================================>] 1.701MB/1.701MB
0135aa7d76a0: Loading layer [==================================================>] 6.766MB/6.766MB
fe5890c6ddfc: Loading layer [==================================================>] 4.096kB/4.096kB
d2f4df5f0344: Loading layer [==================================================>] 5.875GB/5.875GB
1a1a6aa8556e: Loading layer [==================================================>] 10.24kB/10.24kB
77fcb6e243d1: Loading layer [==================================================>] 12.97MB/12.97MB
7749d3ff03bb: Loading layer [==================================================>] 4.096kB/4.096kB
29de05e7fdb3: Loading layer [==================================================>] 3.072kB/3.072kB
2579aba98176: Loading layer [==================================================>] 4.698MB/4.698MB
5f3d150f5680: Loading layer [==================================================>] 4.699MB/4.699MB
1f63989f2175: Loading layer [==================================================>] 3.798GB/3.798GB
3e722f5814f1: Loading layer [==================================================>] 182.3kB/182.3kB
b248981a0c7e: Loading layer [==================================================>] 3.072kB/3.072kB
b104fa769b35: Loading layer [==================================================>] 4.096kB/4.096kB
Loaded image: datarobot/datarobot-portable-prediction-api:9.0.0-r4582
docker load
コマンドがLoaded image
メッセージとともに正常に完了したら、イメージがdocker images
コマンドで読み込まれていることを確認する必要があります。
Dockerにあるイメージのリストを表示するには、以下のコマンドをコピーして実行します。
docker images
この例では、前の手順で読み込んだ datarobot/datarobot-portable-prediction-api
イメージを確認できます。
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
datarobot/datarobot-portable-prediction-api 9.0.0-r4582 df38ea008767 29 hours ago 17GB
ディスクスペースの節約
(オプション)圧縮されたイメージアーカイブdatarobot-portable-prediction-api-<version>.tar.gz
は、正常に読み込めたら削除することで、ディスクスペースを節約できます(オプション)。
コードスニペットでのPPSの起動¶
モデルパッケージをダウンロードしてDocker PPSイメージを設定したら、関連するdocker run
コードスニペットを使用して、ダウンロードしたモデルパッケージでポータブル予測サーバーを起動することができます。
デプロイされたモデルからのこちらのコードスニペット例では、以下にハイライトされたオプションを設定する必要があります。
1 2 3 4 5 6 7 8 9 10 |
|
-
-v <local path to model package>/:/opt/ml/model/ \
: ダウンロードしたモデルパッケージの場所へのローカルな絶対ファイルパスを指定します。-v
(または--volume
)オプションのバインドでボリュームをマウントし、(<local path to model package>
の)ローカルモデルパッケージディレクトリの内容をDockerコンテナの/opt/ml/model
ボリュームに追加します。 -
-e PREDICTION_API_MODEL_REPOSITORY_PATH="/opt/ml/model/<model package file name>" \
:/opt/ml/model/
ボリュームにマウントされたモデルパッケージのファイル名を指定します。 これにより、PPSがモデルパッケージを見つけられる場所を示す環境変数PREDICTION_API_MODEL_REPOSITORY_PATH
が設定されます。 -
-e MONITORING_AGENT_DATAROBOT_APP_TOKEN="<your api token>" \
: 監視目的で、DataRobotの開発者ツールからAPIトークンを提供します。 これにより、環境変数MONITORING_AGENT_DATAROBOT_APP_TOKEN
が設定され、PPSがAPIキーを見つけられるようになります。 -
datarobot-portable-prediction-api
:この行を、使用しているPPSイメージのイメージ名とバージョンで置き換えます。 例:datarobot/datarobot-portable-prediction-api:<version>
。
dockerタグを使用してイメージに名前とタグを付ける
あるいは、docker tag
を使用して新しいイメージにlatest
というタグを付けてdatarobot-portable-prediction-api
に名前を変更すれば、最後の行にdatarobot-portable-prediction-api
を残すことができます。
この例では、Dockerはイメージの名前を変更し、9.0.0-r4582
タグをlatest
タグで置き換えています。
docker tag datarobot/datarobot-portable-prediction-api:9.0.0-r4582 datarobot-portable-prediction-api:latest
新しいタグと名前を確認するには、もう一度docker images
コマンドを使用します。
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
datarobot/datarobot-portable-prediction-api 9.0.0-r4582 df38ea008767 29 hours ago 17GB
datarobot-portable-prediction-api latest df38ea008767 29 hours ago 17GB
セットアップを完了したら、Dockerスニペットを使用して、単一または複数モデルのポータブルリアルタイム予測の実行や、ポータブルバッチ予測の実行ができます。 PPSを使用した予測ジョブの追加の例も参照してください。 PPSは、メインのDataRobotインストール環境から切り離して実行することができます。 開始すると、イメージは:8080
ポートを介してHTTP APIを提供します。
FIPS対応モデルパッケージのPPSを実行する
ENABLE_FIPS_140_2_MODE: true
(クラスターレベルのconfig.yaml
ファイルで)DataRobotクラスターを設定すると、そのクラスターは、ENABLE_FIPS_140_2_MODE: true
のPPSを起動する必要がある.mlpkg
ファイルを構築します。 このため、FIPS対応モデルと標準モデルを、同じPPSインスタンスでホストできません。
FIPS対応モデルをサポートしてPPSを実行するには、 docker run
に、次の引数を含めることができます。
-e ENABLE_FIPS_140_2_MODE="true"
PPSコンテナ起動のフルコマンドは、以下の例のようになります。
docker run
-td
-p 8080:8080
-e PYTHON3_SERVICES="true"
-e ENABLE_FIPS_140_2_MODE="true"
-v <local path to model package>/:/opt/ml/model
--name portable_predictions_server
--rm datarobot/datarobot-portable-prediction-api:<version>
スコアリングコード¶
スコアリングコードを使用すると、DataRobotで生成済みモデルをJARファイルとしてエクスポートして、プラットフォームの外部で使用できます。 モデルのデプロイからモデルのスコアリングコードをエクスポートします。ダウンロードには、コンパイル済みのJARファイル(すべての依存関係を含む)とソースコードのJARファイルが含まれます。 エクスポートした後、モデルのソースコードを表示することで、DataRobotでの予測の生成手順について理解を深めることができます。
スコアリングコードJARには、予測モデルのJavaスコアリングコードが含まれています。 予測計算ロジックはDataRobot APIと同じです(コード生成メカニズムによって、生成プロセスの一部として各モデルの精度がテストされます)。 生成コードは、DataRobotアプリケーションに依存せず、どの環境にも簡単にデプロイできます。
DataRobotはスコアリングコードがあるモデルをどのように判断しますか?
スコアリングコード機能を有効にすると、DataRobotでは、各ブループリントの前処理のステップのJava代替が生成され、その結果が検定セット上で元の結果と比較されます。 結果の差分が0.00001よりも大きい場合、DataRobotでは、スコアリングコードをダウンロードするオプションは提供されません。 この方法により、元のモデルと同じ予測がスコアリングコードJARモデルで生成されることが保証されます。
スコアリングコードインテグレーション
詳細については、スコアリングコードに関する注意事項を参照してください。
スコアリングコードをダウンロードする¶
DataRobotプラットフォームの外部で使用するために、モデルのスコアリングコードは、コンパイル済みのJARファイル(すべての依存関係を含む)としてダウンロードできます。 このトピックでは、デプロイからスコアリングコードをダウンロードする方法について説明します。
コンソールのデプロイタブで、スコアリングコード対応のデプロイ(DataRobotの構築環境)を開き、予測 > ポータブル予測タブに移動して、以下に説明するフィールドに入力します。
要素 | 説明 | |
---|---|---|
1 | スコアリングコード | DataRobotモデルを含むJavaパッケージを提供。 ポータブル予測法の下で、スコアリングコードを選択します。 |
2 | 監視エージェントを含める | スコアリングコードでMLOpsエージェントをダウンロード。 |
3 | 予測の説明を含める/予測間隔を含める(時系列) | モデルタイプに応じて、以下のいずれかの予測オプションを有効にします:
|
4 | シークレットを表示 | For CLI code snippets, displays any secrets hidden by ***** in the code snippet. コードスニペットでシークレットを公開すると、APIキーやdatarobot-keyを取得する便利な方法を提供できます。ただし、これらのシークレットは、セキュリティ上の理由でデフォルトでは非表示になっているため、慎重に処理してください。 |
5 | 使用例 | Provides a code example that calls the Scoring Code using the selected method: Python (Python API), Java (Java API), or CLI (command line interface). 場所を選択すると、下に表示されているスニペット例が対応する言語に更新されます。 |
6 | クリップボードにコピー | スコアリングコードの例をクリップボードにコピーして、IDEやコマンドラインに貼り付けられるようにします。 |
7 | 準備とダウンロード | Depending on the options selected above, select either of the following download methods:
|
ヒント
DataRobot予測ライブラリを利用すると、DataRobotがサポートするさまざまな予測方法を用いた予測をPython APIで行うことができます。 ライブラリは予測を行うための共通のインターフェイスを提供するので、ベースとなる実装を簡単に交換できます。 ライブラリには、スコアリングコードJARファイルが必要であることに注意してください。
Once the settings are configured, click Prepare and download.
注意
2020年3月以前の料金プランが適用されている場合、スコアリングコードをダウンロードすると、永続的なデプロイとなり、削除できなくなります。 注意メッセージが表示され、この条件を受け入れるように求められます。 Use the toggle to indicate your understanding, then click Prepare and download.
スコアリングコードのダウンロードが完了したら、タブで提供されるスニペットを使用して、スコアリングコードを呼び出します。 たとえば、MLOpsエージェントtarballドキュメントをリファレンスします。これは、開発者ツールページからダウンロードできます。 モニタリングスニペットを使用してMLOpsエージェントと連携することも可能です。