バッチ変換ジョブからデータをキャプチャする - Amazon SageMaker AI

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

バッチ変換ジョブからデータをキャプチャする

バッチ変換ジョブのデータキャプチャを有効にするために必要な手順は、 AWS SDK for Python (Boto) と Python SageMaker のどちらを使用するかで似ていますSDK。を使用する場合は AWS SDK、 CreateTransformJob メソッド内でDataCaptureConfigディクショナリと必須フィールドを定義して、データキャプチャを有効にします。 SageMaker AI Python を使用する場合はSDK、 BatchDataCaptureConfig クラスをインポートし、このクラスからインスタンスを初期化します。次に、このオブジェクトを変換ジョブインスタンスの batch_data_capture_config パラメータに渡します。

次のコードスニペットを使用するには、サンプルコードitalicized placeholder textの をユーザー自身の情報に置き換えます。

データキャプチャを有効にする方法

変換ジョブを起動するときに、データキャプチャ設定を指定します。 AWS SDK for Python (Boto3) を使用するか SageMaker Python を使用するかにかかわらずSDK、 DestinationS3Uri引数を指定する必要があります。これは、変換ジョブでキャプチャされたデータをログに記録するディレクトリです。オプションで次のパラメータを指定することもできます。

  • KmsKeyId: キャプチャされたデータの暗号化に使用される AWS KMS キー。

  • GenerateInferenceId: データをキャプチャするときに、変換ジョブで推論 ID と時間を出力に追加するかどうかを示すブール型フラグ。これは、Ground Truth データを取り込む必要があるモデル品質モニタリングに役立ちます。推論 ID と時間は、キャプチャしたデータを Ground Truth データと一致させるのに役立ちます。

AWS SDK for Python (Boto3)

CreateTransformJob メソッドを使用して変換ジョブを作成するときに、 DataCaptureConfig ディクショナリでキャプチャするデータを設定します。

input_data_s3_uri = "s3://input_S3_uri" output_data_s3_uri = "s3://output_S3_uri" data_capture_destination = "s3://captured_data_S3_uri" model_name = "model_name" sm_client.create_transform_job( TransformJobName="transform_job_name", MaxConcurrentTransforms=2, ModelName=model_name, TransformInput={ "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": input_data_s3_uri, } }, "ContentType": "text/csv", "CompressionType": "None", "SplitType": "Line", }, TransformOutput={ "S3OutputPath": output_data_s3_uri, "Accept": "text/csv", "AssembleWith": "Line", }, TransformResources={ "InstanceType": "ml.m4.xlarge", "InstanceCount": 1, }, DataCaptureConfig={ "DestinationS3Uri": data_capture_destination, "KmsKeyId": "kms_key", "GenerateInferenceId": True, } )
SageMaker Python SDK

sagemaker.model_monitor モジュールから BatchDataCaptureConfig クラスをインポートします。

from sagemaker.transformer import Transformer from sagemaker.inputs import BatchDataCaptureConfig # Optional - The S3 URI of where to store captured data in S3 data_capture_destination = "s3://captured_data_S3_uri" model_name = "model_name" transformer = Transformer(model_name=model_name, ...) transform_arg = transformer.transform( batch_data_capture_config=BatchDataCaptureConfig( destination_s3_uri=data_capture_destination, kms_key_id="kms_key", generate_inference_id=True, ), ... )

キャプチャされたデータを表示する方法

変換ジョブが完了すると、キャプチャされたデータは、データ キャプチャ設定で指定した DestinationS3Uri の下に記録されます。DestinationS3Uri の下には /input/output という 2 つのサブディレクトリがあります。DestinationS3Uris3://my-data-capture の場合、変換ジョブは次のディレクトリを作成します。

  • s3://my-data-capture/input: 変換ジョブのキャプチャされた入力データ。

  • s3://my-data-capture/output: 変換ジョブのキャプチャされた出力データ。

データの重複を避けるため、前の 2 つのディレクトリにあるキャプチャされたデータはマニフェストです。各マニフェストは、ソースオブジェクトの Amazon S3 の場所を含むJSONLファイルです。マニフェストファイルの例として、以下のようなものがあります。

# under "/input" directory [ {"prefix":"s3://input_S3_uri/"}, "dummy_0.csv", "dummy_1.csv", "dummy_2.csv", ... ] # under "/output" directory [ {"prefix":"s3://output_S3_uri/"}, "dummy_0.csv.out", "dummy_1.csv.out", "dummy_2.csv.out", ... ]

変換ジョブは、これらのマニフェストを整理し、S3 yyyy/mm/dd/hh プレフィックスでラベル付けして、いつキャプチャされたかを示します。これにより、モデルモニターは分析するデータの適切な部分を判断しやすくなります。例えば、2022-8-26 13PM 時に変換ジョブを開始するとUTC、キャプチャされたデータには2022/08/26/13/プレフィックス文字列のラベルが付けられます。

InferenceId 生成

変換ジョブの DataCaptureConfig を設定するときに、ブール型フラグ GenerateInferenceId をオンにできます。これは、ユーザーが取り込んだ Ground Truth データが必要となる、モデル品質やモデルバイアスのモニタリングジョブを実行しなければならない場合に特に便利です。モデルモニターは、推論 ID を使用してキャプチャされたデータと Ground Truth データを照合します。Ground Truth 取り込みに関する詳細については、「Ground Truth ラベルを取り込んで予測とマージする」を参照してください。GenerateInferenceId がオンの場合、変換出力は、各レコードUTCの に推論 ID (ランダムな UUID) と変換ジョブの開始時刻を追加します。モデル品質とモデルバイアスのモニタリングを実行するには、これら 2 つの値が必要です。Ground Truth データを作成するときは、出力データと一致するように同じ推論 ID を指定する必要があります。現在、この機能は CSV、、JSONおよび JSONL形式の変換出力をサポートしています。

変換出力が CSV形式の場合、出力ファイルは次の例のようになります。

0, 1f1d57b1-2e6f-488c-8c30-db4e6d757861,2022-08-30T00:49:15Z 1, 22445434-0c67-45e9-bb4d-bd1bf26561e6,2022-08-30T00:49:15Z ...

最後の 2 つの列は推論 ID と変換ジョブの開始時刻です。これらは変更しないでください。残りの列は変換ジョブの出力です。

変換出力が JSONまたは JSONL形式の場合、出力ファイルは次の例のようになります。

{"output": 0, "SageMakerInferenceId": "1f1d57b1-2e6f-488c-8c30-db4e6d757861", "SageMakerInferenceTime": "2022-08-30T00:49:15Z"} {"output": 1, "SageMakerInferenceId": "22445434-0c67-45e9-bb4d-bd1bf26561e6", "SageMakerInferenceTime": "2022-08-30T00:49:15Z"} ...

SageMakerInferenceIdSageMakerInferenceTime の 2 つのフィールドが追加されています。これらのフィールドは、マージジョブに必要であるため、モデル品質モニタリングやモデルバイアスモニタリングを実行する必要がある場合は変更しないでください。