Skip to content

アプリケーション内で をクリックすると、お使いのDataRobotバージョンに関する全プラットフォームドキュメントにアクセスできます。

ポータブル予測サーバー

ポータブル予測サーバー(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/csvHTTPヘッダーを使用してリクエストします。

$ 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_CERTIFICATE_KEY:TLS/SSL証明書キーの秘密証明書キーのPEM形式のコンテンツ。

  • PREDICTION_API_TLS_CERTIFICATE_KEY_PASSWORDPREDICTION_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:使用する暗号スイートのリスト。

    注意

    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またはfalsetrueの場合、予測時に予測ウィンドウで事前に既知の特徴量の欠損値を使用できます。初期設定はfalseです。事前に既知の値がない場合、予測品質に負の影響が生じることがあります。
predictionsStartDate 文字列 データセット内での一括予測の生成開始時間。このパラメーターは、predictionsEndDateと一緒に定義する必要があります。forecastPointおよびpredictionsStartDateが渡される場合、predictionsEndDateパラメーターは使用できません。
predictionsEndDate 文字列 データセット内での一括予測の生成停止時間。このパラメーターは、predictionsStartDateと一緒に定義する必要があります。forecastPointおよびpredictionsStartDateが渡される場合、predictionsEndDateパラメーターは使用できません。

外部設定

Dockイメージを使用して、上の表に記載された設定オプションを読み取りして設定することもできます(/opt/ml/configから)。ファイルには<key>=<value>ペアが含まれている必要があります。各キー名は対応する環特徴量です。

  1. 2つのワーカーで実行:

    $ docker run \
        -v /path/to/mlpkgdir:/opt/ml/model \
        -e PREDICTION_API_WORKERS=2 \
        datarobot/datarobot-portable-prediction-api:<version>
    
  2. 外部監視を構成して実行します。

    $ 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>
    
  3. 内部監視を構成して実行:

    $ 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>
    
  4. Python 3で実行:

    $ docker run \
        -v /path/to/mlpkgdir:/opt/ml/model \
        -e PYTHON3_SERVICES='True' \
        datarobot/datarobot-portable-prediction-api:<version>
    
    モデルパッケージがリリース7.1より前のDataRobotクラスターで構築された場合は、この設定を省略してください。モデルパッケージが新しくインストールされたDataRobot 7.1クラスター上に構築されている場合は、これをTrueに設定して、ポータブル予測サーバーとモデルパッケージ間のPythonバージョンの互換性を有効にします。 5. デフォルトプロトコルと暗号を使用してHTTPSサポートで実行します。

    $ 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>
    

更新しました February 22, 2022
Back to top