エージェントのユースケース¶
MLOpsエージェントを適用する方法の例については、以下の監視ユースケースを参照してください。
指標のレポート¶
予測環境をDataRobotにネットワーク接続できない場合、代わりにMLOpsエージェントのレポートをオフラインで使用できます。
-
予測環境で、FILESYSTEMスプーラータイプを使用するように、MLOpsライブラリを設定します。MLOpsライブラリは、
/disconnected/predictions_dir
などの設定されたディレクトリに指標をレポートします。 -
DataRobotにネットワーク接続されているマシン_で_エージェントを実行します。
-
FILESYSTEMスプーラータイプを使用し、ローカルディレクトリから入力を受け取るようにエージェントを設定します。例:
/connected/predictions_dir
。 -
ディレクトリの内容を
/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つのステップを実行します。
- スコアリングJARファイルを指定すると、データをスコアリングし、データフレームで結果を提供します。
- 特徴量のデータフレームと予測結果を単一のデータフレームに統合します。
mlops_spark_utils.MLOpsSparkUtils.reportPredictions
ヘルパーを呼び出し、マージされたデータフレームを使用して予測をレポートします。
関数がデータフレームを介してデータを取得する限り、任意のモデルで生成された予測をmlops_spark_utils.MLOpsSparkUtils.reportPredictions
を使用してレポートできます。
通信チャネルとしてRabbitMQを使用したこの例には、チャネル設定が含まれています。Sparkは分散フレームワークであるため、DataRobotにはRabbitMQやAWS SQSのようなネットワークベースのチャネルが必要です。こうしたチャネルにより、ワーカーが実行されているノードに関係なく、監視データを同じチャネルに送信できます。
Sparkの前提条件¶
次の手順は、Sparkの監視ユースケースを実行するために必要な前提条件の概要を示しています。
-
コンテナ内でスプーラー(この例ではRabbitMQ)を実行します。
docker run -d -p 15672:15672 -p 5672:5672 --name rabbit-test-for-medium rabbitmq:3-management
このコマンドは、RabbitMQの管理コンソールも実行します。Webブラウザーを使用してアクセスします。http://localhost:15672
-
MLOpsエージェントを設定して開始します。
- エージェントtarballで提供されるクイックスタートガイドに従ってください。
- RabbitMQと通信するようにエージェントを設定します。
-
以下に一致するようにエージェントチャネル設定を編集します。
type: "RABBITMQ_SPOOL" details: {name: "rabbit", queueUrl: "amqp://localhost:5672", queueName: "spark_example" }
-
mvnを使用する場合は、サンプルをテストする前に、以下を実行してdatarobot-mlops JARをローカルのmvnリポジトリにインストールします。
install_jar_into_maven.sh
。このスクリプトはexamples/java/
ディレクトリにあります。 -
make
を使用して、必要なJava JARファイルを作成します。 -
例えば、
JAVA_HOME
環境変数を設定します。export JAVA_HOME=/usr/libexec/java_home -v 1.8
-
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のサンプルを実行します。
-
モデルパッケージを作成し、デプロイを初期化します。
`create_deployment.sh`
または、DataRobot UIを使用して外部モデルパッケージを作成し、デプロイすることもできます。
-
デプロイの環境変数と、デプロイの作成から返されたモデルをコピーしてシェルに貼り付けることにより、それらを設定します。
export MLOPS_DEPLOYMENT_ID=<deployment_id>; export MLOPS_MODEL_ID=<model_id>
-
予測を生成し、統計をDataRobotにレポートします。
run_example.sh
パスにSparkビンディレクトリを配置し、次のコマンドを実行する必要がある場合があります。
env SPARK_BIN=/opt/ml/spark-2.4.5-bin-hadoop2.7/bin ./run_example.sh
-
スプーラータイプ(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
を実行してコードを再コンパイルします。
-