Skip to content

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

エージェントのユースケース

MLOpsエージェントを適用する方法の例については、以下の監視ユースケースを参照してください。

指標のレポート

予測環境をDataRobotにネットワーク接続できない場合、代わりにMLOpsエージェントのレポートをオフラインで使用できます。

  1. 予測環境で、FILESYSTEMスプーラータイプを使用するように、MLOpsライブラリを設定します。MLOpsライブラリは、/disconnected/predictions_dirなどの設定されたディレクトリに指標をレポートします。

  2. DataRobotにネットワーク接続されているマシン_で_エージェントを実行します。

  3. FILESYSTEMスプーラータイプを使用し、ローカルディレクトリから入力を受け取るようにエージェントを設定します。例:/connected/predictions_dir

  4. ディレクトリの内容を/disconnected/predictions_dir接続先の環境に移行します/connected/predictions_dir

スコアリングコードモデルのレポート

MLOpsエージェントのレポートを使用して、ダウンロードしたスコアリングコードモデルの監視指標をDataRobotに送信することもできます。このユースケースの例をtarballで参照してくださいexamples/java/CodeGenExample

Sparkの環境のモニタリング

MLOpsエージェントの一般的なユースケースは、Spark環境でのスコアリングのモニタリングで、スコアリングはSparkで行われ、予測と特徴量をDataRobotにレポートしたいと考えています。通常、Sparkはマルチノード設定を使用するため、MLOpsでスプールファイルチャネルを使用することは困難です。一貫性のある共有ファイルシステムは、Sparkのインストールでは一般的ではありません。

これを回避するには、RabbitMQまたはAWS SQSのようなネットワークベースのチャネルを使用します。これらのチャネルは、複数のライターおよび単一(または複数)のリーダーと連携できます。

以下の例では、MLOps Spark Utilモジュールを使用して、Sparkシステム上でエージェント監視を設定する方法を説明し、Sparkフレームワークで行われたスコアリング結果を報告する方法を提供します。MLOpsのJavaサンプルディレクトリにあるMLOpsSparkUtilsモジュールのドキュメントを参照してくださいexamples/java/SparkUtilsExample/

Sparkサンプルのソースコードは、次の3つのステップを実行します。

  1. スコアリングJARファイルを指定すると、データをスコアリングし、データフレームで結果を提供します。
  2. 特徴量のデータフレームと予測結果を単一のデータフレームに統合します。
  3. mlops_spark_utils.MLOpsSparkUtils.reportPredictionsヘルパーを呼び出し、マージされたデータフレームを使用して予測をレポートします。

関数がデータフレームを介してデータを取得する限り、任意のモデルで生成された予測をmlops_spark_utils.MLOpsSparkUtils.reportPredictionsを使用してレポートできます。

通信チャネルとしてRabbitMQを使用したこの例には、チャネル設定が含まれています。Sparkは分散フレームワークであるため、DataRobotにはRabbitMQやAWS SQSのようなネットワークベースのチャネルが必要です。こうしたチャネルにより、ワーカーが実行されているノードに関係なく、監視データを同じチャネルに送信できます。

Sparkの前提条件

次の手順は、Sparkの監視ユースケースを実行するために必要な前提条件の概要を示しています。

  1. コンテナ内でスプーラー(この例ではRabbitMQ)を実行します。docker run -d -p 15672:15672 -p 5672:5672 --name rabbit-test-for-medium rabbitmq:3-management このコマンドは、RabbitMQの管理コンソールも実行します。Webブラウザーを使用してアクセスします。http://localhost:15672

  2. MLOpsエージェントを設定して開始します。

    • エージェントtarballで提供されるクイックスタートガイドに従ってください。
    • RabbitMQと通信するようにエージェントを設定します。
    • 以下に一致するようにエージェントチャネル設定を編集します。

      type: "RABBITMQ_SPOOL"
      details: {name: "rabbit", queueUrl: "amqp://localhost:5672", queueName: "spark_example" }
      
  3. mvnを使用する場合は、サンプルをテストする前に、以下を実行してdatarobot-mlops JARをローカルのmvnリポジトリにインストールします。install_jar_into_maven.sh。このスクリプトはexamples/java/ディレクトリにあります。

  4. makeを使用して、必要なJava JARファイルを作成します。

  5. 例えば、JAVA_HOME環境変数を設定します。

    export JAVA_HOME=/usr/libexec/java_home -v 1.8

  6. Sparkをローカルにインストールします。

    • Spark 2.4.5(Hadoop 2.7用に構築)をローカルマシンにダウンロードします。
    • tarball(tar xvf ~/Downloads/spark-2.4.5-bin-hadoop2.7.tgz)を解凍します。
    • 作成されたspark-2.4.5ディレクトリで、Sparkクラスターを開始します。
      sbin/start-master.sh -i localhost`
      sbin/start-slave.sh -i localhost -c 8 -m 2G spark://localhost:7077
      
    • インストールが成功したことを確認します。

      bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://localhost:7077 --num-executors 1 --driver-memory 512m --executor-memory 512m --executor-cores 1 examples/jars/spark-examples_2.11-2.4.5.jar 10
      

Sparkのユースケース

上記の前提条件を満たした後、Sparkのサンプルを実行します。

  1. モデルパッケージを作成し、デプロイを初期化します。

    `create_deployment.sh`
    

    または、DataRobot UIを使用して外部モデルパッケージを作成し、デプロイすることもできます。

  2. デプロイの環境変数と、デプロイの作成から返されたモデルをコピーしてシェルに貼り付けることにより、それらを設定します。

    export MLOPS_DEPLOYMENT_ID=<deployment_id>; export MLOPS_MODEL_ID=<model_id>

  3. 予測を生成し、統計をDataRobotにレポートします。

    run_example.sh

    パスにSparkビンディレクトリを配置し、次のコマンドを実行する必要がある場合があります。

    env SPARK_BIN=/opt/ml/spark-2.4.5-bin-hadoop2.7/bin ./run_example.sh

  4. スプーラータイプ(SparkジョブとMLOpsエージェント間の通信チャネル)を変更する場合:

    • src/main/scala/com/datarobot/dr_mlops_spark/Main.scalaの下にあるScalaコードを編集します。

    • 次の行を変更して、必要なチャネル設定を含めます。

      val channelConfig = "output_type=rabbitmq;rabbitmq_url=amqp://localhost;rabbitmq_queue_name=spark_example"
      
    • makeを実行してコードを再コンパイルします。


更新しました February 22, 2022
Back to top