Skip to content

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

ポータブルバッチ予測

ポータブルバッチ予測(PBP)は、ポータブル予測サーバー(PPS)を使用して、切断された環境で大量のデータをスコアリングする機能を提供します。

PBP Dockerイメージの取得

ポータブルバッチ予測は、PPSと同じDockerイメージを使用しますが、異なるモードで実行します。先に進む前に、ポータブル予測サーバーのdockerイメージを取得するためのドキュメントを参照してください。

スコアリング方法

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

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

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

ジョブ定義

JSON設定ファイル(JDBCスコアリング用のprediction_endpointintake_settingsoutput_settings、、 timeseries_settings(オプション)時系列スコアリング用、 jdbc_settings(オプション)JDBCスコアリング用。

prediction_endpointはPPSにアクセスする方法を説明し、schema://hostname:portの形式です。

  • スキーマは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コンテナ内で実行されます。ジョブ定義ファイルとデータセットをマウントする必要があります。(ホストファイルシステムからスコアリングし、コンテナ内のパスを設定する場合)。 以下は、前の例の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

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