Datarobotは、機械学習モデルを本番環境に展開するためのツールを提供します。DatarobotをNew Relicと統合することで、システム全体のマシンラーニングのパフォーマンスを計測、分析、トラブルシューティング、最適化することができるようになります。性能を厳密に観察することで、モデルの入力や出力、そして両者の関係性の変化に素早く対応できるようになります。
Datarobot InsightsからモデルのパフォーマンスメトリクスをNew Relicに送信することで、アルゴリズムのリアルタイムモニタリングが可能になります。メトリクスデータを使いやすいチャートで表示し、アルゴリズムの状態を一目で把握することで、トラブルシューティングを迅速かつ効率的に行うことができます。
DatarobotとNew Relicの統合
まず、DatarobotはKafkaトピックを使用して、機械学習アルゴリズムのパフォーマンスメトリクスからInsightsをストリーミングします。次に、New Relic コネクタ (別のアルゴリズム) が、Kafka トピックを特定の New Relic アカウント用のメトリクス データ ペイロードに変換します。
DatarobotはKafkaとEvent Flowsを使ってNew Relicにデータを送ります。
Datarobot の Event Flows では、Kafka のトピックに新しいメッセージが設定されると、設定した New Relic のコネクターアルゴリズムが呼び出されます。コネクターはメトリクスを変換して、New Relic アカウントに送信します。
DatarobotのデータをNew Relicに接続します。
インシデントインテリジェンスをDatarobot機械学習モデルと統合することで、機械学習モデルのパフォーマンスを監視できます。
New RelicでDatarobotのイベントフローのモニタリングを始めましょう。
- API キーを取得する: one.newrelic.com > (アカウント メニュー) > API キーに移動し、意味のある名前でアカウントのユーザー キーを作成します。後で使用できるように、この名前をメモしておいてください。API キーの詳細については、ドキュメントを参照してください。
- ダッシュボードを作成する: one.newrelic.com > Dashboardsに移動し、 Import dashboardsボタンをクリックします。JSON コードをコピーして [ Paste your JSON field code]に貼り付けます。
YOUR_ACCOUNT_IDの値をお客様のアカウントIDに更新してください。
{ "name": "Datarobot Dashboard for Default Metrics", "description": null, "permissions": "PUBLIC_READ_WRITE", "pages": [ { "name": "Datarobot Dashboard for Default Metrics", "description": null, "widgets": [ { "visualization": { "id": "viz.line" }, "layout": { "column": 1, "row": 1, "height": 3, "width": 4 }, "title": "Runtime Duration by Algorithm", "rawConfiguration": { "legend": { "enabled": true }, "nrqlQueries": [ { "accountId": YOUR_ACCOUNT_ID, "query": "SELECT average(algorithmia.duration_milliseconds) FROM Metric TIMESERIES FACET `algorithm_name` LIMIT 10 SINCE 1800 seconds ago" } ], "yAxisLeft": { "zero": true } }, "linkedEntityGuids": null }, { "visualization": { "id": "viz.line" }, "layout": { "column": 5, "row": 1, "height": 3, "width": 4 }, "title": "Throughput by Algorithm", "rawConfiguration": { "legend": { "enabled": true }, "nrqlQueries": [ { "accountId": YOUR_ACCOUNT_ID, "query": "SELECT count(algorithmia.duration_milliseconds) FROM Metric TIMESERIES FACET `algorithm_name` LIMIT 10 SINCE 1800 seconds ago" } ], "yAxisLeft": { "zero": true } }, "linkedEntityGuids": null } ] } ]}
- Datarobot Insights を New Relic 用に設定する: Datarobot を New Relic 用に設定する方法については、 Datarobot のドキュメント をご利用ください。
- New Relic のコネクタアルゴリズムを作成する: Python 3.8 を使用してコネクタアルゴリズムを作成します。アルゴリズムを生成するコードを書くのが初めての方は、 Datarobot の入門ガイド をご覧ください。
import Datarobotimport jsonfrom datetime import datetimefrom newrelic_telemetry_sdk import GaugeMetric, MetricClient
client = Datarobot.client()metric_client = MetricClient(os.environ["newrelic_api_key"])
def convert_str_timestamp_to_epoch(str_time):obj_time = datetime.strptime(str_time, "%Y-%m-%dT%H:%M:%S.%f")return int(obj_time.timestamp() * 1000)
def get_operational_metrics(payload):ALGORITHM_TAGS = {"algorithm_version","request_id","time","algorithm_name","session_id","algorithm_owner"}inference_metrics = {key: payload[key] for key in payload.keys() ^ ALGORITHM_TAGS}return inference_metrics
def send_to_newrelic(inference_metrics, insights_payload):newrelic_metrics = []for key, value in inference_metrics.items():name = "algorithmia." + keyepoch_time = convert_str_timestamp_to_epoch(insights_payload["time"])tags = { "algorithm_name": insights_payload["algorithm_name"], "algorithm_version": insights_payload["algorithm_version"], "algorithm_owner": insights_payload["algorithm_owner"], "request_id": insights_payload["request_id"], "session_id": insights_payload["session_id"],}
newrelic_metrics.append(GaugeMetric( name=name, value=value, tags=tags, end_time_ms=epoch_time))
response = metric_client.send_batch(newrelic_metrics)response.raise_for_status()
def apply(input):insights_payload = inputinference_metrics = get_operational_metrics(insights_payload)send_to_newrelic(inference_metrics, insights_payload)return None
これらの依存関係を含める。
algorithmia>=1.0.0,<2.0newrelic_telemetry_sdk==0.4.2
アルゴリズムの構築が完了したら、このサンプルペイロードでテストを行い、正常に動作することを確認してください。出力は次のようになります。
{"risk_score": 0.2,"duration_milliseconds": 8,"algorithm_version": "1.0.6","session_id": "rses-f28bb94a-5556-4aeb-a6d2-89493626bf4f","time": "2021-02-20T00:21:54.867231","algorithm_name": "credit_card_approval","request_id": "req-9f5345b4-a1cd-431c-a43a-bd2a06f4a6f4","algorithm_owner": "asli"}
- API キーを使って設定する: New Relic API キーを Datarobot のシークレットストアに追加する.
- DatarobotのイベントフローをNew Relicで設定する: Datarobotのドキュメント イベントベースの機械学習フローをNew Relicに送信するためのコネクタアルゴリズムの設定については、 を参照してください。
このドキュメントはインストールで役立ちましたか。
機械学習モデルのモニタリング
以下の手順で、マシンラーニングのデータをNew Relicで観察することができます。
- API キーを取得する: one.newrelic.com > (ユーザー メニュー) > API キーに移動します。意味のある名前でアカウントのユーザー キーを作成します。後で使用できるように、この名前をメモしておいてください。API キーの詳細については、ドキュメントを参照してください。
- ダッシュボードを作成する: one.newrelic.com > Dashboardsに移動し、 Import dashboardsボタンをクリックします。JSON コードをコピーして [ Paste your JSON field code]に貼り付けます。
YOUR_ACCOUNT_IDの値をお客様のアカウントIDに更新してください。
{ "name": "Datarobot Dashboard for Default Metrics", "description": null, "permissions": "PUBLIC_READ_WRITE", "pages": [ { "name": "Datarobot Dashboard for Default Metrics", "description": null, "widgets": [ { "visualization": { "id": "viz.line" }, "layout": { "column": 1, "row": 1, "height": 3, "width": 4 }, "title": "Runtime Duration by Algorithm", "rawConfiguration": { "legend": { "enabled": true }, "nrqlQueries": [ { "accountId": YOUR_ACCOUNT_ID, "query": "SELECT average(algorithmia.duration_milliseconds) FROM Metric TIMESERIES FACET `algorithm_name` LIMIT 10 SINCE 1800 seconds ago" } ], "yAxisLeft": { "zero": true } }, "linkedEntityGuids": null }, { "visualization": { "id": "viz.line" }, "layout": { "column": 5, "row": 1, "height": 3, "width": 4 }, "title": "Throughput by Algorithm", "rawConfiguration": { "legend": { "enabled": true }, "nrqlQueries": [ { "accountId": YOUR_ACCOUNT_ID, "query": "SELECT count(algorithmia.duration_milliseconds) FROM Metric TIMESERIES FACET `algorithm_name` LIMIT 10 SINCE 1800 seconds ago" } ], "yAxisLeft": { "zero": true } }, "linkedEntityGuids": null } ] } ]}
- アラート通知の設定: ダッシュボードをいくつか作成したら、データにアラートを出すことができます。チャートから NRQL アラート条件を作成するには、チャートメニュー をクリックし、次に アラート条件の作成 をクリックします。条件に名前を付けてカスタマイズしたら、それを既存のポリシーに追加したり、新しいポリシーを作成することができます。
- Get notified: アラート条件を作成したら、どのように通知するかを選択できます。通知チャンネルの設定方法については、 のドキュメントを参照してください 。
- インシデントの関連付け:通知に加えて、インシデントインテリジェンスを使用してインシデントを関連付けることができます。 決定を使用してインシデントを関連付ける方法については、ドキュメントを参照してください。