自然言語理解は、チャットボットや仮想アシスタントから、機械翻訳やテキスト要約まで、幅広いユースケースに適用されます。 これらのアプリケーションが期待されるパフォーマンス レベルで実行されていることを確認するには、トレーニング環境と運用環境のデータが同じディストリビューションからのものであることが重要です。 推論に使用されるデータ (本番データ) が、モデルのトレーニング中に使用されるデータと異なる場合、データ ドリフトと呼ばれる現象が発生します。 データ ドリフトが発生すると、モデルは本番環境のデータに関連しなくなり、予想よりもパフォーマンスが低下する可能性があります。 推論データを継続的に監視し、トレーニング中に使用されたデータと比較することが重要です。
あなたが使用することができます アマゾンセージメーカー 機械学習 (ML) モデルをあらゆる規模で迅速に構築、トレーニング、デプロイします。 モデルの劣化に対するプロアクティブな対策として、次を使用できます。 Amazon SageMakerモデルモニター ML モデルの品質をリアルタイムで継続的に監視します。 Model Monitor を使用すると、モデルのパフォーマンスにドリフトが見られた場合に通知してアクションをトリガーするようにアラートを構成することもできます。 これらの逸脱を早期かつプロアクティブに検出することで、モデルを手動で監視したり追加のツールを構築したりすることなく、新しいグラウンド トゥルース トレーニング データの収集、モデルの再トレーニング、上流システムの監査などの是正措置を講じることができます。
モデルモニターは、モデルのドリフトをリアルタイムで検出して軽減するためのXNUMX種類の監視機能を提供します。
- データ品質 – データ スキーマおよび独立変数の統計的プロパティの変更を検出し、ドリフトが検出されたときにアラートを送信するのに役立ちます。
- モデルの品質 – 精度や精度などのモデルのパフォーマンス特性をリアルタイムで監視するために、Model Monitor を使用すると、アプリケーションから収集されたグラウンド トゥルース ラベルを取り込むことができます。モデル モニターは、グラウンド トゥルース情報と予測データを自動的にマージして、モデルのパフォーマンス メトリックを計算します。
- モデルバイアス –モデルモニターが統合されています Amazon SageMaker の明確化 潜在的なバイアスに対する可視性を向上させるため。初期のデータやモデルにはバイアスがかかっていないかもしれませんが、世界の変化により、すでにトレーニングされたモデルに時間の経過とともにバイアスが生じる可能性があります。
- モデルの説明性 – ドリフト検出は、特徴属性の相対的な重要性に変化が発生したときに警告します。
この投稿では、テキスト データに適用されるデータ品質ドリフトの種類について説明します。 また、Model Monitor を使用してテキスト データのデータ ドリフトを検出する方法も示します。
NLP のデータ ドリフト
データドリフトは、分布の変化が入力側で発生しているか出力側で発生しているか、または入力と出力の関係が変化しているかどうかに応じて 3 つのカテゴリに分類できます。
共変量シフト
で 共変量シフト、入力の分布は時間の経過とともに変化しますが、条件付き分布は P(y|x) 変わりません。 このタイプのドリフトは、共変量 (特徴) の分布のシフトによって問題が発生するため、共変量シフトと呼ばれます。 たとえば、電子メール スパム分類モデルでは、トレーニング データ (電子メール コーパス) の分布は、スコアリング中のデータの分布から分岐する場合があります。
ラベルシフト
共変量シフトは特徴分布の変化に焦点を当てますが、 ラベルシフト クラス変数の分布の変化に焦点を当てています。 このタイプのシフトは、本質的に共変量シフトの逆です。 それについて考える直感的な方法は、不均衡なデータセットを検討することです。 トレーニング セット内の電子メールのスパムと非スパムの比率が 50% であるが、実際には電子メールの 10% が非スパムである場合、ターゲット ラベルの分布がシフトしています。
コンセプトシフト
コンセプトシフト 共変量やラベル シフトとは異なり、データ分布やクラス分布には関係なく、XNUMX つの変数間の関係に関係します。 たとえば、電子メール スパマーはさまざまな概念を使用してスパム フィルター モデルを通過することが多く、トレーニング中に使用される電子メールの概念は時間の経過とともに変化する可能性があります。
さまざまなタイプのデータ ドリフトを理解したところで、Model Monitor を使用してテキスト データの共変量シフトを検出する方法を見てみましょう。
ソリューションの概要
構造化された境界のある表形式のデータとは異なり、テキスト データは複雑で、高次元で、自由な形式です。 NLP のドリフトを効率的に検出するために、 埋め込み、 これは、テキストの低次元表現です。 Word2Vec などのさまざまな言語モデルや、次のようなトランスフォーマー ベースのモデルを使用して、埋め込みを取得できます。 ベルト. これらのモデルは、テキストのセマンティック情報を保持しながら、高次元データを低次元空間に射影します。 結果は密でコンテキスト的に意味のあるベクトルであり、データ ドリフトの監視など、さまざまなダウンストリーム タスクに使用できます。
私たちのソリューションでは、埋め込みを使用して英語の文の共変量シフトを検出します。 Model Monitor を使用して、実稼働環境にデプロイされたテキスト分類子の継続的な監視を容易にします。 私たちのアプローチは、次の手順で構成されています。
- SageMaker を使用して BERT モデルを微調整します。
- 微調整された BERT 分類器をリアルタイム エンドポイントとしてデプロイします。 データ収集 有効になりました。
- BERT 分類器のトレーニングに使用される文のサンプルで構成されるベースライン データセットを作成します。
- 作る カスタム SageMaker モニタリングジョブ 本番環境でキャプチャされたデータとベースライン データセットの間のコサイン類似度を計算します。
次の図は、ソリューションのワークフローを示しています。
BERT モデルの微調整
この投稿では、 言語受容性コーパス(CoLA)、公開された言語学文献から文法的または非文法的とラベル付けされた 10,657 の英語文のデータセット。 SageMaker トレーニングを使用して、PyTorch estimator クラスを定義することにより、CoLa データセットを使用して BERT モデルを微調整します。 この SDK を PyTorch で使用する方法の詳細については、次を参照してください。 SageMaker PythonSDKでPyTorchを使用する。 電話をかける fit()
estimator のメソッドがトレーニング ジョブを起動します。
モデルを展開する
モデルをトレーニングした後、SageMaker エンドポイントでホストします。 エンドポイントにモデルをロードさせ、予測を提供させるために、いくつかのメソッドを実装します。 train_deploy.py:
- model_fn() –保存されたモデルをロードし、モデルの提供に使用できるモデルオブジェクトを返します。 SageMaker PyTorchモデルサーバーは、を呼び出すことでモデルをロードします
model_fn
. - input_fn() –予測入力を逆シリアル化して準備します。 この例では、リクエストの本文は最初にJSONにシリアル化されてから、モデル提供エンドポイントに送信されます。 したがって、
input_fn()
、最初にJSON形式のリクエスト本文をデシリアライズし、入力をtorch.tensor
、BERT に必要な場合。 - predict_fn() – 予測を実行し、結果を返します。
モデル モニターのデータ キャプチャを有効にする
可能にする モデル モニターのデータ キャプチャ 入力データを Amazon シンプル ストレージ サービス (Amazon S3) バケットを後で参照するには:
次に、前のステップで作成したモデルを使用して、リアルタイムの SageMaker エンドポイントを作成します。
推論
前のステップで作成した予測オブジェクトを使用して予測を実行します。 推論エンドポイントで使用される JSON シリアライザーとデシリアライザーを設定します。
リアルタイム エンドポイントはリクエストからデータをキャプチャするように設定され、レスポンスとデータは Amazon S3 に保存されます。 以前の監視スケジュールでキャプチャされたデータを表示できます。
ベースラインを作成する
微調整されたBERTモデルを使用して、トレーニングデータから文埋め込み機能を抽出します。 BERT はセマンティック コンテキストを使用して動的な単語表現を生成するため、コサイン距離を比較するための高品質の特徴入力としてこれらのベクトルを使用します。 文の埋め込みを取得するには、次の手順を実行します。
- BERT トークナイザーを使用して、各トークンのトークン ID を取得します (
input_id
) 入力文とマスクで、入力シーケンス内のどの要素がトークンとパディング要素であるかを示します (attention_mask_id
)。 BERTを使用していますtokenizer.encode_plus
入力文ごとにこれらの値を取得する関数:
input_ids
& attention_mask_ids
モデルに渡され、ネットワークの隠れた状態を取得します。 の hidden_states
次の順序で XNUMX つの次元があります。
- 層番号 (BERT には 12 層あります)
- バッチ番号(1文)
- 単語トークン インデックス
- 隠しユニット (768 特徴)
- 最後の XNUMX つの隠れ層を使用して、文内のすべての入力トークンの平均を計算することにより、単一のベクトル (文の埋め込み) を取得します。
- 文の埋め込みを NumPy 配列として変換し、Model Monitor で使用されるベースラインとして Amazon S3 の場所に保存します。
評価スクリプト
Model Monitor は、表形式のデータセットのエンドポイントからキャプチャされたデータを分析する機能を備えたビルド済みコンテナーを提供します。 独自のコンテナーを持ち込みたい場合は、Model Monitor が提供する拡張ポイントを使用できます。 を作成するとき MonitoringSchedule
、Model Monitor は最終的に処理ジョブを開始します。 したがって、コンテナーは処理ジョブ コントラクトを認識する必要があります。 コンテナと互換性のある評価スクリプトを作成する必要があります 契約入力 & outputs.
Model Monitor は、監視スケジュール中にキャプチャされたすべてのサンプルで評価コードを使用します。 各推論データ ポイントについて、前に説明したのと同じロジックを使用して文の埋め込みを計算します。 コサイン類似度は、ベースライン内の推論データ ポイントと文の埋め込みの類似性を測定するための距離メトリックとして使用されます。 数学的には、XNUMX つの文埋め込みベクトル間の余弦角を測定します。 コサイン類似度スコアが高いほど、文の埋め込みが類似していることを示します。 低いコサイン類似度スコアは、データのドリフトを示します。 すべてのコサイン類似度スコアの平均を計算し、それがしきい値未満の場合は、違反レポートに取り込まれます。 ユースケースに基づいて、次のような他の距離メトリックを使用できます manhattan
or euclidean
文の埋め込みの類似性を測定します。
次の図は、SageMaker Model Monitoring を使用してベースラインを確立し、コサイン距離の類似性を使用してデータのドリフトを検出する方法を示しています。
以下は、違反を計算するためのコードです。 完全な評価スクリプトは、 GitHubの:
Model Monitor を使用してデータ ドリフトを測定する
このセクションでは、Model Monitor を使用したデータ ドリフトの測定に焦点を当てます。 Model Monitor のビルド済みモニターは、 ディークこれは、データの単体テストを定義するために Apache Spark の上に構築されたライブラリであり、大規模なデータセットのデータ品質を測定します。 これらの事前構築済みの監視機能を利用するためにコーディングは必要ありません。 また、カスタム分析を提供するコーディングによってモデルを監視する柔軟性もあります。 Model Monitor によって出力されたすべてのメトリックを収集して確認できます。 Amazon SageMakerスタジオ, そのため、追加のコードを記述することなく、モデルのパフォーマンスを視覚的に分析できます。
特定のシナリオでは、たとえばデータが表形式でない場合、デフォルトの処理ジョブ (Powered by ディーク) は、表形式のデータセットのみをサポートするため、十分ではありません。 ドリフトを検出するための高度なメトリックを生成するには、事前に構築されたモニターでは不十分な場合があり、独自のメトリックを使用する必要がある場合があります。 次のセクションでは、カスタム コンテナーを作成してメトリックを取り込むためのセットアップについて説明します。
カスタム Model Monitor コンテナを構築する
私たちは、使用 評価スクリプト 前のセクションから Docker コンテナを構築し、それを Amazon エラスティック コンテナ レジストリ (アマゾン ECR):
お客様の Docker コンテナが Amazon ECR にある場合、次のセクションで説明するように、モデル監視ジョブをスケジュールして違反レポートを生成できます。
モデル監視ジョブをスケジュールする
モデル監視ジョブをスケジュールするには、Model Monitor のインスタンスを作成し、 image_uri
、前のセクションで作成した Docker コンテナーを参照します。
を使用して監視ジョブをスケジュールします create_monitoring_schedule
API. 監視ジョブは、時間単位または日単位でスケジュールできます。 を使用してジョブを構成します。 destination
次のコードに示すように、パラメータ:
監視スケジュールとその実行を説明および一覧表示するには、次のコマンドを使用できます。
データ ドリフト違反レポート
モデル監視ジョブが完了すると、宛先 S3 パスに移動して違反レポートにアクセスできます。 このレポートには、平均余弦スコア (avg_cosine_score
) は、環境変数として構成されたしきい値を下回っています THRESHOLD:0.5
セクションに モデルモニター 実例。 これは、推論中に観察されたデータが、確立されたベースラインを超えてドリフトしていることを示しています。
次のコードは、生成された違反レポートを示しています。
最後に、この観察に基づいて、再トレーニング用にモデルを構成できます。 有効にすることもできます Amazon シンプル通知サービス 違反が発生したときにアラートを送信する (Amazon SNS) 通知。
まとめ
Model Monitor を使用すると、本番環境でモデルの高品質を維持できます。 この投稿では、テキストなどの非構造化データのデータ ドリフトを監視する際の課題を強調し、カスタム監視スクリプトを使用してデータ ドリフトを検出する直感的なアプローチを提供しました。 投稿に関連付けられたコードは、次の場所にあります。 GitHubリポジトリ. さらに、次のような他の距離メトリックを利用するようにソリューションをカスタマイズできます。 最大平均不一致 (MMD)、埋め込み空間のソース分布とターゲット分布の間の周辺分布を計算するためのノンパラメトリック距離メトリック。
著者について
ヴィクラムエランゴ は、米国バージニア州を拠点とするアマゾン ウェブ サービスの AI/ML スペシャリスト ソリューション アーキテクトです。 Vikram は、機械学習アプリケーションを大規模に構築および展開するための設計、ソート リーダーシップにより、金融および保険業界のお客様を支援します。 彼は現在、自然言語処理、責任ある AI、推論の最適化、企業全体での ML のスケーリングに注力しています。 余暇には、旅行、ハイキング、料理、家族とのキャンプを楽しんでいます。
ラグーラメシャ Amazon SageMaker サービスチームの ML ソリューションアーキテクトです。 彼は、顧客が ML 本番ワークロードを SageMaker に大規模に移行するのを支援することに重点を置いています。 機械学習、AI、コンピューター ビジョンの分野を専門とし、UT ダラスでコンピューター サイエンスの修士号を取得しています。 余暇には、旅行と写真を楽しんでいます。
トニー・チェン は、アマゾン ウェブ サービスの機械学習ソリューション アーキテクトであり、顧客がクラウドでスケーラブルで堅牢な機械学習機能を設計するのを支援しています。 元データ サイエンティストおよびデータ エンジニアとして、彼はその経験を活用して、機械学習を運用する際に組織が直面する最も困難な問題のいくつかに取り組むのを支援しています。
- '
- "
- 100
- 11
- 7
- 私たちについて
- アクセス
- 越えて
- 行動
- NEW
- AI
- すべて
- 既に
- しかし
- Amazon
- アマゾンセージメーカー
- Amazon Webサービス
- 分析
- アパッチ
- Apache Spark
- 適用可能な
- 利用できます
- 平均
- AWS
- ベースライン
- ボディ
- ビルド
- 建物
- キャンプ
- 例
- 原因となる
- 課題
- 変化する
- チャットボット
- 分類
- クラウド
- コード
- コーディング
- 収集
- 複雑な
- 計算
- コンピュータサイエンス
- Computer Vision
- コンテナ
- 含まれています
- 連続的な
- 縮小することはできません。
- 料理
- 作成
- Customers
- ダラス
- データ
- データ品質
- データサイエンティスト
- 設計
- 検出
- 開発する
- 異なります
- 話し合います
- 距離
- デッカー
- Dockerコンテナ
- そうではありません
- ドメイン
- 運転
- 間に
- ダイナミック
- 早い
- 出会い
- エンドポイント
- エンジニア
- 英語
- Enterprise
- 環境
- 設立
- 例
- 体験
- 顔
- 家族
- 特徴
- 特徴
- ファイナンシャル
- 名
- 柔軟性
- フォーカス
- 焦点を当て
- フォーム
- フォワード
- 無料版
- function
- 生成する
- GitHubの
- 持って
- 助けます
- ことができます
- ハイ
- 強調表示された
- ハイキング
- ホーム
- 認定条件
- How To
- HTTPS
- 画像
- 実装する
- 重要
- 含めて
- 産業を変えます
- 情報
- 保険
- 保険業
- IT
- ジョブ
- Jobs > Create New Job
- ラベル
- 言語
- 大
- 最新の
- 起動
- リーダーシップ
- 学習
- レベル
- レバレッジ
- 図書館
- 言語学
- リスト
- レポート
- 負荷
- 場所
- 機械学習
- 機械翻訳
- mask
- だけど
- メトリック
- ML
- モデル
- モニタリング
- 他には?
- 自然言語
- 自然言語処理
- ネットワーク
- NLP
- 通知
- オファー
- 注文
- 組織
- その他
- パフォーマンス
- 写真撮影
- 精度
- 予測
- 予測
- 現在
- 問題
- 生産
- プロジェクト
- 提供します
- は、大阪で
- Python
- パイトーチ
- 品質
- 範囲
- への
- 現実
- 記録
- レポート
- レポート
- 応答
- 結果
- 再訓練
- 収益
- 逆
- レビュー
- ラン
- ランニング
- セージメーカー
- 規模
- スケーリング
- 科学
- SDDK
- サービス
- サービング
- セッションに
- シフト
- 同様の
- 簡単な拡張で
- So
- ソリューション
- スペース
- スペース
- スパム
- 専門にする
- 米国
- ストレージ利用料
- 店舗
- サポート
- システム
- ターゲット
- test
- テスト
- テスト
- 世界
- 考え
- 思考リーダーシップ
- 時間
- トークン
- トークン
- top
- トーチ
- トラフィック
- トレーニング
- インタビュー
- USA
- 詳しく見る
- バージニア州
- バーチャル
- 視認性
- ビジョン
- wait
- ウェブ
- Webサービス
- Wikipedia
- 無し
- 仕事
- ワークフロー
- 世界
- 書き込み