ポータブルバッチ予測¶
ポータブルバッチ予測(PBP)は、ポータブル予測サーバー(PPS)を使用して、切断された環境で大量のデータをスコアリングする機能を提供します。
PBP Dockerイメージの取得¶
ポータブルバッチ予測は、PPSと同じDockerイメージを使用しますが、異なるモードで実行します。先に進む前に、ポータブル予測サーバーのdockerイメージを取得するためのドキュメントを参照してください。
スコアリング方法¶
ポータブルバッチ予測では、次のアダプターを使用してデータセットをスコアリングできます。
Filesystem
JDBC
AWS S3
Azure Blob
GCS
Snowflake
Synapse
ポータブルバッチ予測を実行するには、次のアーティファクトが必要です。
- ポータブル予測サーバーのdockerイメージ
- 定義されたバッチ予測ジョブ
- 認証情報を含むENV設定ファイル(オプション)
- JDBCドライバー(オプション)
ジョブ定義¶
JSON
設定ファイル(JDBCスコアリング用のprediction_endpoint
、intake_settings
、output_settings
、、 timeseries_settings
(オプション)時系列スコアリング用、 jdbc_settings
(オプション)JDBCスコアリング用。
prediction_endpoint
はPPSにアクセスする方法を説明し、schema
://hostname
:port
の形式です。
- スキーマは
http
|https
hostname
は、PPSが実行されているインスタンスのホスト名ですport
は、PPS内で実行されている予測APIのポートです
jdbc_setting
には次の属性があります。
url
- JDBCインターフェースを介して接続するためのURLclass_name
- JDBC通信のエントリーポイントとして使用されるクラス名driver_path
- ファイルシステム上のJDBCドライバーへのパス(PBPコンテナ内で使用可能である必要があります)template_name
- 書き戻しの場合のテンプレートの名前。サポートテンプレートの名前については、DataRobotの担当者にお問い合わせください。
他のすべてのパラメーターは、通常のバッチ予測の場合と同じです。
以下に、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コンテナ内で実行されます。ジョブ定義ファイルとデータセットをマウントする必要があります。(ホストファイルシステムからスコアリングし、コンテナ内のパスを設定する場合)。 以下は、前の例のJDBCジョブ定義と資格情報を使用して、Snowflakeとの間でスコアリングするポータブルバッチ予測ジョブを開始する方法の完全な例です。
$ docker run --rm
-v /host/filesystem/path/job_defintiion_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 whith mlpkg(s) which you can download from deployment
MLPKG_DIR='/path/to/your/mlpkgs'
# Specify job definition PATH
JOB_DEFINITION_PATH='/path/to/your/job_definition.json'
# Specify PATH to file with credentials if needed (for cloud storage adapters or JDBC)
CREDENTIALS_PATH='/path/to/credentials.env'
# For DataRobot integration, specify API host and Token
API_HOST='https://app.datarobot.com'
API_TOKEN='XXXXXXXX'
# Run PPS service in 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 started-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
でローカルに実行されており、ファイルシステム構造が次の形式であると想定します。そして、ファイルシステムの構造は以下のような形式を想定します:
/path/to/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 /path/to/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 /path/to/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 /path/to/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 /path/to/portable_batch_predictions:/tmp/portable_batch_predictions
--env-file ~/DevApps/datarobot/demo/portable_batch_predictions/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 /path/to/portable_batch_predictions:/tmp/portable_batch_predictions
--env-file ~/DevApps/datarobot/demo/portable_batch_predictions/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": "/Users/andriy.popovych/DevApps/datarobot/demo/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 /path/to/portable_batch_predictions:/tmp/portable_batch_predictions
--env-file ~/DevApps/datarobot/demo/portable_batch_predictions/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 /path/to/portable_batch_predictions:/tmp/portable_batch_predictions
--env-file ~/DevApps/datarobot/demo/portable_batch_predictions/credentials.env
datarobot/datarobot-portable-prediction-api:<version> batch /tmp/portable_batch_predictions/job_definition.json