データのキャプチャ - Amazon SageMaker

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

データのキャプチャ

Model Monitor を使用するには、リクエストと応答からデータをキャプチャし、キャプチャしたデータを Amazon S3 に保存するようにリアルタイム推論エンドポイントを設定します。モデルモニターは、このデータのメトリックを、モデル用に作成したベースラインと比較します。ベースラインの作成については、「」を参照してください。ベースラインの作成

注記

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

データキャプチャをセットアップするには

  1. まず、モデルモニターがキャプチャされたデータを格納するために使用する Amazon S3 バケットを設定します。

    import boto3 import re import json from sagemaker import get_execution_role, session region= boto3.Session().region_name role = get_execution_role() print("RoleArn: {}".format(role)) # You can use a different bucket, but make sure the role you chose for this notebook # has s3:PutObject permissions. This is the bucket into which the data is captured bucket = session.Session(boto3.Session()).default_bucket() print("Demo Bucket: {}".format(bucket)) prefix = 'sagemaker/DEMO-ModelMonitor' data_capture_prefix = '{}/datacapture'.format(prefix) s3_capture_upload_path = 's3://{}/{}'.format(bucket, data_capture_prefix) reports_prefix = '{}/reports'.format(prefix) s3_report_path = 's3://{}/{}'.format(bucket,reports_prefix) code_prefix = '{}/code'.format(prefix) s3_code_preprocessor_uri = 's3://{}/{}/{}'.format(bucket,code_prefix, 'preprocessor.py') s3_code_postprocessor_uri = 's3://{}/{}/{}'.format(bucket,code_prefix, 'postprocessor.py') print("Capture path: {}".format(s3_capture_upload_path)) print("Report path: {}".format(s3_report_path)) print("Preproc Code path: {}".format(s3_code_preprocessor_uri)) print("Postproc Code path: {}".format(s3_code_postprocessor_uri))
  2. 次に、事前トレーニング済みモデルを Amazon S3 にアップロードします。

    model_file = open("model/your-prediction-model.tar.gz", 'rb') s3_key = os.path.join(prefix, 'your-prediction-model.tar.gz') boto3.Session().resource('s3').Bucket(bucket).Object(s3_key).upload_fileobj(model_file)
  3. キャプチャするデータを構成するには、キャプチャするデータをDataCaptureConfig構造。この設定では、要求ペイロード、応答ペイロード、またはその両方をキャプチャできます。

    from sagemaker.model_monitor import DataCaptureConfig endpoint_name = 'your-pred-model-monitor-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime()) print("EndpointName={}".format(endpoint_name)) data_capture_config=DataCaptureConfig( enable_capture = True, sampling_percentage=100, destination_s3_uri=s3_capture_upload_path)
  4. モデルのデプロイ時に、前のステップで作成した設定を渡して、データキャプチャを有効にします。

    predictor = model.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge', endpoint_name=endpoint_name data_capture_config=data_capture_config)
  5. エンドポイントを呼び出し、エンドポイントにデータを送信して、リアルタイムで推論を取得します。前のステップでデータキャプチャを有効にしたため、リクエストペイロードとレスポンスのペイロードは、追加のメタデータとともに、DataCaptureConfig

    from sagemaker.predictor import RealTimePredictor import time predictor = RealTimePredictor(endpoint=endpoint_name,content_type='text/csv') # get a subset of test data for a quick test !head -120 test_data/test-dataset-input-cols.csv > test_data/test_sample.csv print("Sending test traffic to the endpoint {}. \nPlease wait...".format(endpoint_name)) with open('test_data/test_sample.csv', 'r') as f: for row in f: payload = row.rstrip('\n') response = predictor.predict(data=payload) time.sleep(0.5) print("Done!")
  6. Amazon S3 に保存されているデータキャプチャファイルを一覧表示して、キャプチャしたデータを表示します。呼び出しが発生した時間に基づいて編成された、異なる期間の異なるファイルが表示されます。

    s3_client = boto3.Session().client('s3') current_endpoint_capture_prefix = '{}/{}'.format(data_capture_prefix, endpoint_name) result = s3_client.list_objects(Bucket=bucket, Prefix=current_endpoint_capture_prefix) capture_files = [capture_file.get("Key") for capture_file in result.get('Contents')] print("Found Capture Files:") print("\n ".join(capture_files))

    Amazon S3 パスの形式は、次のとおりです。

    s3://{destination-bucket-prefix}/{endpoint-name}/{variant-name}/yyyy/mm/dd/hh/filename.jsonl