ポータブル予測サーバー¶
ポータブル予測サーバー(PPS)は、自己完結型のDockerイメージとして配布されるDataRobotモデルパッケージ(.mlpkg
ファイル)用のDataRobot実行環境です。
本機能の提供について
ポータブル予測サーバーは、DataRobot MLOps専用機能です。この機能を有効にする方法については、DataRobotの担当者にお問い合わせください。
PPSは、メインのインストール環境から切り離して実行できます。開始すると、イメージは:8080
ポートを介してHTTP APIを提供します。
以下に概説する構成に併せて、「ポータブル予測サーバーと互換性のあるDataRobotの機能」をリファレンスしてください。
Dockerイメージの取得¶
次の表で説明するように、DataRobotの環境とバージョンに応じて最新のイメージにアクセスするためのオプションが異なる場合があります。
デプロイ名タイプ | ソフトウェアバージョン | アクセス方法 |
---|---|---|
オンプレミスまたはプライベート/ハイブリッドクラウド | v6.3以前 | 詳細については、DataRobotの担当者に連絡してください。ご要望に応じてイメージを提供いたします。 |
オンプレミスまたはプライベート/ハイブリッドクラウド | v7.0以降 | 開発者ツールからイメージをダウンロードします(以下の説明に従ってインストールしてください)。イメージを取得できない場合は、DataRobotの担当者に連絡してください。 |
マネージドAIクラウド | 2021年1月以降 | 開発者ツールからイメージをダウンロードします(以下の説明に従ってインストールしてください)。 |
Dockerへのイメージのロード¶
注意
現在、DataRobotはイメージサイズの縮小に取り組んでいますが、圧縮されたDockerイメージは5 GBを超える場合があります(Dockerに読み込まれたイメージのレイヤーは12 GBを超える場合があります)。PPSイメージをダウンロードおよびインポートする場合は、これらのサイズを考慮してください。
続行する前に、開発者ツールからイメージをダウンロードします。これはDockerで読み込むことのできるtar-gzipped
ファイルです。
ダウンロードしてファイルのチェックサムを確認したら、docker load
を使用してイメージを読み込みます。Dockerはtar-gzipped
イメージの読み込みをネイティブにサポートしているので、ダウンロードしたファイルを解凍する必要はありません。
$ docker load < datarobot-portable-prediction-api-7.0.0-r1736.tar.gz
b990432f3b4b: Loading layer [==================================================>] 343kB/343kB
789a8e70b147: Loading layer [==================================================>] 5.12kB/5.12kB
7db3df02f5f7: Loading layer [==================================================>] 1.775MB/1.775MB
4742b98a91bf: Loading layer [==================================================>] 4.096kB/4.096kB
112ec58ef2cf: Loading layer [==================================================>] 4.165GB/4.165GB
5f9c034e5766: Loading layer [==================================================>] 9.728kB/9.728kB
2f4cf6c33976: Loading layer [==================================================>] 71.17kB/71.17kB
01812df8f7a8: Loading layer [==================================================>] 3.072kB/3.072kB
87bfa8db37b4: Loading layer [==================================================>] 5.978MB/5.978MB
993ea9726377: Loading layer [==================================================>] 1.958GB/1.958GB
e2d9aaaf8de6: Loading layer [==================================================>] 70.66kB/70.66kB
005786d38507: Loading layer [==================================================>] 4.096kB/4.096kB
85b6c0dfcb4e: Loading layer [==================================================>] 4.096kB/4.096kB
f0524ee4003d: Loading layer [==================================================>] 3.584kB/3.584kB
92f123a1e860: Loading layer [==================================================>] 3.072kB/3.072kB
Loaded image: datarobot/datarobot-portable-prediction-api:7.0.0-r1736
圧縮されたイメージアーカイブは、正常に読み込めたらdatarobot-portable-prediction-api-<version>.tar.gz
削除することで、ディスクスペースを節約できます(オプション)。
実行モード¶
サーバーでサポートされているモデルモードには、単一モデル(SM)と複数モデル(MM)の2つがあります。 /opt/ml/model
ディレクトリ内のDockerコンテナに単一のモデルパッケージのみがマウントされている場合は、SMモードを使用します。その他のケースでは必ず、MMモードを使用します。互換性のある予測にもかかわらず、SMモードはディスク上でモデルパッケージを識別する必要のない簡略化されたHTTP APIを作成し、起動時にモデルをメモリーにプリロードします。
Dockerコンテナのファイルシステムディレクトリは、次のレイアウトと一致する必要があります。
SMモードの場合:
/opt/ml/model/
`-- model_5fae9a023ba73530157ebdae.mlpkg
MMモードの場合:
/opt/ml/model/
|-- fraud
| `-- model_5fae9a023ba73530157ebdae.mlpkg
`-- revenue
|-- config.yml
`-- revenue-estimate.mlpkg
HTTP API(単一モデル)¶
単一モデルモードで実行している場合、Dockerイメージは3つのHTTPエンドポイントを公開します。
POST /predictions
は、所定のデータセットをスコアリングします。GET /info
は、ロードされたモデルに関する情報を返します。GET /ping
は、テクノロジースタックが起動していることを確認します。
備考
予測ルートは、スコアリングデータセットとしてカンマ区切りのCSVおよびJSONレコードのみをサポートします。最大ペイロードサイズは50 MBです。
$ curl -X POST http://<ip>:8080/predictions \
-H "Content-Type: text/csv" \
--data-binary @path/to/scoring.csv
{
"data": [
{
"predictionValues": [
{"value": 0.250833758, "label": "yes"},
{"value": 0.749166242, "label": "no"},
],
"predictionThreshold": 0.5,
"prediction": 0.0,
"rowId": 0
}
]
}
CSVが望ましい出力である場合は、Accept: text/csv
HTTPヘッダーを使用してリクエストします。
$ curl -X POST http://<ip>:8080/predictions \\
-H "Accept: text/csv" \\
-H "Content-Type: text/csv" \\
--data-binary @path/to/scoring.csv
<target>_yes_PREDICTION,<target>_no_PREDICTION,<target>_PREDICTION,THRESHOLD,POSITIVE_CLASS
0.250833758,0.749166242,0,0.5,yes
HTTP API(複数モデル)¶
複数モデルモードでは、Dockerイメージは以下のエンドポイントを公開します。
POST /deployments/:id/predictions
は、所定のデータセットをスコアリングします。GET /deployments/:id/info
は、ロードされたモデルに関する情報を返します。POST /deployments/:id
は、モデルパッケージをコンテナーにアップロードします。DELETE /deployments/:id
は、コンテナからモデルパッケージを削除します。GET /deployments
は、コンテナ内のモデルパッケージのリストを返します。GET /ping
は、テクノロジースタックが起動していることを確認します。
(上記の/deployments
ルートに含まれる):id
はディスク上のモデルパッケージのユニーク数の識別子を指します。IDはモデルパッケージを含むディレクトリ名です。したがって、/opt/ml/model
レイアウトの場合は次のようになります。
/opt/ml/model/
|-- fraud
| `-- model_5fae9a023ba73530157ebdae.mlpkg
`-- revenue
|-- config.yml
`-- revenue-estimate.mlpkg
fraud
およびrevenue
をルートの/deployments
セットの:id
代わりに使用することを検討してください。
備考
予測ルートは、スコアリングデータセットとしてカンマ区切りのCSVおよびJSONレコードのみをサポートします。最大ペイロードサイズは50 MBです。
$ curl -X POST http://<ip>:8080/deployments/revenue/predictions \
-H "Content-Type: text/csv" \
--data-binary @path/to/scoring.csv
{
"data": [
{
"predictionValues": [
{"value": 0.250833758, "label": "yes"},
{"value": 0.749166242, "label": "no"},
],
"predictionThreshold": 0.5,
"prediction": 0.0,
"rowId": 0
}
]
}
モニタリング¶
備考
続行する前に、PPSコンテナの監視を設定してください。詳細については、環境変数および例セクションを参照してください。MLOpsエージェントを使用するには、エージェントスプーラーも設定する必要があります。
データドリフトや精度などの予測統計を監視できます。その場合は、DataRobotのデプロイインベントリに外部デプロイを作成する必要があります。
モデルパッケージを特定のデプロイに接続するには、予測統計をホストするデプロイのデプロイIDを指定します。
単一モデル(SM)モードの場合、デプロイIDはMLOPS_DEPLOYMENT_ID
環特徴量で提供する必要があります。複数モデル(MM)モードでは、特別なconfig.yml
を準備して目的のdeployment_id
値を持つモデルパッケージの横にドロップする必要があります。
deployment_id: 5fc92906ad764dde6c3264fa
精度を追跡する場合は、デプロイ用に設定してから、実行中のモデルに追加の設定を提供します。
SMモードの場合、次の環境変数を設定します。
MLOPS_ASSOCIATION_ID_COLUMN=transaction_country
(必須)MLOPS_ASSOCIATION_ID_ALLOW_MISSING_VALUES=False
(オプション、デフォルト= false)
MMモードの場合、config.yml
で次のプロパティを設定します。
association_id_settings:
column_name: transaction_country
allow_missing_values: false
HTTPSサポート¶
本機能の提供について
以前にダウンロードしたPPSイメージを実行している場合、これらのパラメーターは、PPSイメージが手動で更新するまで使用できません。
- マネージドAIクラウド:2021年8月から
- オンプレミスまたはプライベート/ハイブリッドクラウド:v7.2から
デフォルトでは、ポータブル予測サーバー(PPS)は:8080
ポート(クリアテキストHTTP over TCP)上のセキュアでないリスナーを介して予測を提供します。今回、:8443
ポートのセキュアなリスナー(HTTP over TLS/SSL、または単にHTTPS)を介して予測結果を提供できるようになりました。
セキュアなリスナーを有効にした場合、セキュアでないリスナーは使用できなくなります。
備考
PPSは同時に両方のポートで利用できるように設定できます。:8080
のHTTPまたは:8443
のHTTPSです。
設定は、以下の通り環境変数を使用して実行できます。
-
PREDICTION_API_TLS_ENABLED
:ポート:8443
でHTTPSリスナーを有効にし、ポート:8080
でHTTPSリスナーを無効にするマスターフラグ。- デフォルト:false(HTTPS無効)
-
有効な値(大文字と小文字が区別されません):
パラメーター値 解釈 true, t, yes, y, 1 true false, f, no, n, 0 false
備考
TLSを有効にするには、フラグの値を
true
として解釈する必要があります。この設定を有効にしていない場合、その他のすべてのPREDICTION_API_TLS_*
環境変数(渡された場合)は無視されます。 -
PREDICTION_API_TLS_CERTIFICATE
:TLS/SSL証明書のPEM形式のコンテンツ。- 必須:
PREDICTION_API_TLS_ENABLED
が"true"の場合のみ必須です。 - 以下も参照してください。NGINX SSL証明書ドキュメント
- 必須:
-
PREDICTION_API_TLS_CERTIFICATE_KEY
:TLS/SSL証明書キーの秘密証明書キーのPEM形式のコンテンツ。- 必須:
PREDICTION_API_TLS_ENABLED
がtrue
の場合のみ必須です。 - 以下も参照してください。NGINX SSL証明書キードキュメント
- 必須:
-
PREDICTION_API_TLS_CERTIFICATE_KEY_PASSWORD
:PREDICTION_API_TLS_CERTIFICATE_KEY
に渡された秘密証明書キーのパスフレーズ。- 必須:パスフレーズで証明書キーを作成した場合のみ必須です。
-
PREDICTION_API_TLS_PROTOCOLS
: 使用する暗号化プロトコルの実装。- デフォルト:
TLSv1.2 TLSv1.3
- 有効な値:
SSLv2
|SSLv3
|TLSv1
|TLSv1.1
|TLSv1.2
|TLSv1.3
、またはこれらの値のスペースで区切られた組み合わせ。
注意
2021年8月時点で、
TLSv1.2
およびTLSv1.3
を除くすべての実装は使用非推奨および/またはセキュアではないとみなされます。これらの改善を使用することがDataRobotは強く推奨されます。新しいインストールは、最新のセキュアなTLSバージョンであるため、TLSv1.3
のみ使用することを検討できます。 - デフォルト:
-
PREDICTION_API_TLS_CIPHERS
:使用する暗号スイートのリスト。- デフォルト:必須TLSv1.3暗号および推奨TLSv1.2暗号
- 必須:必須ではありません。
- 有効な値:暗号スイートについてOpenSSL構文を参照してください。
注意
TLSサポートは高度な機能です。暗号スイートリストは、最新の推奨および現在のベストプラクティスに準じて慎重に選択されています。DataRobotはそれをオーバーライドすることは推奨しません。
環境変数¶
特徴量 | 説明 | デフォルト |
---|---|---|
PREDICTION_API_WORKERS |
起動するワーカーの数を設定します。このオプションは、予測APIが同時に処理できるHTTPリクエストの数を制御します。通常、これはコンテナで使用可能なCPUコアの数に設定します。 | 1 |
PREDICTION_API_MODEL_REPOSITORY_PATH |
DataRobotでモデルパッケージを検索するディレクトリへのパスを設定します。PREDICTION_API_MODEL_REPOSITORY_PATH がルートに単一モデルパッケージを含むディレクトリを指している場合、PPSでは単一モード実行モードが想定されます。それ以外の場合、複数モデルモードが想定されています。 |
/opt/ml/model/ |
PREDICTION_API_MONITORING_ENABLED |
DataRobotはデータ監視をオフロードするかどうかを設定します。trueの場合、予測APIは監視エージェントに監視データをオフロードします。 | False |
PREDICTION_API_MONITORING_SETTINGS |
予測APIから監視エージェントに監視データをオフロードする方法を制御します。セミコロンで区切られたキー=値ペアでスプーラー構成設定のリストを指定します。 ファイルシステムスプーラーの例: PREDICTION_API_MONITORING_SETTINGS="spooler_type=filesystem;directory=/tmp;max_files=50;file_max_size=102400000" SQSスプーラーの例: PORTABLE_PREDICTION_API_MONITORING_SETTINGS="spooler_type=sqs;sqs_queue_url=<SQS_URL>" PPSの単一モデルモードの場合、 MLOPS_DEPLOYMENT_ID およびMLOPS_MODEL_ID 変数は必須です。複数モデルモードには必須ではありません。 |
None |
MONITORING_AGENT |
監視エージェントを予測APIと一緒に実行するかどうかを設定します。MLOpsエージェントを使用するには、エージェントスプーラーを設定する必要があります。 | False |
MONITORING_AGENT_DATAROBOT_APP_URL |
URIをDataRobotインストールに設定します(例:https://app.datarobot.com/)。 | None |
MONITORING_AGENT_DATAROBOT_APP_TOKEN |
DataRobot APIで使用するユーザートークンを設定します。 | None |
PREDICTION_API_TLS_ENABLED |
TLSリスナーマスターフラグを設定します。TLSリスナーが動作するには、アクティブ化する必要があります。 | false |
PREDICTION_API_TLS_CERTIFICATE |
証明書のインラインコンテンツをPEM形式で追加します。 | None |
PREDICTION_API_TLS_CERTIFICATE_KEY |
証明書キーのインラインコンテンツをPEM形式で追加します。 | None |
PREDICTION_API_TLS_CERTIFICATE_KEY_PASSWORD |
証明書キーファイルにプレーンテキストパスフレーズを追加します。 | None |
PREDICTION_API_TLS_PROTOCOLS |
TLS/SSLプロトコルをオーバーライドします。 | TLSv1.2 TLSv1.3 |
PREDICTION_API_TLS_CIPHERS |
デフォルト暗号スイートをオーバーライドします。 | 必須TLSv1.3、推奨TLSv1.2 |
PPSパラメーター¶
次のセクションでは、PPSで行われる予測リクエストのさまざまなクエリーパラメーターオプションの概要を説明します。
パススルー列パラメーター¶
次のクエリーパラメーターを使用して、パススルー列をパラメーター化できます。
パラメーター名 | タイプ | 注意 |
---|---|---|
passthroughColumns |
文字列 | 予測応答でスコアリングデータベースから返される列のリスト。複数の列をリクエストする場合、このパラメーターは1つのリクエストで複数回使用できます。例:?passthroughColumns=saleId&passthroughColumns=saleDate 。 |
passthroughColumnsSet |
文字列 | passthroughColumnsSet=all が渡された場合、スコアリングデータセットのすべての列が予測応答で返されます。 |
以下の点に備考してください。
passthroughColumns
およびpassthroughColumnsSet
パラメーターの両方を同じリクエストで渡すことはできません。passthroughColumns
クエリパラメーターで渡すことのできる列名の数に制限はありませんが、HTTPリクエストラインの制限があります(現在の制限は8192バイト)。
予測の説明パラメーター¶
次のクエリーパラメーターを使用して、予測の説明の予測リクエストをパラメーター化することができます。
パラメーター名 | タイプ | 注意 |
---|---|---|
maxExplanations | 整数 | 予測ごとに生成されるコードの最大数。デフォルトは3です。旧称はmaxCodes です。 |
thresholdLow | 浮動小数 | 予測の説明の下限しきい値。予測の説明を計算するには、予測は、この値以下(またはthresholdHighの値以上)である必要があります。この値はnullに設定できます。 |
thresholdHigh | 浮動小数 | 予測の説明の上限しきい値。予測の説明を計算するには、予測は、この値以上(またはthresholdLowの値以下)である必要があります。この値はnullに設定できます。 |
excludeAdjustedPredictions | 文字列 | モデル構築中にエクスポージャーが使用された場合、エクスポージャー調整された予測を予測応答に含めるか予測応答から除外します。デフォルト値はtrue です(エクスポージャー調整済み予測を除外します)。 |
時系列パラメーター¶
次のクエリーパラメーターを使用して、時系列予測リクエストをパラメーター化することができます。
パラメーター名 | タイプ | 注意 |
---|---|---|
予測ポイント | 文字列 | ISO 8601形式のDateTime文字列(タイムゾーンなし)。予測ポイントを表します。predictionsStartDate およびpredictionsEndDate が渡される場合、このパラメーターは使用できません。 |
relaxKnownInAdvanceFeaturesCheck | 文字列 | true またはfalse 。true の場合、予測時に予測ウィンドウで事前に既知の特徴量の欠損値を使用できます。初期設定はfalseです。事前に既知の値がない場合、予測品質に負の影響が生じることがあります。 |
predictionsStartDate | 文字列 | データセット内での一括予測の生成開始時間。このパラメーターは、predictionsEndDate と一緒に定義する必要があります。forecastPoint およびpredictionsStartDate が渡される場合、predictionsEndDate パラメーターは使用できません。 |
predictionsEndDate | 文字列 | データセット内での一括予測の生成停止時間。このパラメーターは、predictionsStartDate と一緒に定義する必要があります。forecastPoint およびpredictionsStartDate が渡される場合、predictionsEndDate パラメーターは使用できません。 |
外部設定¶
Dockイメージを使用して、上の表に記載された設定オプションを読み取りして設定することもできます(/opt/ml/config
から)。ファイルには<key>=<value>
ペアが含まれている必要があります。各キー名は対応する環特徴量です。
例¶
-
2つのワーカーで実行:
$ docker run \ -v /path/to/mlpkgdir:/opt/ml/model \ -e PREDICTION_API_WORKERS=2 \ datarobot/datarobot-portable-prediction-api:<version>
-
外部監視を構成して実行します。
$ docker run \ -v /path/to/mlpkgdir:/opt/ml/model \ -e PREDICTION_API_MONITORING_ENABLED='True' \ -e PREDICTION_API_MONITORING_SETTINGS='<settings>' \ datarobot/datarobot-portable-prediction-api:<version>
-
内部監視を構成して実行:
$ docker run \ -v /path/to/mlpkgdir:/opt/ml/model \ -e PREDICTION_API_MONITORING_ENABLED='True' \ -e PREDICTION_API_MONITORING_SETTINGS='<settings>' \ -e MONITORING_AGENT='True' \ -e MONITORING_AGENT_DATAROBOT_APP_URL='https://app.datarobot.com/' \ -e MONITORING_AGENT_DATAROBOT_APP_TOKEN='<token>' \ datarobot/datarobot-portable-prediction-api:<version>
-
Python 3で実行:
モデルパッケージがリリース7.1より前のDataRobotクラスターで構築された場合は、この設定を省略してください。モデルパッケージが新しくインストールされたDataRobot 7.1クラスター上に構築されている場合は、これをTrueに設定して、ポータブル予測サーバーとモデルパッケージ間のPythonバージョンの互換性を有効にします。 5. デフォルトプロトコルと暗号を使用してHTTPSサポートで実行します。$ docker run \ -v /path/to/mlpkgdir:/opt/ml/model \ -e PYTHON3_SERVICES='True' \ datarobot/datarobot-portable-prediction-api:<version>
$ docker run \ -v /path/to/mlpkgdir:/opt/ml/model \ -p 8443:8443 \\ -e PREDICTION_API_TLS_ENABLED='true' \\ -e PREDICTION_API_TLS_CERTIFICATE="$(cat /path/to/cert.pem)" \\ -e PREDICTION_API_TLS_CERTIFICATE_KEY="$(cat /path/to/key.pem)" \\ datarobot/datarobot-portable-prediction-api:<version>