Skip to content

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

ポータブルバッチ予測

本機能の提供について

The Portable Prediction Server is a premium feature exclusive to DatRobot MLOps. この機能を有効にする方法については、DataRobotの担当者または管理者にお問い合わせください。

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

スコアリング方法

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

  • 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 or https
hostname 文字列 PPSが実行されているインスタンスのホスト名。
port 文字列 PPS内で実行されている予測APIのポート。

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

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

その他のパラメーターは、標準の バッチ予測で使用できるものと同様ですが、camelCaseではなくsnake_caseになっています。

パラメーター タイプ 説明
abort_on_error ブーリアン エラーが発生した場合のポータブルバッチ予測ジョブのキャンセルを有効または無効にします。
例: true
chunk_size 文字列 非同期タスクとして順番にスコアリングするために、データセットをチャンキングします。 ほとんどの場合、デフォルト値で最良のパフォーマンスが生成されます。 チャンクのサイズを大きくすると高速なモデルのスコアリングに使用でき、小さくすると低速なモデルのスコアリングに使用できます。
例:"auto"
column_names_remapping array このジョブの出力から、列名を変更するか、列を削除します。 列を削除するには、削除する列のoutput_namenullまたはfalseに設定します。
例:[{'input_name': 'isbadbuy_1_PREDICTION', 'output_name':'prediction'}, {'input_name': 'isbadbuy_0_PREDICTION', 'output_name': null}]
csv_settings object カンマ区切り値(CSV)ファイルで区切り文字、文字エンコーディング、および引用文字を設定します。
例: { "delimiter": ",", "encoding": "utf-8", "quotechar": "\"" }
deployment_id 文字列 ポータブルバッチ予測に関連付けられたデプロイのIDを定義します。
例:61f05aaf5f6525f43ed79751
disable_row_level_error_handling ブーリアン 予測行によるエラー処理を有効または無効にします。
例: false
include_prediction_status ブーリアン 出力にprediction_status列を含めることを有効または無効にします。デフォルトではfalseです。
例: false
include_probabilities ブーリアン すべてのクラスで確率を返すことを有効または無効にします。
例: true
include_probabilities_classes array クラスの確率を指定するクラスを定義します。
例:[ 'setosa', 'versicolor', 'virginica' ]
intake_settings object 入力タイプに必要な 入力オプションを設定します。
例:{ "type": "localFile" }
num_concurrent 整数 デプロイで指定された予測インスタンスで同時にスコアリングするチャンクの最大数を設定します。
例:1
output_settings object 出力タイプに必要な 出力オプションを設定します。
例:{ "credential_id": "string", "format": "csv", "partitionColumns": [ "string" ], "type": "azure", "url": "string" }
passthrough_columns array 予測応答に含めるスコアリングデータセット列を定義します。 このオプションとpassthrough_columns_setは一緒に使用できません。
例: [ "column1", "column2" ]
passthrough_columns_set 文字列 予測応答にすべてのスコアリングデータセット列を含めることを可能にします。 唯一のオプションはallです。 このオプションとpassthrough_columnsは一緒に使用できません。
例: "all"
prediction_warning_enabled ブーリアン 予測警告を有効または無効にします。
例: true
skip_drift_tracking ブーリアン この予測バッチでドリフト追跡を有効または無効にします。 これにより、デプロイ統計に影響を与えることなくテスト予測を行えます。
例:false
timeseries_settings object 時系列予測に必要な設定を定義します。
例: { "forecast_point": "2019-08-24T14:15:22Z", "relax_known_in_advance_features_check": false, "type": "forecast" }

ポータブルバッチ予測では 予測の説明を設定することもできます。

パラメーター タイプ 説明
max_explanations 整数/文字列 予測サーバーから返される説明の数を設定します。 SHAPの説明については、特別な定数allのみも受け入れられます。
例: 1
explanation_algorithm 文字列 予測の説明に使用するアルゴリズムを、SHAPまたはXEMPのいずれかで定義します。
例:"shap"
explanation_class_names array 各行について説明するクラス名を定義します。 この設定は、多クラスモデルで XEMPベースの予測の説明にのみ適用でき、explanation_num_top_classesとは一緒に使用できません。
例:[ "class1", "class2" ]
explanation_num_top_classes 整数 各行について説明するために、上位予測クラスの数を予測値ごとに設定します。 この設定は、多クラスモデルで XEMPベースの予測の説明にのみ適用でき、explanation_class_namesとは一緒に使用できません。
例:1
threshold_low 浮動小数 予測の説明を必要とする下限しきい値を設定します。 予測の説明を計算するには、予測は、この値以下(またはthreshold_highの値以上)である必要があります。
例: 0.678
threshold_high 浮動小数 予測の説明を必要とする上限しきい値を設定します。 予測の説明を計算するには、予測は、この値以上(または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 

更新しました October 2, 2024