Skip to content

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

ポータブル予測サーバーの実行モード

サーバーでサポートされているモデルモードには、単一モデル(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レコードのみをサポートします。 最大ペイロードサイズは、50MBです。

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は、技術スタックが起動していることを確認します。

:id(上記の/deploymentsルートに含まれる)はディスク上のモデルパッケージの一意の識別子を指します。 IDはモデルパッケージを含むディレクトリ名です。 したがって、次の/opt/ml/modelレイアウトの場合は次のようになります。

/opt/ml/model/
├── fraud
|   └── model_5fae9a023ba73530157ebdae.mlpkg
└── revenue
    ├── config.yml
    └── revenue-estimate.mlpkg  

fraudおよびrevenue:idのルートの/deploymentsセットの代わりに使用することを検討してください。

備考

予測ルートは、スコアリングデータセットとしてカンマ区切りのCSVおよびJSONレコードのみをサポートします。 最大ペイロードサイズは、50MBです。

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コンテナの監視を設定してください。 詳細については、環境変数のセクションを参照してください。 監視エージェントを使用するには、エージェントスプーラーも設定する必要があります。

データドリフト精度などの予測統計を監視できます。その場合は、デプロイインベントリに外部デプロイを作成する必要があります。

モデルパッケージを特定のデプロイに接続するには、予測統計をホストするデプロイのデプロイ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月から
  • セルフマネージドAIプラットフォーム: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, yes, y, 1 true
      false, 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_PRELOAD_MODELS_ENABLED すべてのワーカーは、開始時にすべてのマウントされたモデルをプロアクティブにプリロードする必要があります。 これは、サーバーが起動し、キャッシュがまだ「コールド」である後の最初のリクエストのキャッシュミスの問題を排除するのに役立つはずです。キャッシュミスを完全に排除するには、PREDICTION_API_SCORING_MODEL_CACHE_MAXSIZEも参照してください。
  • falseマルチモデルモードの場合
  • trueシングルモデルモードの場合
PREDICTION_API_SCORING_MODEL_CACHE_MAXSIZE リクエストごとにオンデマンドでロードされないようにするために、各ワーカーのRAMキャッシュに保持するスコアリングモデルの最大数。 実務上、デフォルト設定は低くなっています。 PPSを実行しているサーバーに十分なRAMがある場合は、これを事前にマウントされたモデルの総数よりも大きい値に設定して、キャッシュを完全に活用し、キャッシュミスを回避する必要があります。 各ワーカーのキャッシュは独立しているため、各モデルは各ワーカーのキャッシュにコピーされます。 キャッシュミスを回避するために、マルチモデルモードでPREDICTION_API_PRELOAD_MODELS_ENABLEDを有効にすることも検討してください。 4
PREDICTION_API_DEPLOYED_MODEL_RESOLVER_CACHE_TTL_SEC デフォルトでは、パッケージがHTTP経由で再アップロードされた場合、PPSは定期的にmplkgからデプロイ情報を読み取ろうとします。 If you are not planning to update the mplkg or its configuration after the PPS starts, consider setting this to a very high value (e.g., 1000000) to reduce the number of reading attempts. これは、一部のリクエストのレイテンシーを減らすのに役立ちます。 60
PREDICTION_API_MONITORING_ENABLED データ監視をオフロードするかどうかを設定します。 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と一緒に実行するかどうかを設定します。 監視エージェントを使用するには、エージェントスプーラーを設定する必要があります。 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
PREDICTION_API_RPC_DUAL_COMPUTE_ENABLED
(8.xのセルフマネージドAIプラットフォーム)
8.xのセルフマネージドAIプラットフォームの場合、この設定では、PPSがPython 2およびPython 3のインタープリターを実行する必要があります。 その後、PPSは、モデルがトレーニングされたPythonのバージョンに基づいて、バージョン要件を自動的に決定します。 この設定を有効にすると、PYTHON3_SERVICESは不要になり無視されます。 これには、インタプリタの両方のバージョンを実行するために追加のRAMが必要であることに注意してください。 False
PYTHON3_SERVICES この設定は、PREDICTION_API_RPC_DUAL_COMPUTE_ENABLED設定が無効かつ各モデルがPython 3でトレーニングされている場合にのみ有効にします。コンテナからPython 2インタプリタサービスを除外することで、約400MBのRAMを節約できます。 None

セルフマネージドAIプラットフォームでのPythonサポート

9.0より前のセルフマネージドAIプラットフォームでは、PPSはデフォルトでPython 3モデルをサポートしないため、それらのプラットフォームでPython 3モデルを使用するには、PYTHON3_SERVICEStrueに設定する必要があります。

8.xバージョンのDataRobotを実行している場合、「デュアルコンピューティングモード」(PREDICTION_API_RPC_DUAL_COMPUTE_ENABLED='true')を有効化して、Python2とPython3の両方のモデルをサポートできます。ただし、この設定には、さらに400MBのRAMが必要です。 RAMフットプリントを減らしたい場合(かつすべてのモデルがPython 2またはPython 3の場合)、「デュアル処理」モードを有効にしないでください。すべてのモデルがPython 3でトレーニングされている場合は、Python 3のサービスを有効にします(PYTHON3_SERVICES='true'')。 すべてのモデルがPython 2でトレーニングされている場合、デフォルトのインタプリタはPython 2のままなので、追加の環境変数を設定する必要はありません。

リクエストパラメーター

ヘッダー

PPSは承認をサポートしていないため、 Datarobot-keyAuthorizationは必要ありません。

キー タイプ 説明
Content-Type 文字列 必須。 リクエストフォーマットを定義します。
  • textplain; charset=UTF-8
  • text/csv
  • application/JSON
  • multipart/form-data(データを含むファイル。.csvや.txtファイルなど)
Content-Encoding 文字列 (オプション)現在、デフォルトのデータ拡張子を持つgzip-エンコーディングのみをサポートしています。 gzip
Accept 文字列 (オプション)応答スキーマの形状を制御します。 現在、JSON(デフォルト)とCSVがサポートされています。 例を参照してください。
  • application/json(デフォルト)
  • text/csv(CSV出力用)

引数のクエリ

predictionsルート(POST /predictions (単一モデルモード)とPOST /deployments/:id/predictions)は、いくつかの例外を除いて、標準ルートと同じクエリー引数とHTTPヘッダーを持っています。 通常の専用予測APIと同様に、サポートされる引数の正確なリストは、デプロイされたモデルによって異なります。 以下は、すべてのデプロイでサポートされている一般的なクエリ引数のリストです。

キー タイプ 説明
passthroughColumns 文字列のリスト (オプション)予想応答で公開(またはコピー)するスコアリングデータセットの列を制御します。

リクエストには、1つ以上の列が含まれる場合、および列が含まれない場合があります。 (パスできる列名の数に制限はありません。) 列名はUTF-8バイトとして渡し、パーセントエンコードする必要があります(この要件に関するHTTP標準を参照してください)。 列の正確な名前を値として使用してください。
/v1.0/deployments/<deploymentId>/predictions?passthroughColumns=colA&passthroughColumns=colB
passthroughColumnsSet 文字列 (オプション)予想応答で公開(またはコピー)するスコアリングデータセットの列を制御します。 使用できる唯一のオプションはallです。このオプションが渡された場合、スコアリングデータベースのすべての列が返却されます。 /v1.0/deployments/deploymentId/predictions?passthroughColumnsSet=all
decimalsNumber 整数 (オプション)予測結果のフロートのプレシジョンを設定します。 小数点以下の桁数を設定します。

小数点の後に数字がない場合、ゼロを追加するのではなく、浮動小数点のプレシジョンはdecimalsNumber未満になります。
?decimalsNumber=15

以下の点に注意してください。

  • passthroughColumnsおよびpassthroughColumnsSetパラメーターの両方を同じリクエストで渡すことはできません。
  • passthroughColumnsクエリーパラメーターで渡すことのできる列名の数に制限はありませんが、HTTPリクエストラインの制限があります(現在の制限は8192バイト)。

予測の説明パラメーター

次のクエリーパラメーターを使用して、予測の説明の予測リクエストをパラメーター化することができます。

備考

予測の説明をトリガーするには、Nが0より大きいmaxExplanations=Nを送信する必要があります。

キー タイプ 説明
maxExplanations 整数または文字列 (オプション)サーバーによって返される説明の数を制限します。 以前はmaxCodesと呼ばれていました(使用非推奨)。 SHAPの説明については、特別な定数allのみも受け入れられます。
  • ?maxExplanations=5
  • ?maxExplanations=all
thresholdLow 浮動小数 (オプション)予測の説明の下限しきい値。 予測の説明を計算するには、予測は、この値以下(またはthresholdHighの値以上)である必要があります。 ?thresholdLow=0.678
thresholdHigh 浮動小数 (オプション)予測の説明の上限しきい値。 予測の説明を計算するには、予測は、この値以上(またはthresholdLowの値以下)である必要があります。 ?thresholdHigh=0.345
excludeAdjustedPredictions ブール (オプション)モデル構築中にエクスポージャーが使用された場合、エクスポージャー調整された予測を予測応答に含めるか予測応答から除外します。 デフォルト値はtrueです(エクスポージャー調整済み予測を除外します)。 ?excludeAdjustedPredictions=true
explanationNumTopClasses 整数 (オプション)多クラスモデルのみ。

説明される各行の上位予測クラスの数。 多クラスの説明のみ。 デフォルトは1です。explanationClassNamesと相互排他的。
?explanationNumTopClasses=5
explanationClassNames 文字列タイプのリスト (オプション)多クラスモデルのみ。 各行について説明されるクラス名のリスト。 多クラスの説明のみ。 クラス名はUTF-8バイトとして渡し、パーセントエンコードする必要があります(この要件に関するHTTP標準を参照してください)。 このパラメーターはexplanationNumTopClassesと相互に排他的です。 デフォルトでは、explanationNumTopClasses=1が想定されます。 ?explanationClassNames=classA&explanationClassNames=classB

時系列パラメーター

次のクエリーパラメーターを使用して、時系列予測リクエストをパラメーター化することができます。

キー タイプ 説明
forecastPoint ISO-8601文字列 ISO 8601形式のDateTime文字列(タイムゾーンなし)。予測ポイントを表します。 predictionsStartDateおよびpredictionsEndDateがパスされる場合、このパラメーターは使用できません。 ?predictionsStartDate=2013-12-20T01:30:00Z
relaxKnownInAdvanceFeaturesCheck ブール trueまたはfalsetrueの場合、予測時に予測ウィンドウで事前に既知の特徴量の欠損値を使用できます。 デフォルト値はfalseです。 事前に既知の値がない場合、予測品質に負の影響が生じることがあります。 ?relaxKnownInAdvanceFeaturesCheck=true
predictionsStartDate ISO-8601文字列 データセット内での一括予測の生成開始時間。 このパラメーターは、predictionsEndDateと一緒に定義する必要があります。 predictionsStartDateおよびpredictionsEndDateがパスされる場合、forecastPointパラメーターは使用できません。 ?predictionsStartDate=2013-12-20T01:30:00Z&predictionsEndDate=2013-12-20T01:40:00Z
predictionsEndDate ISO-8601文字列 データセット内での一括予測の生成停止時間。 このパラメーターは、predictionsStartDateと一緒に定義する必要があります。 predictionsStartDateおよびpredictionsEndDateがパスされる場合、forecastPointパラメーターは使用できません。 上記を参照。

外部設定

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

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

       docker run \
           -v /path/to/mlpkgdir:/opt/ml/model \
           -e PREDICTION_API_WORKERS=2 \
           -e PREDICTION_API_SCORING_MODEL_CACHE_MAXSIZE=32 \
           -e PREDICTION_API_PRELOAD_MODELS_ENABLED='true' \
           -e PREDICTION_API_DEPLOYED_MODEL_RESOLVER_CACHE_TTL_SEC=0 \
           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. デフォルトプロトコルと暗号を使用して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> 
    
  5. RAMのフットプリントを最小限に抑えるために、Python 3インタプリタのみで実行します。

       docker run \
           -v /path/to/my_python3_model.mlpkg:/opt/ml/model \
           -e PREDICTION_API_RPC_DUAL_COMPUTE_ENABLED='false' \
           -e PYTHON3_SERVICES='true' \
           datarobot/datarobot-portable-prediction-api:<version> 
    
  6. RAMのフットプリントを最小限に抑えるために、Python 2インタプリタのみで実行します。

       docker run \
           -v /path/to/my_python2_model.mlpkg:/opt/ml/model \
           -e PREDICTION_API_RPC_DUAL_COMPUTE_ENABLED='false' \
           datarobot/datarobot-portable-prediction-api:<version> 
    

更新しました April 8, 2024