バッチ予測API¶
バッチ予測APIは、既にデプロイ済みの予測サーバーを使って大規模なデータセットをスコアリングする際の入力と出力の柔軟なオプションを提供します。 このAPIはDataRobotパブリックAPIを介して公開されます。 APIはREST対応クライアント、またはDataRobot PythonパブリックAPIバインディングを使用して消費できます。
バッチ予測REST APIルートの詳細については、 DataRobot REST APIリファレンスドキュメントをご覧ください。
APIの主要な機能を以下に示します。
- 入力と出力の柔軟なオプション:
- 同時並行制御レベルオプションによる予測サーバーオーバーロードに対する保護。
- 予測の説明の追加(しきい値を追加するオプション)。
- スコアリングされたデータとソースデータを関連付けるパススルー列のサポート。
- 出力の予測注意の追加。
- APIを介して1GB以上のファイルで予測を作成する機能。
時系列のバッチ予測設定の詳細については、時系列ドキュメントをご参照ください。
制限¶
項目 | AIプラットフォーム(SaaS) | セルフマネージドAIプラットフォーム(VPCまたはオンプレミス) |
---|---|---|
ジョブのランタイム制限 | 4時間* | 無制限 |
ローカルファイル入力サイズ | 無制限 | 無制限 |
ローカルファイル書き込みサイズ | 無制限 | 無制限 |
S3入力サイズ | 無制限 | 無制限 |
S3書き込みサイズ | 100GB | 100GB(設定可能) |
Azure入力サイズ | 4.75TB | 4.75TB |
Azure書き込みサイズ | 195GB | 195GB |
GCP入力サイズ | 5TB | 5TB |
GCP書き込みサイズ | 5TB | 5TB |
JDBC入力サイズ | 無制限 | 無制限 |
JDBC出力サイズ | 無制限 | 無制限 |
同時ジョブ数 | 予測インスタンスあたり1つ | インストールあたり1つ |
保存されたデータの保持時間 ローカルファイルアダプターの場合 |
48時間 | 48時間(設定可能) |
* 特徴量探索プロジェクトには、6時間のジョブ実行時間制限があります。
同時ジョブ数¶
予測サーバーでの過負荷を防止するために、DataRobotでは、予測インスタンスあたり1つのジョブだけが実行されます。 追加のジョブはキューに入れられ、前のジョブが完了するとすぐに開始されます。
データパイプライン¶
バッチ予測ジョブは、次で構成されるデータパイプラインです。
データ入力 > 同時スコアリング > データ出力
作成時に、ジョブのintakeSettings
およびoutputSettings
によってパイプラインのデータ入力およびデータ出力の部分が定義されます。
入力および出力オプションの任意の組み合わせを設定できます。
どちらの場合でも、デフォルトはローカルファイルの入力および出力なので、スコアリングするデータと共に個別のPUT
リクエストを発行して、スコアリングされたデータをダウンロードする必要があります。
バッチ予測用にサポートされるデータソース¶
次の表は、バッチ予測に対するデータソースのサポートを示しています。
名前 | ドライバーのバージョン | 入力サポート | 出力サポート | 検証済みのDataRobotバージョン |
---|---|---|---|---|
AWS Athena 2.0 | 2.0.35 | はい | いいえ | 7.3 |
Databricks | 2.6.40 | はい | はい | 9.2 |
Exasol | 7.0.14 | はい | はい | 8.0 |
Google BigQuery | 1.2.4 | はい | はい | 7.3 |
InterSystems | 3.2.0 | はい | いいえ | 7.3 |
kdb+ | - | はい | はい | 7.3 |
Microsoft SQL Server | 12.2.0 | はい | はい | 6.0 |
MySQL | 8.0.32 | はい | はい | 6.0 |
Oracle | 11.2.0 | はい | はい | 7.3 |
PostgreSQL | 42.5.1 | はい | はい | 6.0 |
Presto* | 0.216 | はい | はい | 8.0 |
Redshift | 2.1.0.14 | はい | はい | 6.0 |
SAP HANA | 2.20.17 | はい | はい | 7.3 (入力サポートのみ) 10.1 (入力および出力のサポート) |
Snowflake | 3.15.1 | はい | はい | 6.2 |
Synapse | 12.4.1 | はい | はい | 7.3 |
Teradata** | 17.10.00.23 | はい | はい | 7.3 |
TreasureData | 0.5.10 | はい | いいえ | 7.3 |
*Prestoでは、書き込みを遅らせる可能性のある基盤となるコネクターのほとんどにauto commit: true
を使用する必要があります。
**Teradataへの出力の場合、DataRobotはANSIモードのみに対応します。
詳細については、次を参照してください。
同時スコアリング¶
スコアリングを行う際、提供したデータはブロックに分割され、デプロイで指定された予測インスタンスで同時にスコアリングされます。
同時実行のレベルを制御するには、ジョブを作成するときにnumConcurrent
パラメーターを変更します。
ジョブの状態¶
バッチ予測を行う場合、各予測ジョブは4つの状態のいずれかになります。
INITIALIZING
:ジョブが正常に作成され、かつ次のいずれかの場合:- プッシュするCSVデータを待機中(ローカルファイル入力の場合)。
- 予測サーバー上でスロット処理を待機中。
RUNNING
:予測サーバーでデータセットのスコアリングが開始された。ABORTED
:次のいずれかの理由でジョブが中断された。- 無効な設定があった。
- DataRobotで20%または100MBの無効なスコアリングデータが発生し、その結果として予測エラーとなった。
COMPLETED
:データセットがスコアリングされ、かつ- スコアリング済みデータをダウンロードできる(ローカルファイル出力の場合)。
- または、データが送付先に書き込まれている。
資格情報を安全に保存する¶
スコアリングの一部のソースまたはターゲットは、DataRobotがユーザーに代わって認証することをリクエストしています(たとえば、データベースがログイン時にユーザー名とパスワードに合格することをリクエストする場合)。 これらの資格情報が正しく保存されるようにするには、データ資格情報を有効にしておく必要があります。
DataRobotでは、以下の資格情報タイプおよびプロパティーが使用されます。
アダプター | 資格情報タイプ | プロパティ |
---|---|---|
S3入力/出力 | s3 | awsAccessKeyId awsSecretAccessKey awsSessionToken(オプション) |
JDBC入力/出力 | ベーシック | ユーザー名 パスワード |
保存された資格情報を使用するには、各アダプターの以下の説明にあるようにintakeSettings
またはoutputSettings
いずれかの該当するcredentialId
にパスする必要があります。
CSV形式¶
CSVファイルの読み取りまたは書き込みを処理する入出力オプションの場合は、csvSettings
に以下を指定することでカスタム形式を使用できます。
パラメーター | 例 | 説明 |
---|---|---|
delimiter |
, |
(オプション)使用する区切り文字。 デフォルト: , (コンマ)。 TABを区切りとして指定するには、文字列tab を使用します。 |
quotechar |
" |
(オプション)区切り文字を含むフィールドの引用に使用する文字。 デフォルト:" 。 |
encoding |
utf-8 |
(オプション)CSVファイルのエンコーディング。 例(ただし、これらに限定されません): shift_jis 、latin_1 またはmskanji 。 デフォルト:utf-8 。 任意のPythonでサポートされているエンコーディングを使用できます。 |
同じ形式が入力および出力の両方に使用されます。 完全な例を参照してください。
モデル監視¶
バッチ予測APIはDataRobotのモデル監視機能とうまく統合します。
- デプロイのデータドリフト追跡を有効にすると、バッチ予測APIで実行されるすべての予測が追跡されます。
- デプロイのターゲットドリフト追跡を有効にしている場合、出力には実測値報告に使用する目的の関連付けIDが含まれます。
デプロイに対して本番以外のデータセットを実行する必要がある場合は、以下のパラメーターを指定して単一ジョブのドリフトと精度の追跡をオフにできます。
パラメーター | 例 | 説明 |
---|---|---|
skipDriftTracking |
true |
(オプション)このジョブのデータドリフト、ターゲットドリフト、精度追跡をスキップします。 デフォルト:false 。 |
デフォルト予測インスタンスの上書き¶
通常の状況下では、スコアリングに使用される予測サーバーがモデルがデプロイされた先のデフォルト予測サーバーとなります。 ただし、上書きはできません、複数の予測サーバーへのアクセス権がある場合は、predictionInstance
オプションの以下のプロパティを使用してデフォルト動作を上書きできます。
パラメーター | 例 | 説明 |
---|---|---|
hostName |
192.0.2.4 |
モデルがデプロイされた先の予測サーバーから、デフォルトホスト名の代わりに使用するホスト名が設定されます。 |
sslEnabled |
false |
(オプション)SSL (HTTPS)を使用して予測サーバーにアクセスします。 デフォルト:true 。 |
apiKey |
NWU...IBn2w |
(オプション)ジョブ作成者のキーとは異なるAPIキーを使用して、新規予測サーバーに対して認証します。 |
datarobotKey |
154a8abb-cbde-4e73-ab3b-a46c389c337b |
(オプション)マネージドAIプラットフォーム環境で実行中の場合は、予測サーバーに対して組織ごとのDataRobotキーを指定します。 デプロイ > 予測 > 予測APIタブを使用するか、DataRobot担当者に連絡してキーを見つけます。 |
以下は完全な例です。
job_details = {
'deploymentId': deployment_id,
'intakeSettings': {'type': 'localFile'},
'outputSettings': {'type': 'localFile'},
'predictionInstance': {
'hostName': '192.0.2.4',
'sslEnabled': False,
'apiKey': 'NWUQ9w21UhGgerBtOC4ahN0aqjbjZ0NMhL1e5cSt4ZHIBn2w',
'datarobotKey': '154a8abb-cbde-4e73-ab3b-a46c389c337b',
},
}
更新モデルと一致したスコアリング¶
ジョブがキューに入った後に新規モデルをデプロイすると、DataRobotは全ジョブのジョブ作成時にデプロイされたモデルを引き続き使用します。 すべての行が同じモデルでスコアリングされます。
テンプレート特徴量¶
ジョブ定義など、バッチジョブで動的パラメーターを指定すると便利な場合があります。 jinjaの特徴量構文(二重中括弧)を使用して、次のパラメーターの値を出力できます。
特徴量 | 説明 |
---|---|
current_run_time |
datetime 現在のUTC時間のオブジェクト(datetime.utcnow() ) |
current_run_timestamp |
Unixエポックからのミリ秒(整数) |
last_scheduled_run_time |
datetime 同じジョブ定義からインスタンス化された最後のジョブの開始のオブジェクト |
next_scheduled_run_time |
datetime 同じジョブ定義から次にスケジュールされたジョブ開始のオブジェクト |
last_completed_run_time |
datetime 以前にスケジュールされたジョブがスコアリングを終了したときのオブジェクト |
上記の特徴量は、次のフィールドで使用できます。
フィールド | 条件 |
---|---|
intake_settings.query |
JDBC、Synapse、およびSnowflakeアダプターの場合 |
output_settings.table |
JDBC、Synapse、Snowflake、およびBigQueryアダプターの場合、ステートメントタイプがcreate_table またはcreate_table_if_not_exists の場合、trueとマークされます |
output_settings.url |
S3、GCP、およびAzureアダプターの場合 |
URLを次のように指定する必要があります。gs://bucket/output-<added-string-with-double-curly-braces>.csv
備考
ほとんどのデータベースが上記の置換を確実に理解できるようにするために、DataRobotはISO-8601形式のタイムスタンプからマイクロ秒を取り除きます。
APIリファレンス¶
パブリックAPI¶
バッチ予測APIは、 DataRobot REST APIの一部です。 バッチ予測の操作方法の詳細については、このドキュメントを参照してください。
Python APIクライアント¶
PythonパブリックAPIクライアントを使用して、バッチ予測APIと連携できます。