

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建基准
<a name="model-monitor-create-baseline"></a>

统计数据和约束的基准计算需作为检测数据漂移和其他数据质量问题的标准。Model Monitor 提供了一个内置容器，该容器能够自动建议针对 CSV 和平面 JSON 输入的约束。此*sagemaker-model-monitor-analyzer*容器还为您提供了一系列模型监控功能，包括根据基准进行约束验证和发出 Amazon CloudWatch 指标。此容器基于 Spark 版本 3.3.0，并通过 [Deequ](https://github.com/awslabs/deequ) 版本 2.0.2 构建。基准数据集中的所有列名称都必须符合 Spark。对于列名称，请仅使用小写字符，`_` 是唯一的特殊字符。

用来训练模型的训练数据集通常是一个很好的基准数据集。训练数据集数据架构和推理数据集架构应完全匹配（特征的数量和顺序）。请注意，假设这些 prediction/output 列是训练数据集中的第一列。在训练数据集中，您可以让 SageMaker AI 建议一组基线约束条件并生成描述性统计数据以探索数据。对于此示例，上传已用于训练本示例中包含的预训练模型的训练数据集。如果您已将训练数据集存储在 Amazon S3 中，则可以直接指向该数据集。

**从训练数据集创建基准** 

当您的训练数据准备就绪并存储在 Amazon S3 中时，请`DefaultModelMonitor.suggest_baseline(..)`使用 Amaz [ SageMaker on Python 软件开发工具包](https://sagemaker.readthedocs.io/en/stable)开始基准处理任务。这将使用 [Amazon SageMaker 模型监控器预建容器](model-monitor-pre-built-container.md)，它会生成基准统计数据，建议数据集的基准约束并将其写入您指定的 `output_s3_uri` 位置。

```
from sagemaker.model_monitor import DefaultModelMonitor
from sagemaker.model_monitor.dataset_format import DatasetFormat

my_default_monitor = DefaultModelMonitor(
    role=role,
    instance_count=1,
    instance_type='ml.m5.xlarge',
    volume_size_in_gb=20,
    max_runtime_in_seconds=3600,
)

my_default_monitor.suggest_baseline(
    baseline_dataset=baseline_data_uri+'/training-dataset-with-header.csv',
    dataset_format=DatasetFormat.csv(header=True),
    output_s3_uri=baseline_results_uri,
    wait=True
)
```

**注意**  
如果您将训练数据集中的 feature/column 名称作为第一行并设置`header=True`选项（如上一个代码示例所示）， SageMaker AI 将使用约束和统计文件中的要素名称。

数据集的基准统计数据包含在 statistics.json 文件中，建议的基准约束包含在 constraints.json 文件中，这两个文件位于您使用 `output_s3_uri` 指定的位置。

表格数据集统计数据和约束的输出文件


| 文件名称 | 说明 | 
| --- | --- | 
| statistics.json |  此文件应具有所分析数据集中每个特征的列式统计数据。有关此文件的架构的更多信息，请参阅[统计数据的架构（statistics.json 文件）](model-monitor-byoc-statistics.md)。  | 
| constraints.json |  此文件应对观察到的特征有约束。有关此文件的架构的更多信息，请参阅[约束的架构（constraints.json 文件）](model-monitor-byoc-constraints.md)。  | 

[Amaz SageMaker on Python 软件开发工具包](https://sagemaker.readthedocs.io/en/stable)提供了用于生成基准统计数据和约束条件的便捷函数。但是，如果您想改为直接调用处理作业来达到此目的，则需要设置 `Environment` 映射，如以下示例中所示：

```
"Environment": {
    "dataset_format": "{\"csv\”: { \”header\”: true}",
    "dataset_source": "/opt/ml/processing/sm_input",
    "output_path": "/opt/ml/processing/sm_output",
    "publish_cloudwatch_metrics": "Disabled",
}
```