Skip to content

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

ポータブルバッチ予測

ポータブルバッチ予測(PBP)を使用すると、切断された環境で大量のデータをスコアリングできます。

ポータブルバッチ予測を使用する前に、自己完結型のDockerイメージとして配布されるDataRobotモデルパッケージ(.mlpkgファイル)用のDataRobot実行環境である、ポータブル予測サーバー(PPS)を設定する必要があります。 ポータブルバッチ予測は、PPSと同じDockerイメージを使用しますが、異なるモードで実行します。

本機能の提供について

ポータブル予測サーバーは、DataRobot MLOps専用機能です。 この機能を有効にする方法については、DataRobotの担当者にお問い合わせください。

スコアリング方法

ポータブルバッチ予測では、次のアダプターを使用してデータセットをスコアリングできます。

  • Filesystem
  • JDBC
  • AWS S3
  • Azure Blob
  • GCS
  • Snowflake
  • Synapse

ポータブルバッチ予測を実行するには、次のアーティファクトが必要です。

これらのアーティファクトを準備した後、ポータブルバッチ予測を実行できます。 ポータブルバッチ予測を実行する追加の例も参照してください。

ジョブ定義

時系列スコアリングの場合はprediction_endpointintake_settingsoutput_settingstimeseries_settings(オプション)、JDBCスコアリングの場合はjdbc_settings(オプション)を記述したJSON構成ファイルを使用してジョブを定義できます。

セルフマネージドAIプラットフォームのみ:予測エンドポイントのSSL設定

prediction_endpiontのSSL認証を無効にする必要がある場合、ALLOW_SELF_SIGNED_CERTSTrueに設定することができます。 この設定では、アプリケーションからWebサーバーへのリクエストに対するSSL証明書の検証が無効になります。 これは、クラスターでSSL暗号化を有効にしていて、世界的に信頼された認証局によって署名されていない証明書(自己署名)を使用している場合に便利です。

prediction_endpointは、PPSにアクセスする方法を説明し、<schema>://<hostname>:<port>として構成されます。ここで、次のパラメーターを定義します。

パラメーター タイプ 説明
schema 文字列 http または https
hostname 文字列 PPSが実行されているインスタンスのホスト名。
portを実行しているインスタンスのホスト名 文字列 PPS内で実行されている予測APIのポート。

jdbc_settingには次の属性があります。

パラメーター タイプ 説明
url 文字列 JDBCインターフェースを介して接続するためのURL。
class_name 文字列 JDBC通信のエントリーポイントとして使用されるクラス名。
driver_path 文字列 ファイルシステム上のJDBCドライバーへのパス(PBPコンテナ内で使用可能である必要があります)。
template_name 文字列 書き戻しの場合のテンプレートの名前。 サポートテンプレートの名前については、DataRobotの担当者にお問い合わせください。

The other parameters are similar to those available for standard batch predictions, however, they are in snake_case, not camelCase:

パラメーター タイプ 説明
abort_on_error ブーリアン Enable or disable cancelling the portable batch prediction job if an error occurs.
例: true
chunk_size 文字列 Chunk the dataset for scoring in sequence as asynchronous tasks. ほとんどの場合、デフォルト値で最良のパフォーマンスが生成されます。 Bigger chunks can be used to score very fast models and smaller chunks can be used to score very slow models.
Example: "auto"
column_names_remapping array Rename or remove columns from the output for this job. Set an output_name for the column to null or false to remove it.
Example: [{'input_name': 'isbadbuy_1_PREDICTION', 'output_name':'prediction'}, {'input_name': 'isbadbuy_0_PREDICTION', 'output_name': null}]
csv_settings object Set the delimiter, character encoding, and quote character for comma separated value (CSV) files.
例: { "delimiter": ",", "encoding": "utf-8", "quotechar": "\"" }
deployment_id 文字列 Define the ID of the deployment associated with the portable batch predictions.
Example: 61f05aaf5f6525f43ed79751
disable_row_level_error_handling ブーリアン Enable or disable error handling by prediction row.
例: false
include_prediction_status ブーリアン Enable or disable including the prediction_status column in the output; defaults to false.
例: false
include_probabilities ブーリアン Enable or disable returning probabilities for all classes.
例: true
include_probabilities_classes array Define the classes to provide class probabilities for.
Example: [ 'setosa', 'versicolor', 'virginica' ]
intake_settings object Set the intake options required for the input type.
Example: { "type": "localFile" }
num_concurrent 整数 Set the maximum number chunks to score concurrently on the prediction instance specified by the deployment.
Example: 1
output_settings object Set the output options required for the output type.
Example: { "credential_id": "string", "format": "csv", "partitionColumns": [ "string" ], "type": "azure", "url": "string" }
passthrough_columns array Define the scoring dataset columns to include in the prediction response. This option is mutually exclusive with passthrough_columns_set.
例: [ "column1", "column2" ]
passthrough_columns_set 文字列 Enable including all scoring dataset columns in the prediction response. The only option is all. This option is mutually exclusive with passthrough_columns.
例: "all"
prediction_warning_enabled ブーリアン Enable or disable prediction warnings.
例: true
skip_drift_tracking ブーリアン Enable or disable drift tracking for this batch of predictions. This allows you to make test predictions without affecting deployment stats.
Example: false
timeseries_settings object Define the settings required for time series predictions.
例: { "forecast_point": "2019-08-24T14:15:22Z", "relax_known_in_advance_features_check": false, "type": "forecast" }

You can also configure Prediction Explanations for portable batch predictions:

パラメーター タイプ 説明
max_explanations 整数/文字列 Set the number of explanations returned by the prediction server. SHAPの説明については、特別な定数allのみも受け入れられます。
例: 1
explanation_algorithm 文字列 Define the algorithm used for Prediction Explanations, either SHAP or XEMP.
Example: "shap"
explanation_class_names array Define the class names to explain for each row. This setting is only applicable to XEMP Prediction Explanations for multiclass models and it is mutually exclusive with explanation_num_top_classes.
Example: [ "class1", "class2" ]
explanation_num_top_classes 整数 Set the number of top predicted classes, by prediction value, to explain for each row. This setting is only applicable to XEMP Prediction Explanations for multiclass models and it is mutually exclusive with explanation_class_names.
Example: 1
threshold_low 浮動小数 Set the lower threshold for requiring a Prediction Explanation. 予測の説明を計算するには、予測は、この値以下(またはthreshold_highの値以上)である必要があります。
例: 0.678
threshold_high 浮動小数 Set the upper threshold for requiring a Prediction Explanation. 予測の説明を計算するには、予測は、この値以上(またはthreshold_lowの値以下)である必要があります。
例: 0.345

以下に、Snowflakeとの間でスコアを付けるJDBCの例の概要を示します。これは、job_definition_jdbc.jsonという名前のファイルに保存できます。

{
    "prediction_endpoint": "http://127.0.0.1:8080",
    "intake_settings": {
        "type": "jdbc",
        "table": "SCORING_DATA",
        "schema": "PUBLIC"
    },
    "output_settings": {
        "type": "jdbc",
        "table": "SCORED_DATA",
        "statement_type": "create_table",
        "schema": "PUBLIC"
    },
    "passthrough_columns_set": "all",
    "include_probabilities": true,
    "jdbc_settings": {
        "url": "jdbc:snowflake://my_account.snowflakecomputing.com/?warehouse=WH&db=DB&schema=PUBLIC",
        "class_name": "net.snowflake.client.jdbc.SnowflakeDriver",
        "driver_path": "/tmp/portable_batch_predictions/jdbc/snowflake-jdbc-3.12.0.jar",
        "template_name": "Snowflake"
    }
} 

資格情報の環境特徴量

クラウドストレージでJDBCまたはプライベートコンテナを使用している場合は、必要な 資格情報を環境特徴量として指定できます。 次のテーブルは、使用される特徴量名を示しています。

名前 タイプ 説明
AWS_ACCESS_KEY_ID 文字列 AWSアクセスキーID
AWS_SECRET_ACCESS_KEY 文字列 AWSシークレットアクセスキー
AWS_SESSION_TOKEN 文字列 AWSトークン
GOOGLE_STORAGE_KEYFILE_PATH 文字列 GCP資格情報ファイルへのパス
AZURE_CONNECTION_STRING 文字列 Azureの接続文字列
JDBC_USERNAME 文字列 JDBCのユーザー名
JDBC_PASSWORD 文字列 JDBCのパスワード
SNOWFLAKE_USERNAME 文字列 Snowflakeのユーザー名
SNOWFLAKE_PASSWORD 文字列 Snowflakeのパスワード
SYNAPSE_USERNAME 文字列 Azure Synapseのユーザー名
SYNAPSE_PASSWORD 文字列 Azure Synapseのパスワード

これがJDBCスコアリングに使用されるcredentials.envファイルの例です。

export JDBC_USERNAME=TEST_USER
export JDBC_PASSWORD=SECRET 

ポータブルバッチ予測を実行

ポータブルバッチ予測は、Dockerコンテナ内で実行されます。 ジョブ定義、ファイル、およびデータセット(ホストファイルシステムからスコアリングし、コンテナ内のパスを設定する場合)をDockerにマウントする必要があります。 以下は、前の例のJDBCジョブ定義と資格情報を使用して、Snowflakeとの間でスコアリングするポータブルバッチ予測ジョブを開始する方法の完全な例です。

docker run --rm \
    -v /host/filesystem/path/job_definition_jdbc.json:/docker/container/filesystem/path/job_definition_jdbc.json \
    --network host \
    --env-file /host/filesystem/path/credentials.env \
    datarobot-portable-predictions-api batch /docker/container/filesystem/path/job_definition_jdbc.json 

ここに進行状況を監視するために、PPSとDataRobotプラットフォームへの書き戻し ジョブステータスを含む完全なエンドツーエンドフローを実行する方法の別の例を示します。

#!/bin/bash

# This snippet starts both the PPS service and PBP job using the same PPS docker image
# available from Developer Tools.

#################
# Configuration #
#################

# Specify path to directory with mlpkg(s) which you can download from deployment
MLPKG_DIR='/host/filesystem/path/mlpkgs'
# Specify job definition path
JOB_DEFINITION_PATH='/host/filesystem/path/job_definition.json'
# Specify path to file with credentials if needed (for cloud storage adapters or JDBC)
CREDENTIALS_PATH='/host/filesystem/path/credentials.env'
# For DataRobot integration, specify API host and Token
API_HOST='https://app.datarobot.com'
API_TOKEN='XXXXXXXX'

# Run PPS service in the background
PPS_CONTAINER_ID=$(docker run --rm -d -p 127.0.0.1:8080:8080 -v $MLPKG_DIR:/opt/ml/model datarobot/datarobot-portable-prediction-api:<version>)
# Wait some time before PPS starts up
sleep 15
# Run PPS in batch mode to start PBP job
docker run --rm -v $JOB_DEFINITION_PATH:/tmp/job_definition.json \
    --network host \
    --env-file $CREDENTIALS_PATH \
    datarobot/datarobot-portable-prediction-api:<version> batch /tmp/job_definition.json
        --api_host $API_HOST --api_token $API_TOKEN
# Stop PPS service
docker stop $PPS_CONTAINER_ID 

その他の例

以下のすべての例では、PPSがポート8080でローカルに実行されていると想定し、ファイルシステム構造の形式は次のとおりです。

/host/filesystem/path/portable_batch_predictions/
├── job_definition.json
├── credentials.env
├── datasets
|   └── intake_dataset.csv
├── output
└── jdbc
    └── snowflake-jdbc-3.12.0.jar 

シングルモデルモードPPSでのファイルスコアリング

job_definition.jsonファイル:

{
    "prediction_endpoint": "http://127.0.0.1:8080",
    "intake_settings": {
        "type": "filesystem",
        "path": "/tmp/portable_batch_predictions/datasets/intake_dataset.csv"
    },
    "output_settings": {
        "type": "filesystem",
        "path": "/tmp/portable_batch_predictions/output/results.csv"
    }
} 
#!/bin/bash

docker run --rm \
    --network host \
    -v /host/filesystem/path/portable_batch_predictions:/tmp/portable_batch_predictions \
    datarobot/datarobot-portable-prediction-api:<version> batch \
        /tmp/portable_batch_predictions/job_definition.json 

マルチモデルモードPPSでのファイルスコアリング

job_definition.jsonファイル:

{
    "prediction_endpoint": "http://127.0.0.1:8080",
    "deployment_id": "lending_club",
    "intake_settings": {
        "type": "filesystem",
        "path": "/tmp/portable_batch_predictions/datasets/intake_dataset.csv"
    },
    "output_settings": {
        "type": "filesystem",
        "path": "/tmp/portable_batch_predictions/output/results.csv"
    }
} 
#!/bin/bash

docker run --rm \
    --network host \
    -v /host/filesystem/path/portable_batch_predictions:/tmp/portable_batch_predictions \
    datarobot/datarobot-portable-prediction-api:<version> batch \
        /tmp/portable_batch_predictions/job_definition.json  

マルチモデルモードPPSでのファイルスコアリングとDRジョブステータス追跡とのインテグレーション

job_definition.jsonファイル:

{
    "prediction_endpoint": "http://127.0.0.1:8080",
    "deployment_id": "lending_club",
    "intake_settings": {
        "type": "filesystem",
        "path": "/tmp/portable_batch_predictions/datasets/intake_dataset.csv"
    },
    "output_settings": {
        "type": "filesystem",
        "path": "/tmp/portable_batch_predictions/output/results.csv"
    }
} 

PPS MLPKGの場合、ポータブルバッチ予測ジョブを実行しているデプロイのデプロイIDをconfig.yamlで指定します。

#!/bin/bash

docker run --rm \
    --network host
    -v /host/filesystem/path/portable_batch_predictions:/tmp/portable_batch_predictions \
    datarobot/datarobot-portable-prediction-api:<version> batch \
        /tmp/portable_batch_predictions/job_definition.json \
        --api_host https://app.datarobot.com --api_token XXXXXXXXXXXXXXXXXXX 

シングルモデルモードPPSでのJDBスコアリング

job_definition.jsonファイル:

{
    "prediction_endpoint": "http://127.0.0.1:8080",
    "deployment_id": "lending_club",
    "intake_settings": {
        "type": "jdbc",
        "table": "INTAKE_TABLE"
    },
    "output_settings": {
        "type": "jdbc",
        "table": "OUTPUT_TABLE",
        "statement_type": "create_table"
    },
    "passthrough_columns_set": "all",
    "include_probabilities": true,
    "jdbc_settings": {
        "url": "jdbc:snowflake://your_account.snowflakecomputing.com/?warehouse=SOME_WH&db=MY_DB&schema=MY_SCHEMA",
        "class_name": "net.snowflake.client.jdbc.SnowflakeDriver",
        "driver_path": "/tmp/portable_batch_predictions/jdbc/snowflake-jdbc-3.12.0.jar",
        "template_name": "Snowflake"
    }
} 

credentials.envファイル:

JDBC_USERNAME=TEST
JDBC_PASSWORD=SECRET 
#!/bin/bash

docker run --rm \
    --network host \
    -v /host/filesystem/path/portable_batch_predictions:/tmp/portable_batch_predictions \
    --env-file /host/filesystem/path/credentials.env \
    datarobot/datarobot-portable-prediction-api:<version> batch \
        /tmp/portable_batch_predictions/job_definition.json 

シングルモデルモードPPSでのS3スコアリング

job_definition.jsonファイル:

{
    "prediction_endpoint": "http://127.0.0.1:8080",
    "intake_settings": {
        "type": "s3",
        "url": "s3://intake/dataset.csv",
        "format": "csv"
    },
    "output_settings": {
        "type": "s3",
        "url": "s3://output/result.csv",
        "format": "csv"
    }
} 

credentials.envファイル:

AWS_ACCESS_KEY_ID=XXXXXXXXXXXX
AWS_SECRET_ACCESS_KEY=XXXXXXXXXXX 
#!/bin/bash

docker run --rm \
    --network host \
    -v /host/filesystem/path/portable_batch_predictions:/tmp/portable_batch_predictions \
    --env-file /path/to/credentials.env \
    datarobot/datarobot-portable-prediction-api:<version> batch \
        /tmp/portable_batch_predictions/job_definition.json 

マルチモデルモードPPSでのSnowflakeスコアリング

job_definition.jsonファイル:

{
    "prediction_endpoint": "http://127.0.0.1:8080",
    "deployment_id": "lending_club",
    "intake_settings": {
        "type": "snowflake",
        "table": "INTAKE_TABLE",
        "schema": "MY_SCHEMA",
        "external_stage": "MY_S3_STAGE_IN_SNOWFLAKE"
    },
    "output_settings": {
        "type": "snowflake",
        "table": "OUTPUT_TABLE",
        "schema": "MY_SCHEMA",
        "external_stage": "MY_S3_STAGE_IN_SNOWFLAKE",
        "statement_type": "insert"
    },
    "passthrough_columns_set": "all",
    "include_probabilities": true,
    "jdbc_settings": {
        "url": "jdbc:snowflake://your_account.snowflakecomputing.com/?warehouse=SOME_WH&db=MY_DB&schema=MY_SCHEMA",
        "class_name": "net.snowflake.client.jdbc.SnowflakeDriver",
        "driver_path": "/tmp/portable_batch_predictions/jdbc/snowflake-jdbc-3.12.0.jar",
        "template_name": "Snowflake"
    }
} 

credentials.envファイル:

# Snowflake creds for JDBC connectivity
SNOWFLAKE_USERNAME=TEST
SNOWFLAKE_PASSWORD=SECRET
# AWS creds needed to access external stage
AWS_ACCESS_KEY_ID=XXXXXXXXXXXX
AWS_SECRET_ACCESS_KEY=XXXXXXXXXXX 
#!/bin/bash

docker run --rm \
    --network host \
    -v /host/filesystem/path/portable_batch_predictions:/tmp/portable_batch_predictions \
    --env-file /host/filesystem/path/credentials.env \
    datarobot/datarobot-portable-prediction-api:<version> batch \
        /tmp/portable_batch_predictions/job_definition.json  

マルチモデルモードPPSでのAzure Blobを介した時系列スコアリング

job_definition.jsonファイル:

{
    "prediction_endpoint": "http://127.0.0.1:8080",
    "deployment_id": "euro_date_ts_mlpkg",
    "intake_settings": {
        "type": "azure",
        "url": "https://batchpredictionsdev.blob.core.windows.net/datasets/euro_date.csv",
        "format": "csv"
    },
    "output_settings": {
        "type": "azure",
        "url": "https://batchpredictionsdev.blob.core.windows.net/results/output_ts.csv",
        "format": "csv"
    },
    "timeseries_settings":{
        "type": "forecast",
        "forecast_point": "2007-11-14",
        "relax_known_in_advance_features_check": true
    }
} 

credentials.envファイル:

# Azure Blob connection string
AZURE_CONNECTION_STRING='DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=XXX;EndpointSuffix=core.windows.net' 
#!/bin/bash

docker run --rm \
    --network host \
    -v /host/filesystem/path/portable_batch_predictions:/tmp/portable_batch_predictions
    --env-file /host/filesystem/path/credentials.env
    datarobot/datarobot-portable-prediction-api:<version> batch \
        /tmp/portable_batch_predictions/job_definition.json 

更新しました January 23, 2024