

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# モデルモニターのよくある質問
<a name="model-monitor-faqs"></a>

Amazon SageMaker Model Monitor の詳細については、以下のよくある質問を参照してください。

**Q: Model Monitor と SageMaker Clarify は顧客がモデルの動作をモニタリングするのにどのように役立ちますか?**

お客様は、Amazon SageMaker Model Monitor と SageMaker Clarify を通じて、[データ品質](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-data-quality.html)、[モデル品質](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality.html)、[バイアスドリフト](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-model-monitor-bias-drift.html)、[特徴量属性ドリフト](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-model-monitor-feature-attribution-drift.html)の 4 つのディメンションに沿ってモデルの動作をモニタリングできます。[Model Monitor](https://aws.amazon.com/sagemaker/model-monitor/) は、本番環境の Amazon SageMaker 機械学習モデルの品質を継続的にモニタリングします。これには、データ品質におけるドリフトのモニタリングや、精度や RMSE などのモデル品質メトリクスが含まれます。[SageMaker Clarify](https://aws.amazon.com/sagemaker/clarify/?sagemaker-data-wrangler-whats-new.sort-by=item.additionalFields.postDateTime&sagemaker-data-wrangler-whats-new.sort-order=desc) のバイアスモニタリングは、データサイエンティストや ML エンジニアがモデルの予測のバイアスや特徴量属性ドリフトをモニタリングするのに役立ちます。

**Q: Sagemaker モデルモニターを有効にすると、バックグラウンドでは何が起きますか?**

Amazon SageMaker Model Monitor はモデルモニタリングを自動化するため、モデルを手動でモニタリングしたり、追加のツールを構築したりする必要性を軽減します。プロセスを自動化するために、Model Monitor では、モデルのトレーニングに使用したデータを使ってベースライン統計と制約のセットを作成し、エンドポイントで行われる予測をモニタリングするスケジュールを設定することができます。Model Monitor は、ルールを使用してモデルのドリフトを検出し、ドリフトが発生した場合はアラートが表示されます。次の手順では、モデルモニタリングを有効にするとどうなるかを説明します。
+ **モデルモニタリングを有効にする**: リアルタイムエンドポイントでは、デプロイされた ML モデルへの受信リクエストとその結果として得られたモデル予測からのデータをエンドポイントがキャプチャできるようにする必要があります。バッチ変換ジョブでは、バッチ変換の入出力のデータキャプチャを可能にします。
+ **ベースライン処理ジョブ**: モデルのトレーニングに使用されたデータセットからベースラインを作成します。ベースラインはメトリクスを計算し、メトリクスの制約を提案します。例えば、モデルのリコールスコアが下がって 0.571 を下回ったり、精度スコアが 1.0 を下回ったりしてはいけません。モデルから得たリアルタイム予測またはバッチ予測はこの制約と比較され、制約値から外れている場合は違反として報告されます。
+ **モニタリングジョブ**: T 収集するデータ、収集する頻度、分析方法、作成するレポートを指定するモニタリングスケジュールを作成します。
+ **マージジョブ**: これは Amazon SageMaker Ground Truth を利用している場合にのみ適用されます。Model Monitor では、モデルの予測を Ground Truth ラベルと比較し、モデルの品質を測定します。これを機能させるには、エンドポイントでキャプチャされたデータを定期的にラベル付けし、Amazon S3 にアップロードする必要がありますます。

  Ground Truth ラベルを作成してアップロードした後、モニタリングジョブを作成するときにそのラベルの場所をパラメータとして含めます。

Model Monitor を使用してリアルタイムエンドポイントの代わりにバッチ変換ジョブをモニタリングする場合、エンドポイントへのリクエストを受信して予測を追跡する代わりに、Model Monitor は推論の入出力をモニタリングします。Model Monitor のスケジュールでは、処理ジョブで使用されるインスタンスの数とタイプを顧客が指定します。これらのリソースは、現在の実行状況に関係なく、スケジュールが削除されるまで確保されています。

**Q: データキャプチャとはどういうものですか? なぜ必要なのですか? また、どうすれば有効にできますか?**

モデルエンドポイントへの入力とデプロイされたモデルからの推論出力を Amazon S3 に記録するために、[データキャプチャ](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-data-capture.html)という機能を有効にできます。リアルタイムエンドポイントとバッチ変換ジョブで有効にする方法の詳細については、「[Capture data from real-time endpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-data-capture-endpoint.html)」と「[ Capture data from batch transform job](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-data-capture-batch.html)」を参照してください。

**Q: データキャプチャを有効にすると、リアルタイムエンドポイントのパフォーマンスに影響しますか?**

データキャプチャは本番トラフィックに影響を与えずに非同期的に行われます。データキャプチャを有効にすると、要求ペイロードと応答ペイロードは、追加のメタデータとともに、`DataCaptureConfig` で指定した Amazon S3 の場所に保存されます。キャプチャしたデータの Amazon S3 への伝播には遅延があることに注意してください。

Amazon S3 に保存されたデータキャプチャファイルを一覧表示して、キャプチャされたデータを表示することもできます。Amazon S3 のパス形式は次のとおりです。`s3:///{endpoint-name}/{variant-name}/yyyy/mm/dd/hh/filename.jsonl`Amazon S3 データキャプチャは Model Monitor スケジュールと同じリージョンにある必要があります。また、ベースラインデータセットの列名は小文字で、区切り文字はアンダースコア (`_`) のみにする必要があります。

**Q: モデルモニタリングに Ground Truth が必要なのはなぜですか?**

Ground Truth ラベルは、Model Monitor の以下の特徴量に必要です。
+ **モデル品質モニタリング**では、モデルの予測を Ground Truth ラベルと比較し、モデルの品質を測定します。
+ **モデルバイアスモニタリング**は、予測にバイアスがないかをモニタリングします。デプロイされた ML モデルにバイアスが生じる可能性の 1 つは、トレーニングに使用されるデータが予測の生成に使用されるデータと異なる場合です。これは、トレーニングに使用されるデータが時間の経過とともに変化し (住宅ローン金利の変動など)、更新されたデータでモデルを再トレーニングしない限りモデル予測の精度が下がる場合に特に顕著になります。例えば、モデルトレーニングに使用された住宅ローン金利が実際の最新の住宅ローン金利と異なる場合、住宅価格を予測するためのモデルの出力にバイアスが生じる可能性があります。

**Q: Ground Truth をラベリングに利用している場合、モデルの品質をモニタリングするために実行できる手順を教えてください。**

モデル品質モニタリングでは、モデルの予測を Ground Truth ラベルと比較し、モデルの品質を測定します。これを機能させるには、エンドポイントでキャプチャされたデータを定期的にラベル付けし、Amazon S3 にアップロードする必要がありますます。モデルバイアスモニタリングの実行には、キャプチャの他に、Ground Truth データも必要です。実際のユースケースでは、Ground Truth データを定期的に収集し、指定された Amazon S3 の場所にアップロードする必要があります。Ground Truth ラベルとキャプチャされた予測データを照合するには、データセット内の各レコードに一意の識別子が必要です。Ground Truth データの各レコードの構造については、「[Ingest Ground Truth Labels and Merge Them With Predictions](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-merge.html)」を参照してください。

次のコード例は、表形式データセットの人工的な Ground Truth データを生成するために使用できます。

```
import random

def ground_truth_with_id(inference_id):
    random.seed(inference_id)  # to get consistent results
    rand = random.random()
    # format required by the merge container
    return {
        "groundTruthData": {
            "data": "1" if rand < 0.7 else "0",  # randomly generate positive labels 70% of the time
            "encoding": "CSV",
        },
        "eventMetadata": {
            "eventId": str(inference_id),
        },
        "eventVersion": "0",
    }


def upload_ground_truth(upload_time):
    records = [ground_truth_with_id(i) for i in range(test_dataset_size)]
    fake_records = [json.dumps(r) for r in records]
    data_to_upload = "\n".join(fake_records)
    target_s3_uri = f"{ground_truth_upload_path}/{upload_time:%Y/%m/%d/%H/%M%S}.jsonl"
    print(f"Uploading {len(fake_records)} records to", target_s3_uri)
    S3Uploader.upload_string_as_file_body(data_to_upload, target_s3_uri)
# Generate data for the last hour
upload_ground_truth(datetime.utcnow() - timedelta(hours=1))
# Generate data once a hour
def generate_fake_ground_truth(terminate_event):
    upload_ground_truth(datetime.utcnow())
    for _ in range(0, 60):
        time.sleep(60)
        if terminate_event.is_set():
            break


ground_truth_thread = WorkerThread(do_run=generate_fake_ground_truth)
ground_truth_thread.start()
```

次のコード例は、モデルエンドポイントに送信する人工的なトラフィックを生成する方法を示しています。上記で呼び出す際に使用した `inferenceId` 属性に注目してください。これが存在する場合は、Ground Truth データとの結合に使用されます (存在しない場合、`eventId` が使用されます)。

```
import threading

class WorkerThread(threading.Thread):
    def __init__(self, do_run, *args, **kwargs):
        super(WorkerThread, self).__init__(*args, **kwargs)
        self.__do_run = do_run
        self.__terminate_event = threading.Event()

    def terminate(self):
        self.__terminate_event.set()

    def run(self):
        while not self.__terminate_event.is_set():
            self.__do_run(self.__terminate_event)
def invoke_endpoint(terminate_event):
    with open(test_dataset, "r") as f:
        i = 0
        for row in f:
            payload = row.rstrip("\n")
            response = sagemaker_runtime_client.invoke_endpoint(
                EndpointName=endpoint_name,
                ContentType="text/csv",
                Body=payload,
                InferenceId=str(i),  # unique ID per row
            )
            i += 1
            response["Body"].read()
            time.sleep(1)
            if terminate_event.is_set():
                break


# Keep invoking the endpoint with test data
invoke_endpoint_thread = WorkerThread(do_run=invoke_endpoint)
invoke_endpoint_thread.start()
```

Ground Truth データは、キャプチャされたデータと同じパス形式の Amazon S3 バケットにアップロードする必要があります。これは、次の形式です。`s3://<bucket>/<prefix>/yyyy/mm/dd/hh`

**注記**  
このパスの日付は、Ground Truth ラベルが収集される日付です。推論が生成された日付と一致している必要はありません。

**Q: 顧客はどのようにモニタリングスケジュールをカスタマイズできますか?**

組み込みのモニタリングメカニズムを使用するだけでなく、前処理スクリプトと後処理スクリプトを使用したり、独自のコンテナを使用または構築したりして、独自のカスタムモニタリングスケジュールと手順を作成できます。前処理スクリプトと後処理スクリプトは、データとモデル品質ジョブでのみ機能することに注意してください。

Amazon SageMaker AI には、モデルエンドポイントによって観測されたデータをモニタリングして評価する機能があります。そのためには、リアルタイムトラフィックを比較するベースラインを作成する必要があります。ベースラインの準備ができたら、継続的に評価してベースラインと比較するスケジュールを設定します。スケジュールを作成するときに、前処理と後処理のスクリプトを用意できます。

次の例は、前処理スクリプトと後処理スクリプトでモニタリングスケジュールをカスタマイズする方法を示しています。

```
import boto3, osfrom sagemaker import get_execution_role, Sessionfrom sagemaker.model_monitor import CronExpressionGenerator, DefaultModelMonitor
# Upload pre and postprocessor scripts
session = Session()
bucket = boto3.Session().resource("s3").Bucket(session.default_bucket())
prefix = "demo-sagemaker-model-monitor"
pre_processor_script = bucket.Object(os.path.join(prefix, "preprocessor.py")).upload_file("preprocessor.py")
post_processor_script = bucket.Object(os.path.join(prefix, "postprocessor.py")).upload_file("postprocessor.py")
# Get execution role
role = get_execution_role() # can be an empty string
# Instance type
instance_type = "instance-type"
# instance_type = "ml.m5.xlarge" # Example
# Create a monitoring schedule with pre and post-processing
my_default_monitor = DefaultModelMonitor(
    role=role,
    instance_count=1,
    instance_type=instance_type,
    volume_size_in_gb=20,
    max_runtime_in_seconds=3600,
)

s3_report_path = "s3://{}/{}".format(bucket, "reports")
monitor_schedule_name = "monitor-schedule-name"
endpoint_name = "endpoint-name"
my_default_monitor.create_monitoring_schedule(
    post_analytics_processor_script=post_processor_script,
    record_preprocessor_script=pre_processor_script,
    monitor_schedule_name=monitor_schedule_name,
    # use endpoint_input for real-time endpoint
    endpoint_input=endpoint_name,
    # or use batch_transform_input for batch transform jobs
# batch_transform_input=batch_transform_name,
    output_s3_uri=s3_report_path,
    statistics=my_default_monitor.baseline_statistics(),
    constraints=my_default_monitor.suggested_constraints(),
    schedule_cron_expression=CronExpressionGenerator.hourly(),
    enable_cloudwatch_metrics=True,
)
```

**Q: 前処理スクリプトを利用できるシナリオやユースケースにはどのようなものがありますか?**

モデルモニターへの入力を変換する必要がある場合は、前処理スクリプトを使用します。例えば、次のシナリオ例を考えてみます。

1. データ変換用の前処理スクリプト。

   モデルの出力が配列 `[1.0, 2.1]` だと仮定します。Model Monitor コンテナは、表形式または `{“prediction0”: 1.0, “prediction1” : 2.1}` のようなフラット化された JSON 構造でのみ動作します。次の例のような前処理スクリプトを使用して、配列を正しい JSON 構造に変換することもできます。

   ```
   def preprocess_handler(inference_record):
       input_data = inference_record.endpoint_input.data
       output_data = inference_record.endpoint_output.data.rstrip("\n")
       data = output_data + "," + input_data
       return { str(i).zfill(20) : d for i, d in enumerate(data.split(",")) }
   ```

1. Model Monitor のメトリクス計算で特定のレコードを除外します。

   モデルにオプションの特徴量があり、そのオプションの特徴量に欠測値があることを示すために `-1` を使用すると仮定します。データ品質モニターを使用している場合は、モニターのメトリクス計算に含まれないように、入力値の配列から `-1` を削除したほうがよい場合があります。次のようなスクリプトを使用して、これらの値を削除できます。

   ```
   def preprocess_handler(inference_record):
       input_data = inference_record.endpoint_input.data
       return {i : None if x == -1 else x for i, x in enumerate(input_data.split(","))}
   ```

1. カスタムサンプリング戦略の適用。

   前処理スクリプトにカスタムサンプリング戦略を適用することもできます。そのためには、Model Monitor のファーストパーティのビルド済みコンテナを設定して、指定したサンプリングレートに従って一部のレコードを無視するようにします。次の例では、ハンドラーはハンドラー呼び出しの 10% のレコードを返し、それ以外の場合は空のリストを返すことで、レコードの 10% をサンプリングします。

   ```
   import random
   
   def preprocess_handler(inference_record):
       # we set up a sampling rate of 0.1
       if random.random() > 0.1:
           # return an empty list
           return []
       input_data = inference_record.endpoint_input.data
       return {i : None if x == -1 else x for i, x in enumerate(input_data.split(","))}
   ```

1. カスタムログ記録を使用します。

   スクリプトから必要な情報をすべて Amazon CloudWatch に記録できます。これは、エラーが発生した場合に前処理スクリプトをデバッグするときに役立ちます。次の例は、`preprocess_handler` インターフェイスを使用して CloudWatch にログを記録する方法を示しています。

   ```
   def preprocess_handler(inference_record, logger):
       logger.info(f"I'm a processing record: {inference_record}")
       logger.debug(f"I'm debugging a processing record: {inference_record}")
       logger.warning(f"I'm processing record with missing value: {inference_record}")
       logger.error(f"I'm a processing record with bad value: {inference_record}")
       return inference_record
   ```

**注記**  
前処理スクリプトをバッチ変換データに対して実行する場合、入力タイプは必ずしも `CapturedData` オブジェクトではありません。CSV データの場合、タイプは文字列です。JSON データの場合、タイプは Python ディクショナリです。

**Q: 後処理スクリプトはいつ利用できますか?**

モニタリングが正常に実行された後は、後処理スクリプトを拡張機能として利用できます。以下は簡単な例ですが、モニタリングが正常に実行された後に実行する必要のあるビジネス機能を実行または呼び出すことができます。

```
def postprocess_handler(): 
    print("Hello from the post-processing script!")
```

**Q: モデルモニタリング用に独自のコンテナを持ち込むことを検討すべきタイミングはいつですか?**

SageMaker AI は、エンドポイントまたはバッチ変換ジョブからキャプチャした表形式のデータセットのデータを分析するためのビルド済みコンテナを提供しています。ただし、独自のコンテナを作成する必要がある場合もあります。次のシナリオを考えてみてください。
+ 組織内で作成、管理されているコンテナのみを使用するという規制要件やコンプライアンス要件がある。
+ いくつかのサードパーティライブラリを含める場合は、`requirements.txt` ファイルをローカルディレクトリに配置し、[SageMaker AI Estimator](https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html#sagemaker.estimator.Estimator) のパラメータ `source_dir` を使用することで参照できます。これにより、実行時にライブラリをインストールできる。ただし、ライブラリや依存関係が多く、トレーニングジョブの実行中にインストール時間が長くなる場合は、BYOC を利用する必要がある。
+ 使用している環境ではインターネット接続 (またはサイロ) が強制されないため、パッケージのダウンロードが妨げられる。
+ NLP や CV のユースケースなど、表形式以外のデータ形式のデータをモニタリングしたい場合がある。
+ Model Monitor がサポートしていないモニタリングメトリクスが必要な場合。

**Q: NLP モデルと CV モデルがあります。データドリフトをモニタリングする方法を教えてください。**

Amazon SageMaker AI のビルド済みコンテナは表形式のデータセットをサポートします。NLP モデルと CV モデルをモニタリングする場合は、Model Monitor が提供する拡張ポイントを活用して独自のコンテナを持ち込むことができます。要件に関する詳細については、「[Bring your own containers](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-byoc-containers.html)」を参照してください。以下にその他の例を示します。
+ コンピュータービジョンのユースケースで Model Monitor を使用する方法の詳細な説明については、「[Amazon SageMaker Model Monitor と Debugger を使って不正な予測を検知して分析する](https://aws.amazon.com/blogs/machine-learning/detecting-and-analyzing-incorrect-model-predictions-with-amazon-sagemaker-model-monitor-and-debugger/)」を参照してください。
+ Model Monitor を NLP ユースケースに活用できるシナリオについては、「[Detect NLP data drift using custom Amazon SageMaker Model Monitor](https://aws.amazon.com/blogs/machine-learning/detect-nlp-data-drift-using-custom-amazon-sagemaker-model-monitor/)」を参照してください。

**Q: Model Monitor が有効になっていたモデルエンドポイントを削除したいのですが、モニタリングスケジュールがまだ有効なので削除できません。どうしたらよいですか?**

SageMaker AI でホストされている Model Monitor が有効になっている推論エンドポイントを削除する場合は、まずモデルモニタリングスケジュールを (`DeleteMonitoringSchedule` [CLI](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-monitoring-schedule.html) または [API](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteMonitoringSchedule.html) を使用して) 削除する必要があります。その後、エンドポイントを削除します。

**Q: SageMaker Model Monitor は入力のメトリックと統計を計算しますか?**

Model Monitor は、入力ではなく出力のメトリクスと統計を計算できます。

**Q: SageMaker Model Monitor はマルチモデルエンドポイントをサポートしていますか?**

Model Monitor は現在、単一モデルをホストするエンドポイントのみをサポートしており、マルチモデルエンドポイントのモニタリングはサポートしていません。

**Q: SageMaker Model Monitor は推論パイプライン内の個々のコンテナに関するモニタリングデータを提供しますか?**

Model Monitor は、推論パイプラインのモニタリングをサポートしていますが、データのキャプチャと分析は、パイプライン内の個々のコンテナではなく、パイプライン全体に対して行われます。

**Q: データキャプチャを設定したときに、推論リクエストに影響が出ないようにするにはどうしたらよいですか?**

推論リクエストへの影響を防ぐため、ディスク使用率のレベルが高くなると、データキャプチャはリクエストのキャプチャを停止します。データキャプチャがリクエストのキャプチャを続行できるように、ディスク使用率を 75% 未満に抑えることをお勧めします。

**Q: Amazon S3 データキャプチャは、モニタリングスケジュールが設定された AWS リージョンとは異なるリージョンにあることはできますか?**

いいえ、Amazon S3 データキャプチャはモニタリングスケジュールと同じリージョンにある必要があります。

**Q: ベースラインとはどういうものですか? また、ベースラインを作成する方法を教えてください。カスタムベースラインは作成できますか?**

ベースラインは、モデルからのリアルタイム予測またはバッチ予測を比較するための基準として使用されます。統計とメトリクスを、それらに関する制約とともに計算します。モニタリング時には、これらすべてを組み合わせて使用し、違反を特定します。

Amazon SageMaker Model Monitor のデフォルトソリューションを使用するには、[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/api/inference/model_monitor.html) を利用できます。具体的には、[ModelMonitor](https://sagemaker.readthedocs.io/en/stable/api/inference/model_monitor.html#sagemaker.model_monitor.model_monitoring.DefaultModelMonitor) または [ModelQualityMonitor](https://sagemaker.readthedocs.io/en/stable/api/inference/model_monitor.html#sagemaker.model_monitor.model_monitoring.ModelQualityMonitor) クラスの [suggest\$1baseline](https://sagemaker.readthedocs.io/en/stable/api/inference/model_monitor.html#sagemaker.model_monitor.model_monitoring.DefaultModelMonitor.suggest_baseline) メソッドを使用して、ベースラインのメトリクスと制約を計算する処理ジョブをトリガーします。

ベースラインジョブの結果として `statistics.json` と `constraints.json` の 2 つのファイルが生成されます。[統計のスキーマ](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-byoc-statistics.html)と[制約のスキーマ](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-byoc-constraints.html)にはそれぞれのファイルのスキーマが含まれます。生成された制約を確認し、変更してからモニタリングに使用することができます。ドメインとビジネス上の問題を理解したうえで、制約を強化することも、制約を緩和して違反の数や性質を制御することもできます。

**Q: ベースラインデータセットを作成するためのガイドラインとはどのようなものですか?**

どのようなモニタリングの場合でも、メトリクスと制約の計算に使用するベースラインデータセットを用意することが第一の要件です。通常、これはモデルが使用するトレーニングデータセットですが、場合によっては他の参照データセットを使用することもできます。

ベースラインデータセットの列名は Spark と互換性があります。Spark、CSV、JSON、Parquet 間の互換性を最大限に保つには、小文字のみを使用し、区切り文字として `_` のみを使用することをお勧めします。`“ ”` などの特殊文字を含むと問題を引き起こす可能性があります。

**Q: `StartTimeOffset` パラメータと `EndTimeOffset` パラメータとはどういうものですか? また、どのような場合に使用されますか?**

モデル品質などのモニタリングジョブに Amazon SageMaker Ground Truth が必要な場合は、モニタリングジョブで Ground Truth を利用できるデータのみを使用する必要があります。[EndpointInput](https://sagemaker.readthedocs.io/en/stable/api/inference/model_monitor.html#sagemaker.model_monitor.model_monitoring.EndpointInput) の `start_time_offset` パラメータと `end_time_offset` パラメータを使用して、モニタリングジョブが使用するデータを選択できます。モニタリングジョブは、`start_time_offset` と `end_time_offset` で定義された時間枠内のデータを使用します。これらのパラメータは [ISO 8601 期間形式](https://en.wikipedia.org/wiki/ISO_8601#Durations)で指定する必要があります。次に例をいくつか示します。
+ 予測が行われてから 3 日後に Ground Truth の結果が届いた場合は、`start_time_offset="-P3D"` と `end_time_offset="-P1D"` (3 日と 1 日) を設定します。
+ Ground Truth の結果が予測から 6 時間後に到着し、1 時間ごとのスケジュールがある場合は、`start_time_offset="-PT6H"` と `end_time_offset="-PT1H"` (6 時間と 1 時間) を設定します。

**Q: 「オンデマンド」のモニタリングジョブを実行できますか?**

はい、SageMaker 処理ジョブを実行することで「オンデマンド」モニタリングジョブを実行できます。バッチ変換の場合、[Pipelines](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-overview.html) には [MonitorBatchTransformStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.monitor_batch_transform_step.MonitorBatchTransformStep) があり、これを使用して、オンデマンドでモニタリングジョブを実行する SageMaker AI パイプラインを作成できます。SageMaker AI サンプルリポジトリには、[データ品質](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker_model_monitor/model_monitor_batch_transform/SageMaker-ModelMonitoring-Batch-Transform-Data-Quality-With-SageMaker-Pipelines-On-Demand.ipynb)と[モデル品質](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker_model_monitor/model_monitor_batch_transform/SageMaker-ModelMonitoring-Batch-Transform-Model-Quality-With-SageMaker-Pipelines-On-Demand.ipynb)のモニタリングジョブをオンデマンドで実行するためのコードサンプルがあります。

**Q: Model Monitor の設定方法を教えてください。**

Model Monitor は次の方法で設定できます。
+ **[Amazon SageMaker AI Python SDK](https://sagemaker.readthedocs.io/en/stable/index.html)** — ベースラインの提案、モニタリングスケジュールの作成などを支援するクラスと関数を含む [Model Monitor モジュール](https://sagemaker.readthedocs.io/en/stable/api/inference/model_monitor.html)があります。SageMaker Python SDK を利用してモデルモニターを設定する詳細なノートブックについては、「[Amazon SageMaker Model Monitor ノートブックの例](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker_model_monitor)」を参照してください。
+ **[Pipelines](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-overview.html)** – Pipelines は、[QualityCheck Step](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-quality-check) API と [ClarifyCheckStep](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-clarify-check) API を介して Model Monitor と統合されています。これらのステップを含む SageMaker AI パイプラインを作成して、パイプラインが実行される都度、モニタリングジョブをオンデマンドで実行できます。
+ **[Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html)** – デプロイされたモデルのエンドポイントのリストからエンドポイントを選択することで、データまたはモデルの品質モニタリングスケジュールと、モデルのバイアスおよび説明可能性スケジュールを UI から直接作成できます。UI の関連タブを選択することで、他のタイプのモニタリングのスケジュールを作成できます。
+ **[SageMaker モデルダッシュボード](https://docs.aws.amazon.com/sagemaker/latest/dg/model-dashboard.html)** — エンドポイントにデプロイされたモデルを選択することで、エンドポイントのモニタリングを有効にできます。次の SageMaker AI コンソールのスクリーンショットでは、**[モデルダッシュボード]** の **[モデル]** セクションから `group1` という名前のモデルが選択されています。このページでは、モニタリングスケジュールの作成や、既存のモニタリングスケジュールやアラートの編集、有効化、無効化ができます。アラートとモデルモニタースケジュールの表示方法の手順については、「[View Model Monitor schedules and alerts](https://docs.aws.amazon.com/sagemaker/latest/dg/model-dashboard-schedule.html)」を参照してください。

![\[モニタリングスケジュールを作成するオプションが表示されている [モデルダッシュボード] のスクリーンショット。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/model-monitoring-faqs-screenshot.png)


**Q: Model Monitor は SageMaker モデルダッシュボードとどのように統合されますか?**

[SageMaker モデルダッシュボード](https://docs.aws.amazon.com/sagemaker/latest/dg/model-dashboard.html) では、予測される動作からの逸脱に関する自動アラートや、モデルを検査して時間の経過とともにモデルのパフォーマンスに影響を与える要因を分析するためのトラブルシューティングを提供することで、すべてのモデルを一元的にモニタリングできます。