Skip to content

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=value2key1=value1:key2=value2に)。
MLOPS_SPOOLER_CONFIG_KEY_VALUE_SEPARATOR スプーラー設定文字列内のキーと値のペア間のデフォルト値=を置き換える区切り文字(たとえば、key1=value1key1: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
docker run \
-p 8080:8080 \
-v <local path to model package folder>/:/tmp/ \
-e MLOPS_SPOOLER_TYPE="FILESYSTEM" \
-e MLOPS_FILESYSTEM_DIRECTORY="/tmp/" \
datarobot-portable-prediction-api 

PPSの起動について詳しくは、コードスニペットでのPPSの起動のドキュメントを参照してください。

Amazon SQS

Amazon SQSをスプーラーとして使用する場合、次の2つの方法のいずれかで資格情報セットを提供できます。

  • AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_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ベースの認証を使用するには、以下のシェルフラグメントの例を使用して、次の環境変数を設定します。

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 AD 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-mlopsmlops-agentのパッケージには、デフォルトですべてのスプーラータイプが含まれていました。ただし、その設定が未使用であってもコードが常に存在していました。

プロジェクトオブジェクトモデルにスプーラーの依存関係を含める

MLOps Javaアプリケーションでサードパーティのスプーラーを使用するには、datarobot-mlopsと一緒に、必要なスプーラーをPOM(Project Object Model)ファイルに依存関係として含める必要があります。

POMファイルでの依存関係
<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 
Kafkaスプーラーを使ったクラスパス
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で)通知する通知チャネルとポリシーを作成することもできます。