MLOpsライブラリとエージェントのスプーラー設定¶
MLOpsライブラリはスプーラーを介してエージェントと通信します。そのため、エージェントとライブラリスプーラーの設定が一致していることが重要です。 MLOpsエージェントとライブラリのスプーラー設定を構成する場合、一部の設定は必須であり、一部はオプションです(オプションの設定は、以下の各表に示されています)。 The required settings can be configured programmatically or through the environment variables documented in the General configuration and Spooler-specific configurations sections. 環境変数による設定とプログラムによる設定の両方が混在する場合は、環境変数による設定が優先されます。
Javaの要件
MLOps監視ライブラリにはJava 11以降が必要です。 監視しない場合、モデルのスコアリングコードJARファイルにはJava 8以降が必要です。ただし、MLOpsライブラリを使用して監視を行う場合、モデルのスコアリングコードJARファイルにはJava 11以降が必要です。 セルフマネージドAIプラットフォームがインストールされている場合、Java 11の要件がDataRobot v11.0以降に適用されます。
MLOpsエージェントとライブラリの通信は、次のスプーラーのいずれかを使用するように設定できます。
MLOpsエージェントの設定¶
mlops.agent.conf.yaml
で別のサービスとしてエージェントを実行する場合は、channelConfigs
セクションのコメントを解除し、必須の設定を入力して、スプーラー設定を指定します。 For more information on setting the channelConfigs
see Configure the monitoring agent.
MLOpsライブラリ設定¶
MLOpsライブラリは、プログラムで設定するか、環境変数を使用して設定できます。 プログラムでスプーラーを設定するには、MLOpsinit
呼び出し中にスプーラーを指定します。たとえば、Pythonライブラリを使用してファイルシステムスプーラーを設定するには、次のようにします。
mlops = MLOps().set_filesystem_spooler("your_spooler_directory").init()
備考
上記のコードで指定されたディレクトリを作成する必要があります。プログラムはそれを作成しません。
他のスプーラータイプに対して同等のインターフェイスが存在します。
環境変数を使用してMLOpsライブラリとエージェントを設定するには、一般設定およびスプーラー固有設定のセクションを参照してください。
一般的な設定¶
次の環境変数を使用して、MLOpsエージェントとライブラリを設定し、スプーラータイプを選択します。
特徴量 | 説明 |
---|---|
MLOPS_DEPLOYMENT_ID |
MLOpsライブラリからメトリックを受け取る必要があるDataRobotデプロイのデプロイID。 |
MLOPS_MODEL_ID |
MLOpsライブラリによって報告される必要があるDataRobotモデルのモデルID。 |
MLOPS_SPOOLER_TYPE |
|
オプション設定 | |
MLOPS_SPOOLER_DEQUEUE_ACK_RECORDS |
|
MLOPS_ASYNC_REPORTING |
MLOpsライブラリに、指標を非同期でスプーラーにレポートさせます。 |
MLOPS_FEATURE_DATA_ROWS_IN_ONE_MESSAGE |
スプーラーへの単一のメッセージに含める必要のある特徴量の行数。 |
MLOPS_SPOOLER_CONFIG_RECORD_DELIMITER |
スプーラー設定文字列内のキーと値のペア間のデフォルト値; を置き換える区切り文字(たとえば、key1=value1;key2=value2 をkey1=value1:key2=value2 に)。 |
MLOPS_SPOOLER_CONFIG_KEY_VALUE_SEPARATOR |
スプーラー設定文字列内のキーと値のペア間のデフォルト値= を置き換える区切り文字(たとえば、key1=value1 をkey1:value1 に)。 |
備考
ここでは、設定ファイルまたはプログラムで設定された変数定義よりも環境変数の設定が優先されます。
スプーラータイプを設定した後、スプーラー固有の環境変数を設定できます。
スプーラー固有設定¶
設定したMLOPS_SPOOLER_TYPE
に応じて、サポートされているスプーラーに固有の環境変数として設定情報を提供できます。
Filesystem¶
次の環境変数を使用して、FILESYSTEM
スプーラーを設定します。
特徴量 | 説明 |
---|---|
MLOPS_FILESYSTEM_DIRECTORY |
|
オプション設定 | |
MLOPS_FILESYSTEM_MAX_FILE_SIZE |
デフォルトの最大ファイルサイズ(バイト単位)を上書きします。 デフォルト:1GB |
MLOPS_FILESYSTEM_MAX_NUM_FILE |
デフォルトの最大ファイル数を上書きします。 デフォルト:10ファイル |
プログラムによるfilesystemスプーラーの設定
MLOpsライブラリ用のファイルシステムスプーラーをプログラムに従って設定することもできます。
ポータブル予測サーバーのfilesystemディレクトリ
FILESYSTEM
スプーラーでポータブル予測サーバー(PPS)を使う場合、PPSの起動時にこのディレクトリをバインドマウントする必要があります。 例:
1 2 3 4 5 6 |
|
PPSの起動について詳しくは、コードスニペットでのPPSの起動のドキュメントを参照してください。
Amazon SQS¶
Amazon SQS
をスプーラーとして使用する場合、次の2つの方法のいずれかで資格情報セットを提供できます。
-
AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
、AWS_REGION
またはAWS_DEFAULT_REGION
環境変数にクレデンシャルを設定します。 AWSソフトウェアパッケージのみがこれらのクレデンシャルを使用します。DataRobotはそれらにアクセスしません。 -
AWS環境を使用している場合は、資格情報認証用のAWS IAM(IDおよびアクセス管理)ロールを作成します。
次の環境変数のいずれかを使用して、SQS
スプーラーを設定します。
特徴量 | 説明 |
---|---|
MLOPS_SQS_QUEUE_URL |
スプーラーに使用されるSQSキューのURL。 |
MLOPS_SQS_QUEUE_NAME |
スプーラーに使用されるSQSキューのキュー名。 |
備考
SQS
スプーラータイプを使用する場合は、スプーラー名またはURLのみを指定してください。
RabbitMQ¶
RABBITMQ
スプーラー設定に使用する環境変数は以下の通りです。
特徴量 | 説明 |
---|---|
MLOPS_RABBITMQ_QUEUE_URL |
スプーラーに使用されるRabbitMQキューのURL。 |
MLOPS_RABBITMQ_QUEUE_NAME |
スプーラーに使用されるRabbitMQキューのキュー名。 |
オプション設定 | |
MLOPS_RABBITMQ_SSL_CA_CERTIFICATE_PATH |
CA証明書ファイル(.pem ファイル)へのパス。 |
MLOPS_RABBITMQ_SSL_CERTIFICATE_PATH |
クライアント証明書(.pem ファイル)へのパス。 |
MLOPS_RABBITMQ_SSL_KEYFILE_PATH |
クライアントキー(.pem ファイル)へのパス。 |
MLOPS_RABBITMQ_SSL_TLS_VERSION |
備考
RabbitMQ設定では、パスワードなしでRSA形式のキーが必要です。 以下の通り、PKCS8からRSAにキーを変換することができます。
openssl rsa -in mykey_pkcs8_format.pem -text > mykey_rsa_format.pem
キーを生成するには、RabbitMQ TLSサポートを参照してください。
Google Cloud Pub/Sub¶
Google CloudPUBSUB
をスプーラーとして使用する場合は、GOOGLE_APPLICATION_CREDENTIALS
環境変数に適切な資格情報を指定する必要があります。 Google Cloudソフトウェアパッケージのみがこれらのクレデンシャルを使用します。DataRobotはそれらにアクセスしません。
PUBSUB
スプーラー設定に使用する環境変数は以下の通りです。
特徴量 | 説明 |
---|---|
MLOPS_PUBSUB_PROJECT_ID |
スプーラーによって使用されるプロジェクトのPub/SubプロジェクトIDは、プロジェクトIDのフルパスである必要があります。 |
MLOPS_PUBSUB_TOPIC_NAME |
スプーラーによって使用されるトピックのPub/Subトピック名。これは、プロジェクトIDを含む完全修飾トピック名パスではなく、プロジェクト内のトピック名である必要があります。 |
MLOPS_PUBSUB_SUBSCRIPTION_NAME |
スプーラーが使用するサブスクリプションのPub/Subサブスクリプション名。 |
Pub/Subサービスのアカウント権限
Google Cloud Pub/Subを監視エージェントのスプーラーとして使用するには、以下のサービスアカウント権限が必要です。
レベル | ユーザー権限 |
---|---|
プロジェクト | プロジェクトビューアー |
トピック | Pub/Subパブリッシャー |
サブスクリプション | Pub/Subビューアー、Pub/Subサブスクライバー |
DataRobotの外部で監視エージェントと通信するために必要な基本権限は、Pub/Subパブリッシャー_と_Pub/Subサブスクライバー_です。 _Pub/Sub Viewer and Project Viewer are required by DataRobot prediction environments.
Apache Kafka¶
次の環境変数を使用してApacheKAFKA
スプーラーを設定します。
特徴量 | 説明 |
---|---|
MLOPS_KAFKA_TOPIC_NAME |
|
MLOPS_KAFKA_BOOTSTRAP_SERVERS |
|
オプション設定 | |
MLOPS_KAFKA_CONSUMER_POLL_TIMEOUT_MS |
メッセージを処理してDataRobotに送信する前にメッセージを消費するまで待機する時間 デフォルト値:3000ミリ秒。 |
MLOPS_KAFKA_CONSUMER_GROUP_ID |
|
MLOPS_KAFKA_CONSUMER_MAX_NUM_MESSAGES |
|
MLOPS_KAFKA_SESSION_TIMEOUT_MS |
|
MLOPS_KAFKA_MESSAGE_BYTE_SIZE_LIMIT |
|
MLOPS_KAFKA_DELIVERY_TIMEOUT_MS |
|
MLOPS_KAFKA_REQUEST_TIMEOUT_MS |
|
MLOPS_KAFKA_METADATA_MAX_AGE_MS |
|
MLOPS_KAFKA_SECURITY_PROTOCOL |
|
MLOPS_KAFKA_SASL_MECHANISM |
|
MLOPS_KAFKA_SASL_JAAS_CONFIG (Javaのみ) |
|
MLOPS_KAFKA_SASL_LOGIN_CALLBACK_CLASS (Javaのみ) |
|
MLOPS_KAFKA_CONNECTIONS_MAX_IDLE_MS (Javaのみ) |
|
MLOPS_KAFKA_SASL_USERNAME (Pythonのみ) |
|
MLOPS_KAFKA_SASL_PASSWORD (Pythonのみ) |
|
MLOPS_KAFKA_SASL_OAUTHBEARER_CONFIG (Pythonのみ) |
|
MLOPS_KAFKA_SOCKET_KEEPALIVE (Pythonのみ) |
DataRobot API¶
DataRobot APIスプーラーを設定するプロセスは、一般的なスプーラー設定とは異なります。 通常、監視エージェントはスプーラーに接続して情報を収集し、その情報をDataRobot MLOpsに送信します。 DataRobot APIを使用すると、実際にスプーラーに接続することはなく、MLOpsライブラリの呼び出しに変更はありません。 呼び出しはスプーラーや監視エージェントには行われず、HTTPS経由でDataRobot MLOpsに直接行われます。 この場合、複雑なスプーラーや監視エージェントを設定する必要はありません。
次のパラメーターを使用して、DataRobot Python APIスプーラーを設定します。
パラメーター | 説明 |
---|---|
MLOPS_SERVICE_URL |
MLOpsにアクセスするためのサービスURLを、YAML設定ファイルで指定する代わりに、この環境変数で指定します。 |
MLOPS_API_TOKEN |
The DataRobot API key. |
VERIFY SSL (ブーリアン) |
|
オプション設定 | |
MLOPS_HTTP_RETRY |
|
API_POST_TIMEOUT_SECONDS |
|
API_HTTP_RETRY_WAIT_SECONDS |
Azure Event Hubs¶
DataRobotでは、既存のKafkaスプーラータイプを活用することによって、Microsoft Azure Event Hubsを監視エージェントスプーラーとして使用できます。 To set this up, see Using Azure Event Hubs from Apache Kafka applications.
備考
Azureは、Event HubsのKafkaプロトコルをスタンダードおよびプレミアム価格帯でのみサポートします。 ベーシック価格帯は、Kafka APIサポートがないので、監視エージェント向けのスプーラーとしてサポートされていません。 See Azure Event Hubs quotas and limits for details.
スプーラーとしてAzure Event Hubsを使用するには、以下の方法で監視エージェントとライブラリーの認証を設定する必要があります。
Event HubsのSASベースの認証¶
監視エージェントとライブラリにEvent HubsのSASベースの認証を使用するには、以下のシェルフラグメントの例を使用して、次の環境変数を設定します。
# Azure recommends setting the following values; see:
# https://docs.microsoft.com/en-us/azure/event-hubs/apache-kafka-configurations
export MLOPS_KAFKA_REQUEST_TIMEOUT_MS='60000'
export MLOPS_KAFKA_SESSION_TIMEOUT_MS='30000'
export MLOPS_KAFKA_METADATA_MAX_AGE_MS='180000'
# Common configuration variables for both Java- and Python-based libraries.
export MLOPS_KAFKA_BOOTSTRAP_SERVERS='XXXX.servicebus.windows.net:9093'
export MLOPS_KAFKA_SECURITY_PROTOCOL='SASL_SSL'
export MLOPS_KAFKA_SASL_MECHANISM='PLAIN'
# The following setting is specific to the Java SDK (and the monitoring agent daemon)
export MLOPS_KAFKA_SASL_JAAS_CONFIG='org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://XXXX.servicebus.windows.net/;SharedAccessKeyName=XXXX;SharedAccessKey=XXXX";'
# For the Python SDK, you will need the following settings (in addition to the common ones above)
export MLOPS_KAFKA_SASL_USERNAME='$ConnectionString'
export MLOPS_KAFKA_SASL_PASSWORD='Endpoint=sb://XXXX.servicebus.windows.net/;SharedAccessKeyName=XXX;SharedAccessKey=XXXX'
備考
上記の環境変数の値では、環境変数を設定するときに特殊文字$
と"
がシェルによって解釈されないように、一重引用符('
)を使用してください。 If you are setting environment variables via DataBricks, you should follow their guidelines on escaping special characters for the version of the platform you are using.
Event Hubs向けのAzure Active Directory OAuth 2.0¶
DataRobotは、Event Hubsの認証用にAzure Active Directory OAuth 2.0もサポートしています。 この認証方法を使用するには、新しいアプリケーション登録を作成して、それにEvent Hubs Namespace(すなわち、Azure Event Hubsのデータオーナー)の必要な権限を持たせる必要があります。 See Authenticate an application with Azure AD to access Event Hubs resources for details.
Event Hubs Azure Active Directory OAuth 2.0認証を使用するには、以下のサンプルシェルのフラグメントを使用して、次の環境変数を設定します。
# Azure recommends setting the following values; see:
# https://docs.microsoft.com/en-us/azure/event-hubs/apache-kafka-configurations
export MLOPS_KAFKA_REQUEST_TIMEOUT_MS='60000'
export MLOPS_KAFKA_SESSION_TIMEOUT_MS='30000'
export MLOPS_KAFKA_METADATA_MAX_AGE_MS='180000'
# Common configuration variables for both Java- and Python-based libraries.
export MLOPS_KAFKA_BOOTSTRAP_SERVERS='XXXX.servicebus.windows.net:9093'
export MLOPS_KAFKA_SECURITY_PROTOCOL='SASL_SSL'
export MLOPS_KAFKA_SASL_MECHANISM='OAUTHBEARER'
# The following setting is specific to the Java SDK (and the tracking-agent daemon)
export MLOPS_KAFKA_SASL_JAAS_CONFIG='org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required aad.tenant.id="XXXX" aad.client.id="XXXX" aad.client.secret="XXXX";'
export MLOPS_KAFKA_SASL_LOGIN_CALLBACK_CLASS='com.datarobot.mlops.spooler.kafka.ActiveDirectoryAuthenticateCallbackHandler'
# For the Python SDK, you will need the following settings (in addition to the common ones above)
export MLOPS_KAFKA_SASL_OAUTHBEARER_CONFIG='aad.tenant.id=XXXX-XXXX-XXXX-XXXX-XXXX, aad.client.id=XXXX-XXXX-XXXX-XXXX-XXXX, aad.client.secret=XXXX'
備考
環境変数の値の一部に二重引用符("
)が含まれています。 この特殊文字(または他の文字)を含む環境変数を設定するときは注意してください。
Javaアプリケーションでの必要なスプーラーの動的ロード¶
サードパーティのコードを使用して監視エージェントスプーラーを設定するには、必要なスプーラー用に別のJARファイルを動的にロードできます。 This configuration is required for the Amazon SQS, RabbitMQ, Google Cloud Pub/Sub, and Apache Kafka spoolers. ネイティブでサポートされているファイルシステムスプーラーは、JARファイルをロードせずに設定できます。
備考
以前は、datarobot-mlops
とmlops-agent
のパッケージには、デフォルトですべてのスプーラータイプが含まれていました。ただし、その設定が未使用であってもコードが常に存在していました。
プロジェクトオブジェクトモデルにスプーラーの依存関係を含める¶
MLOps Javaアプリケーションでサードパーティのスプーラーを使用するには、datarobot-mlops
と一緒に、必要なスプーラーをPOM(Project Object Model)ファイルに依存関係として含める必要があります。
<properties>
<mlops.version>8.3.0</mlops.version>
</properties>
<dependency>
<groupId>com.datarobot</groupId>
<artifactId>datarobot-mlops</artifactId>
<version>${mlops.version}</version>
</dependency>
<dependency>
<groupId>com.datarobot</groupId>
<artifactId>spooler-sqs</artifactId>
<version>${mlops.version}</version>
</dependency>
<dependency>
<groupId>com.datarobot</groupId>
<artifactId>spooler-rabbitmq</artifactId>
<version>${mlops.version}</version>
</dependency>
<dependency>
<groupId>com.datarobot</groupId>
<artifactId>spooler-pubsub</artifactId>
<version>${mlops.version}</version>
</dependency>
<dependency>
<groupId>com.datarobot</groupId>
<artifactId>spooler-kafka</artifactId>
<version>${mlops.version}</version>
</dependency>
スプーラーに実行可能なJARファイルの提供¶
スプーラーJARファイルは、 MLOpsエージェントのtarballに含まれています。 They are also available individually as downloadable JAR files in the public Maven repository for the DataRobot MLOps Agent.
実行可能なエージェントJARファイルでサードパーティのスプーラーを使用するには、スプーラーへのパスをクラスパスに追加します。
java ... -cp path/to/mlops-agent-8.2.0.jar com.datarobot.mlops.agent.Agent
java ... -cp path/to/mlops-agent-8.3.0.jar:path/to/spooler-kafka-8.3.0.jar com.datarobot.mlops.agent.Agent
例として提供されているstart-agent.sh
スクリプトは、このタスクを自動実行し、lib
ディレクトリにあるスプーラーJARファイルをクラスパスに追加します。 スプーラーJARファイルが別のディレクトリにある場合は、MLOPS_SPOOLER_JAR_PATH
環境変数を設定してください。
-
動的スプーラーが正常にロードされると、監視エージェントは次の
INFO
メッセージ(Creating spooler type <type>: success.
)をログに記録します。 -
動的スプーラーのロードに失敗すると、監視エージェントは
ERROR
メッセージ(Creating spooler type <type>: failed
)をログに記録し、その後に理由(依存関係がないことを示すclass not found
エラー)または詳細(問題の診断に役立つシステムの例外メッセージ)を記録します。 クラスが見つからない場合は、スプーラーの依存関係がアプリケーションのPOMに含まれていることを確認してください。 欠損している依存関係は実行時まで検出されません。
-
動的スプーラーが正常にロードされると、監視エージェントは次の
INFO
メッセージ(Creating spooler type <type>: success.
)をログに記録します。 -
動的スプーラーのロードに失敗すると、監視エージェントは
ERROR
メッセージ(Creating spooler type <type>: failed
)をログに記録し、その後に理由(JARファイルがないことを示すclass not found
エラー)または詳細(問題の診断に役立つシステムの例外メッセージ)を記録します。 クラスが見つからない場合は、そのスプーラーに一致するJARファイルが、エージェントを起動するjava
コマンドのクラスパスに含まれていることを確認してください。
ヒント
predictionEnvironmentId
で設定されたエージェントがDataRobotに接続できる場合は、エージェントはログメッセージからの情報とともに、MLOps Spooler Channel Failed
イベントをDataRobot MLOpsに送信します。 These events appear in the event log on the Service Health page of any deployment associated with that prediction environment. これらのエラーを(メール、Slack、Webhookで)通知する通知チャネルとポリシーを作成することもできます。