Skip to content

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

MLOpsライブラリとエージェントのスプーラー設定

MLOpsライブラリはスプーラーを介してエージェントと通信します。そのため、エージェントライブラリスプーラーの設定が一致していることが重要です。 MLOpsエージェントとライブラリのスプーラー設定を構成する場合、一部の設定は必須であり、一部はオプションです(オプションの設定は、以下の各表に示されています)。 必要な設定は、プログラムで設定することも、一般設定およびスプーラー固有の設定セクションに記載されている環境変数を使用して設定することもできます。 環境変数による設定とプログラムによる設定の両方が混在する場合は、環境変数による設定が優先されます。

MLOpsエージェントとライブラリの通信は、次のスプーラーのいずれかを使用するように設定できます。

MLOpsエージェントの設定

mlops.agent.conf.yamlで別のサービスとしてエージェントを実行する場合は、channelConfigsセクションのコメントを解除し、必須の設定を入力して、スプーラー設定を指定します。 channelConfigsの設定の詳細については、MLOpsエージェントの設定を参照してください。

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ライブラリが監視エージェントとの通信に使用するスプーラーのタイプ。 有効なスプーラータイプは次のとおりです。
  • FILESYSTEM:ローカルのfilesystemスプーラーを有効にします。
  • SQS:AmazonSQSスプーラーを有効にします。
  • RABBITMQ:RabbitMQスプーラーを有効にします。
  • KAFKA:ApacheKafkaまたはAzureEventHubsスプーラーを有効にします。
  • PUBSUB:Google Cloud Pub/Subスプーラーを有効にします。
  • NONE:MLOpsライブラリのレポートを無効にします。
  • STDOUT:レポートされたメトリックをエージェントに転送するのではなく、stdoutに出力します。
  • API:DataRobot APIスプーラを有効にする。
オプション設定
MLOPS_SPOOLER_DEQUEUE_ACK_RECORDS 処理が完了するまで、監視エージェントがレコードをデキューしないことを確認します。 このオプションをtrueに設定して、接続エラーによってレコードが削除されないようにします。 このオプションを有効化することをお勧めします。 スプーラーチャネルの場合、デキュー操作は次のように動作します。
  • SQS:メッセージを削除します。
  • RABBITMQおよびPUBSUB:メッセージを完了として認識します。
  • KAFKAおよびFILESYSTEM:オフセットを移動します。
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 DataRobotにレポートするメトリックを保存するディレクトリ。 ディレクトリを作成する必要があります。プログラムはそれを作成しません。
オプション設定
MLOPS_FILESYSTEM_MAX_FILE_SIZE デフォルトの最大ファイルサイズ(バイト単位)を上書きします。
デフォルト:1GB
MLOPS_FILESYSTEM_MAX_NUM_FILE デフォルトの最大ファイル数を上書きします。
デフォルト:10ファイル

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 クライアントに使用するTLSバージョン。 TLSバージョンはサーバーバージョンと一致する必要があります。

備考

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サブスクリプション名。

Apache Kafka

次の環境変数を使用してApacheKAFKAスプーラーを設定します。

特徴量 説明
MLOPS_KAFKA_TOPIC_NAME 生成または使用する特定のKafkaトピックの名称。
ApacheKafkaリファレンス主な概念と用語
MLOPS_KAFKA_BOOTSTRAP_SERVERS エージェントが接続するサーバーのリスト。 アップストリームで使用されるbootstrap.servers設定と同じ構文を使用します。
ApacheKafkaリファレンスbootstrap.servers
オプション設定
MLOPS_KAFKA_CONSUMER_POLL_TIMEOUT_MS メッセージを処理してDataRobotに送信する前にメッセージを消費するまで待機する時間
デフォルト値:3000ミリ秒。
MLOPS_KAFKA_CONSUMER_GROUP_ID このコンシューマーが属するコンシューマーグループを識別する一意の文字列。
デフォルト値tracking-agent
ApacheKafkaリファレンスgroup.id
MLOPS_KAFKA_CONSUMER_MAX_NUM_MESSAGES メッセージを処理し、結果をDataRobot MLOpsに送信する前に、一度で使用するメッセージの最大数。
デフォルト値:500
ApacheKafkaリファレンスmax.poll.records
MLOPS_KAFKA_SESSION_TIMEOUT_MS コンシューマーグループのクライアント障害を検出するために使用されるタイムアウト。
ApacheKafkaリファレンスsession-timeout.ms
MLOPS_KAFKA_MESSAGE_BYTE_SIZE_LIMIT チャネルにイベントを生成するときの最大のチャンクサイズ。
デフォルト値:1000000バイト
MLOPS_KAFKA_DELIVERY_TIMEOUT_MS メッセージを永続的に失敗したと見なす前にメッセージを送信するための絶対上限時間。
ApacheKafkaリファレンスdelivery.timeout.ms
MLOPS_KAFKA_REQUEST_TIMEOUT_MS クライアントが再試行する前に要求への応答を待機する最大時間。
ApacheKafkaリファレンスrequest.timeout.ms
MLOPS_KAFKA_METADATA_MAX_AGE_MS クライアントがクラスターメタデータを更新する前に待機する最大時間(ミリ秒単位)。
ApacheKafkaリファレンスmetadata.max.age.ms
MLOPS_KAFKA_SECURITY_PROTOCOL ブローカーへの接続に使用されるプロトコル。
ApacheKafkaリファレンスsecurity.protocol有効な値。
MLOPS_KAFKA_SASL_MECHANISM クライアントがブローカーでの認証に使用するメカニズム。
ApacheKafkaリファレンスsasl.mechanism
MLOPS_KAFKA_SASL_JAAS_CONFIG (Javaのみ) JAAS設定ファイルで使用される形式の接続設定。
ApacheKafkaリファレンスsasl.jaas.config
MLOPS_KAFKA_SASL_LOGIN_CALLBACK_CLASS (Javaのみ) カスタムログインハンドラークラス。
ApacheKafkaリファレンスsasl.login.callback.handler.class
MLOPS_KAFKA_CONNECTIONS_MAX_IDLE_MS (Javaのみ) クライアントが非アクティブな接続を閉じるまでの最大時間(ミリ秒単位)。 この値は、ネットワークインフラストラクチャが課す可能性のあるタイムアウトよりも低く設定する必要があります。
ApacheKafkaリファレンスconnections.max.idle.ms
MLOPS_KAFKA_SASL_USERNAME (Pythonのみ) PLAINおよびSASL-SCRAM-*メカニズムで使用するSASLユーザー名。
リファレンスlibrdkafkasasl.usernameの設定を参照してください。
MLOPS_KAFKA_SASL_PASSWORD (Pythonのみ) PLAINおよびSASL-SCRAM-*メカニズムで使用するSASLパスワード。
リファレンスlibrdkafkasasl.passwordの設定を参照してください。
MLOPS_KAFKA_SASL_OAUTHBEARER_CONFIG (Pythonのみ) OAuthログインコールバックを渡すためのカスタム設定。
リファレンスlibrdkafkasasl.oauthbearer.configの設定を参照してください。
MLOPS_KAFKA_SOCKET_KEEPALIVE (Pythonのみ) ネットワーク接続でTCPキープアライブを有効にし、これらの接続を介してパケットを定期的に送信して、非アクティブが原因で必要な接続が閉じられないようにします。
リファレンスlibrdkafkasocket.keepalive.enableの設定を参照してください。

DataRobot API

DataRobot APIスプーラーを設定するプロセスは、一般的なスプーラー設定とは異なります。 通常、監視エージェントはスプーラーに接続して情報を収集し、その情報をDataRobot MLOpsに送信します。 DataRobot APIを使用すると、実際にスプーラーに接続することはなく、MLOpsライブラリの呼び出しに変更はありません。 呼び出しはスプーラーや監視エージェントには行われず、HTTPS経由でDataRobot MLOpsに直接行われます。 この場合、複雑なスプーラーや監視エージェントを設定する必要はありません。

次のパラメーターを使用して、DataRobot Python APIスプーラーを設定します。

パラメーター 説明
MLOPS_SERVICE_URL MLOpsにアクセスするためのサービスURLを、YAML設定ファイルで指定する代わりに、この環境変数で指定します。
MLOPS_API_TOKEN DataRobot APIキー
VERIFY SSL(ブーリアン) (オプション)クライアントがSSL接続を検証する必要があるかどうかを決定します。 デフォルトでTrueに設定されます。
MLOPS_HTTP_RETRY (オプション)呼び出しに成功するまでに再試行する回数。
API_POST_TIMEOUT_SECONDS (オプション)タイムアウト値を設定します。
API_HTTP_RETRY_WAIT_SECONDS (オプション)タイムアウトしてから再試行するまでの待機時間を決定します。

Azure Event Hubs

DataRobotでは、既存のKafkaスプーラータイプを活用することによって、Microsoft Azure Event Hubsを追跡エージェントスプーラーとして使用できます。 この設定については、Apache KafkaアプリケーションのAzure Event Hubsの使用を参照してください{ target=_blank }。

備考

Azureは、Event HubsのKafkaプロトコルをスタンダードおよびプレミアム価格帯でのみサポートします。 ベーシック価格帯は、Kafka APIサポートがないので、監視エージェント向けのスプーラーとしてサポートされていません。 詳細については、Azure Event Hubsのクォータと制限を参照してください。

スプーラーとして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' 

備考

上記の環境変数の値では、環境変数を設定するときに特殊文字$"がシェルによって解釈されないように、一重引用符(')を使用してください。 DataBricksを介して環境変数を設定している場合は、使用しているプラットフォームのバージョンの特殊文字をにエスケープする方法に関する ガイドラインに従う必要があります。

Event Hubs向けのAzure Active Directory OAuth 2.0

DataRobotは、Event Hubsの認証用にAzure Active Directory OAuth 2.0もサポートしています。 この認証方法を使用するには、新しいアプリケーション登録を作成して、それにEvent Hubs Namespace(すなわち、Azure Event Hubsのデータオーナー)の必要な権限を持たせる必要があります。 詳細については、Event Hubsのリソースにアクセスするには、Azure ADでアプリケーションの認証をするを参照してください。

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ファイルを動的にロードできます。 この設定は、 Amazon SQSRabbitMQGoogle Cloud Pub/Sub、および Apache Kafkaスプーラーに必須です。 ネイティブでサポートされているファイルシステムスプーラーは、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に含まれています。 これらは DataRobot MLOpsエージェントのMaven公開リポジトリで、ダウンロード可能なJARファイルとして個別に入手することもできます。

実行可能なエージェント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に送信します。 これらのイベントは、その予測環境に関連付けられている デプロイの サービスの正常性ページのイベントログに表示されます。 これらのエラーを(メール、Slack、Webhookで)通知する通知チャネルとポリシーを作成することもできます。


更新しました March 3, 2024