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構成ファイルを使用してジョブを定義できます。

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の担当者にお問い合わせください。

他のすべてのパラメーターは、通常のバッチ予測の場合と同じです。

以下に、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 

更新しました December 21, 2022
Back to top