本記事はDataRobot version 6.2をベースに作成されております。versionによっては画面の構成が多少変わります。
DataRobot Machine Learning Operations (ML Ops)を使用すると、本番での機械学習モデルのデプロイ、監視、管理を行うための中央ハブが得られ、データサイエンスチームへの投資を最大化し、リスクとコンプライアンス(規制)を管理することができます。
この記事では、典型的なライフサイクルを通してDataRobot MLOpsを使用するためのにステップに分けて紹介します。まず、デプロイされたモデルを監視・管理するためにMLOpsを利用する際に、主に利用されるメインページの紹介から始めます。次にモデルとデータをMLOpsに取り込むためのステップを紹介します。
まず、モデルをモデルパッケージとして MLOps のモデルレジストリにアップロードします。次に、モデルパッケージからデプロイを作成する方法を確認します。 次に、データ・ドリフトを使用して、すべてのモデル特徴量の時間的変化について予測データを監視する方法を示します。これには、精度を追跡できるように実績実際の結果をアップロードするステップが含まれています。 そこから、パフォーマンスが低下した場合にモデルを置き換える方法を示します。最後に、MLOpsガバナンスを使用したモデル開発および実装ワークフローのためのプロセス制御フレームワークの活用について説明します。
デプロイ ダッシュボードは、MLOps ユーザーインターフェースにアクセスしたときに最初に表示されるページです。これはすべてのデプロイのインベントリを表示します。
デプロイ によって、スコアリングや推論のリクエストに利用できます。デプロイはモデルとは別のエンティティです。デプロイを通じてモデルにアクセスするため、予測データからモデルにアクセスする方法を中断することなく、モデルを新しいモデルバージョンに置き換えることができます。これにより、MLOpsは元となるモデルのバージョンを個別に監視し、デプロイのモデルの履歴を追跡することもできます。
デプロイのダッシュボードにおいて、インベントリの上部に、すべてのアクティブなデプロイの使用状況とステータスの要約が色分けされた状態の指標とともに表示されます。
サマリーの下には、各配置の個別レポートが表示されます。配置の名前の横には、3 つの主なコアモニタリングの項目における各デプロイの相対的な状態が表示されます。サービスの正常性、データ ドリフト、精度です。さらに、表示される列を切り替えて、ガバナンスの観点に関連する情報を持つ配置を表示したり、予測の正常性の情報を表示したりすることができます。これらの表示はレンズと呼んでいます。
予測活動のトラフィックに関するいくつかのメトリクスと、モデルを管理するために利用可能なオプションのメニューが表示されます。
詳細な情報をすべて見るためには参照したいデプロイを選択し、概要ページから移動し、デプロイの監視と管理のための機能を提供するいくつかのデプロイの詳細ページの最初のページです。
デプロイの概要 ページは、 デプロイを作成する際に提供した情報やモデルの置き換え作業など、配置を説明するモデル固有のサマリーを提供します。
サービス正常性タブ、予測要求に迅速かつ確実に対応するデプロイの能力に関するメトリクスを追跡します。これにより、速度と応答時間に影響を与えるボトルネックを特定するのに役立ちます。また、スループットとキャパシティの評価にも役立ちます。これは、良好なパフォーマンスとレイテンシーレベルをサポートするために適切なリソースプロビジョニングを行うために重要です。
次はデータドリフトページです。トレーニングデータ(aka “learning data”) とデプロイに加えられる予測データ (aka “inference data”) を活用することで、MLOpsはデータドリフトを評価することができ、予測のための入力データがモデルの訓練に使用されたデータとどのように異なっていたかを計算します。
精度ページはモデルの予測がどれだけ正確かを示しています。モデルが行う予測から実際に発生した結果をキャプチャすることは、すぐに明らかになる場合もあれば、数日、数週間、または数ヶ月かかる場合もあります。いずれにしても、予測を取得してアップロードすると、MLOpsは実際の結果を作成した予測と関連づけ、計算された精度をレビューと分析のために提示します。
インテグレーション、 新しいデータをスコアするためにDataRobotへのAPIコールを行うために必要なコードの必要な行のPython言語のコードサンプルを提供しています。多くの場合、これをコピーしてソフトウェアプログラムに貼り付けるだけで、数分でDataRobotのAPIに統合され、実行可能になります。
最後に設定は、 デプロイと基礎となるモデルに関連するデータセットをアップロードして設定するためのインターフェイスを提供します。これにより、デプロイにデータを追加したり、アラートでデプロイを監視するための通知設定を設定したり、予測警告を有効にしたりすることができます。
デプロイの作成は、モデルパッケージを作成し、モデルレジストリにアップロードすることから始まります。
モデルレジストリは、すべてのモデルパッケージの中央ハブであり、パッケージには、ファイル、ファイルのセット、モデルに関する情報が含まれています。DataRobot MLOpsは、以下のように柔軟に対応できます。
この3つのケースではモデルパッケージを作成し、そのパッケージがモデルレジストリに登録されると、そこからデプロイメントを作成することができます。
モデルレジストリを使用すると、デプロイしたモデルの種類に関係なく、一貫したデプロイ、置換、および管理の経験を得ることができます。構築されたモデルがDataRobot AutoMLまたはAutoTSである場合、リーダーボードからデプロイが作成されると、モデルパッケージは自動的にモデルレジストリのパッケージリストに追加されますが、そうでない場合、パッケージは手動でパッケージリストに追加されます。
モデルパッケージの作成は簡単なプロセスです。以下の手順では、3 つのモデルタイプのそれぞれについて、モデルパッケージの作成と配置について説明します。
主な違いは、DataRobotモデルやカスタムモデルは、予測要求を受け取ってAPIコールを介してMLOps内で処理するのに対し、外部モデルは外部環境で予測値を処理し、その予測値をMLOpsに戻している点です。MLOpsエージェントとは、お客様の環境からMLOps環境に戻って通信するためにインストールするソフトウェアで、MLOpsに転送された予測値を追跡します。このため、統合ページに表示されるコード サンプルは、Agentソフトウェアと DataRobot またはカスタム モデルでは異なります。しかし、3つのケースすべてにおいて、モデルパッケージからデプロイをソースし、MLOpsを利用してモデルが行うデータのドリフトと予測を監視し、モデルを同じように管理します。
DataRobot内に構築されたモデルについては、リーダーボードに移動し、デプロイしたいモデルをクリックします。次のタブをクリックします、予測 > デプロイ。 以下の3つの展開オプションがあります。
この3つのケースでは、モデル・レジストリにモデル・パッケージが作成されます。
オプション1を使用してモデルパッケージを作成した場合、モデルパッケージファイルをファイルシステムに保存した後、モデルレジストリからアップロード先のMLOps環境にアップロードします。
MLOpsでは、あらかじめ訓練されたモデルをDataRobotやMLOps環境に持ち込むことができます。これらのモデルはカスタム予測モデルと呼ばれます。ここでの推論は、サービスの予測要求に対してモデルが実装されていることを意味します。カスタム推論モデルをアップロードすることで、実行環境や実行に必要なライブラリのバージョンを指定し、予測要求を受け付ける準備ができているかどうかをテストすることができます。テストに合格したら、デプロイするか、モデルレジストリにパッケージを追加してください(そこからさらに編集を行い、準備ができたらデプロイします)。DataRobotは、Python、Scala、Javaなど様々なコーディング言語で構築されたカスタムモデルをサポートしています。
カスタムモデルの使用は、このドキュメントの範囲を超えています。DataRobotのライセンスをお持ちのお客様は、アプリ内のプラットフォーム ドキュメントの「カスタム モデル ワークショップ」のセクションに詳細な情報があります。
MLOpsエージェントを使用すると、外部モデル、つまりDataRobot MLOpsの外部で実行されているモデルを監視および管理することができます。この機能を使用すると、これらのモデルからの予測や情報をDataRobot MLOpsデプロイメントの一部としてレポートすることができます。同じモデル管理ツールを使用して、モデルが実行されている場所に関係なく、精度、データドリフト、予測分布、レイテンシーなどを監視することができます。
MLOpsエージェントが監視する外部モデルのモデルパッケージを作成するために、モデル登録 > モデルパッケージ をクリックしてください。そして、新しいパッケージと 新しい外部モデルパッケージに移動してください。
結果のダイアログボックスで、統計情報を取得するMLOPsエージェント監視モデルに関連するフィールドを入力します。(エージェント・ソフトウェアは、モデルとMLOps外部モデル展開との間のブリッジとして機能するために、お使いの環境にインストールされている必要があります。エージェントを設定するための完全な情報は、他の記事や MLOps エージェントの tarball に含まれているドキュメントで提供されています。必要に応じてMLOpsのagentファイルの情報のインテグレーションタブやブラウザ内のアプリプラットフォームのDocをご覧ください
モデルパッケージがモデルレジストリにある場合は、モデルパッケージの右端にあるメニューに移動し、デプロイを選択するだけです。
次のページでは、予測とモデルの精度を追跡するために必要な残りの情報を入力します。
モデルセクションに表示される情報(名前やターゲットなど)は、モデルパッケージファイルの内容からすでに提供されています。
同様に、学習セクションでは、モデルを訓練するために使用されたデータもすでに知られていることがわかります。DataRobotは、AutoMLまたはAutoTSプロジェクトを作成したときの情報を保存しています。
推論 セクションでは予測値の取得に関する情報が記載されており、まだ部分的にしか完成していないことがわかります。DataRobotはAPIコールを介して受信した予測データを、提供されたURLエンドポイントに保存します。 DataRobotインスタンスがマネージドAIクラウドでホストされている場合、サブドメイン名はアカウントから派生し、オンプレミスでインストールされている場合、エンドポイントはドメインでホストされます。
予測値をキャプチャすることで、DataRobotは、入力される予測データの性質がトレーニングデータとどのように異なるかを評価することができます。 その違いを捉えるために、 データドリフトの有効化をクリックします。セグメント分析を実行するボタンにチェックを入れると、DataRobotはリクエストを行ったユーザーの権限レベルやリクエスト元のIPアドレスなど、受信データの特徴を特定することができます。
しかし、予測精度を追跡したいのであれば、モデルが行う予測を実際の結果と関連付けする必要があります。一般的に、実際の結果は数日後、数週間後、数ヶ月後までわかりません。これらは単に実績としています。ここで、予測値を実際の値と関連付けるための識別子が必要になります。関連付けID は各予測を一意に識別し、リクエストデータの行に追加される追加の列に表示されます。実際のデータセットをアップロードするときには、関連付けIDと実際に起こったことの実際の値を提供します。
実績の出力の最後のセクションに移ります。 デプロイが作成され実績が取得されたあと、それをアップロードするためにデータの追加をクリックします。あとは画面に従い数ステップです。実績のアップロード
あとは、デプロイに名前を付け、[デプロイを作成]をクリックして、配置の重要度を指定するだけです。これで新しいデプロイが作成されます。これでデプロイされたモデルが予測要求を受信する準備が整い、MLOps が予測の追跡を開始します。 モデルの重要度の設定の詳細については以下を参照してください Step 9: ガバナンス
上記で示唆したように、モデルの種類によってはデプロイを作成するための近道があります。DataRobotモデルの場合は、リーダーボードから直接デプロイすることができます。カスタムモデルの場合はカスタムモデルワークショップからデプロイできます。
デプロイを行い、予測を行っていますが、モデルのパフォーマンスを確認したいと思います。そのためには、実際の結果データをアップロードして、行われた予測と関連付ける必要があります。
モデルの精度を追跡するには、AIカタログか、API経由でアップロード、あるいはドラッグ&ドロップでデータをインポートする必要があります。ここではAIカタログを経由した説明をします。AIカタログは、お客様専用のストレージ・リソースであり、さまざまなデータ・ソースからのデータ・セットを一元的に管理する方法を提供します。私たちは、あなたの実際のデータをここにアップロードして保存すると言うことを除いて、それが持っている多くの機能に入ることはありません。AI Catalog選択し、カタログへの追加をします。すると アップロードするデータのソースを選択します。
デプロイダッシュボード画面へ戻りデプロイを選択してください。デプロイを作成した前のページに戻るには、[設定]メニュー項目をクリックして、[実績]セクションが有効になっていることを確認します。
データの追加をクリックし、AIカタログから実績データを検索します。ここから、以下を指定します:実績のレスポンスカラム(実際の結果を保持します)、行われた予測にリンクするための関連付けIDカラム、結果からどのようなアクションが取られたかを記録するためのオプションのカラム名、実際の値がいつ取得されたかを追跡したい場合は、タイムスタンプ付きのオプションのカラム名です。
この情報を入力終えたらアップロードをクリックします。精度 タブをクリックすると、実際の結果と比較して、予測がどのように実行されるかがわかります。
サービスの正常性は、予測要求に迅速かつ確実に対応するデプロイの能力に関するメトリクスを追跡します。これにより、速度と応答時間に影響を与えるボトルネックを特定するのに役立ちます。また、スループットとキャパシティの評価にも役立ちます。これは、良好なパフォーマンスとレイテンシレベルをサポートするために適切なリソースプロビジョニングを行うために重要です。
大抵の場合、モデルは時間の経過とともに劣化していきます。データの構成や種類が変わったり、データの収集や保存方法が変わったりすることがあります。
精度ページにおいて、この場合、モデルがかなり一貫して実際の値を過小予測していることが下の画像でわかります。ほとんどの場合、劣化した予測はデータの構成の変化の結果であると考えられます。
データドリフトページは、最初にモデルを訓練するために使用したデータから、予測データが時間の経過とともにどのように変化するかを示しています。左側のプロットでは、緑、黄、赤の各ドットが特徴を表しています。X軸には特徴の重要度が、Y軸にはデータドリフトの深刻度の計算が示されています。右側のプロットでは、元の訓練データが紺色、最近の予測データが水色で、それぞれの選択された特徴の値の範囲が示されています。いくつかの例を見ると、データの構成がどのように変化したかがわかります。
そのため、必然的に最新のデータに基づいてモデルを再訓練し、現在デプロイ中のモデルを新しいモデルに置き換える必要があります。DataRobot MLOpsは、モデルを交換するためのシンプルなインターフェースを提供することで、これを簡単に実現します。そして、これはサービスを中断することなく、シームレスに行われます。
モデルをリプレイスするために、デプロイ > デプロイリスト そして、モデルの置換を選択します。ただし、このオプションはデプロイの所有者である場合にのみ選択できます。配置の行のデプロイダッシュボードの同じメニューからモデルの置換を選択することもできます。
次に、別のモデルパッケージファイルをアップロードするか、モデルレジストリ内のモデルを参照することで、DataRobotに使用したいモデルを指定します。DataRobotはデータタイプが一致しているかどうかをチェックし、データドリフトで見られる劣化など、変更の理由を示すように促します。そして、承諾 して 置換をクリックし、変更を保存します。
ガバナンスワークフローを有効にすると、管理担当者には、保留中の変更が承認確認準備ができたことが通知され、承認されると更新が行われます。モデル置き換えのためにガバナンスワークフローを有効にしていない場合、更新はデプロイに即時に行われます。
これで、デプロイメント 概要 ページの 履歴 列に新しいモデルが表示されるようになりました。サービスの健全性、データのドリフト、および精度ページを移動すると、同じドロップダウンメニューが表示され、探索したいモデルのバージョンを選択することができます。
すべての機械学習モデルは時間の経過とともに劣化する傾向があります。DataRobotはリアルタイムでデプロイメントを監視していますが、モデルの正常性を確認するためにいつでもチェックすることができます。さらに支援するために、DataRobotは通知システムで自動監視を提供しています。サービスの正常性、受信予測データ、モデルの精度が定義された許容レベルを超えた場合にアラートを出すように通知を設定することができます。
通知の条件を構成するには、デプロイ> 設定メニューに移動し、通知をクリックします。
メールでのコントロール通知配信には、3つのオプションがあります。
モニタリングタブでは、通知のトリガーとなる値を正確に設定します。オーナーの役割を持つユーザーはこれらの設定を変更することができますが、配置が共有されているユーザーは誰でも、通知タブに示されているように、受信したい通知のレベルを設定することができます。デプロイの所有者ではないユーザでも、同じ設定情報を表示できます。
モニタリングは、サービスの正常性、データ ドリフト、および精度で利用できます。 チェックボックスをオンにすると、サービスの正常性については最短で 1 時間ごと、または最長で四半期に 1 回まで、定期的にスケジュールされた間隔で通知を配信できます。
MLOpsのガバナンスは、モデル開発のワークフローとプロセスのための権利管理フレームワークを組織に提供します。特定のユーザーは、デプロイに関連するイベントをレビューして承認するように指定されています。制御可能なイベントの種類には、デプロイの作成や削除、デプロイの基礎となるモデルの置き換えなどがあります。
ガバナンス承認ワークフローを有効にすると、モデルをデプロイする前に、重要度レベルを割り当てるように促されます。重要度、高、中、低のいずれかに割り当てます。重要度レベルは、配置の優先順位付けと管理方法を支援します。配置の重要度をどのように指定するかは、モデルを適用している場所と方法のビジネス価値を促進する要因に基づいています。 一般的に、これは予測量、潜在的な財務上の影響、または規制上のエクスポージャーなど、これらの要因の集合体を反映しています。
デプロイが作成されると、レビュー担当者にはレビューが必要であることが電子メールで通知されます。レビューアは MLOps 配置管理者の役割を割り当てられたユーザーで、デプロイを承認することが主な機能の 1 つです。レビューを待っている間、デプロイダッシュボード(デプロイリスト)では、その配置は"承認が必要です"としてフラグが立てられます。 レビュー担当者が承認を必要とする配置にアクセスすると、通知が表示され、レビュー プロセスの開始を促されます。
DataRobotのMLOpsプラットフォームは、作成場所やデプロイ先に関わらず、すべての本番モデルを1か所で管理することができます。本番環境での複数の機械学習プラットフォームからのモデルのデプロイと管理を簡素化することで、AIの価値を提供することができるようになりました。これにより、生産モデルをプロアクティブに管理して生産上の問題を防ぎ、モデルの信頼性とパフォーマンスの両方を確保することができます。これには、リアルタイムのダッシュボードによるモデルの正常性のライブ監視、データの逸脱に関する自動監視アラート、および主要なモデル・メトリクスが含まれます。
モデルが劣化していることが判明した場合、MLOpsモデルリプレイスにより、既存のビジネスプロセスを中断することなくモデル更新プロセスを合理化するためのホットスワップ可能にします。また、ガバナンスを適用することで、AIプロジェクトを安全にスケールアップし、生産モデルの制御を維持してリスクを最小限に抑え、規制を遵守することができます。