配置和创建端点 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

配置和创建端点

创建适合您的模型的新端点配置,然后使用此配置创建端点。您可以使用在预检查步骤中验证的模型容器来创建端点,并启用 SageMaker Clarify 在线解释能力功能。

通过 CreateEndpointConfig API,使用 sagemaker_client 对象创建端点。按照如下方式,在 ExplainerConfig 参数内设置成员 ClarifyExplainerConfig

sagemaker_client.create_endpoint_config( EndpointConfigName='name-of-your-endpoint-config', ExplainerConfig={ 'ClarifyExplainerConfig': { 'EnableExplanations': '`true`', 'InferenceConfig': { ... }, 'ShapConfig': { ... } }, }, ProductionVariants=[{ 'VariantName': 'AllTraffic', 'ModelName': 'name-of-your-model', 'InitialInstanceCount': 1, 'InstanceType': 'ml.m5.xlarge', }] ... ) sagemaker_client.create_endpoint( EndpointName='name-of-your-endpoint', EndpointConfigName='name-of-your-endpoint-config' )

第一次调用 sagemaker_client 对象时,会创建一个启用解释功能的新端点配置。第二个调用会使用端点配置来启动端点。

注意

您还可以在受 SageMaker 实时推理多模型端点支持的一个容器中托管多个模型,并使用 SageMaker Clarify 配置在线解释能力。

EnableExplanations 表达式

EnableExplanations 参数是一个 JMESPath 布尔表达式字符串。它会针对解释能力请求中的每个记录进行评估。如果该参数的计算结果为 true,则将对记录进行解释。如果该参数的计算结果为 false,则不会生成解释。

SageMaker Clarify 将每个记录的模型容器输出反序列化为 JSON 兼容数据结构,然后使用 EnableExplanations 参数来评估数据。

注意

根据模型容器输出的格式,有两个记录选项。

  • 如果模型容器输出采用 CSV 格式,则记录将以 JSON 数组的形式加载。

  • 如果模型容器输出采用 JSON 行格式,则记录将以 JSON 对象的形式加载。

EnableExplanations 参数是一个 JMESPath 表达式,可以在 InvokeEndpointCreateEndpointConfig 操作期间传递。如果提供的 JMESPath 表达式无效,则端点创建操作将会失败。如果该表达式有效,但表达式计算出现意外结果,则端点将成功创建,但是调用端点时会出现错误。使用 InvokeEndpoint API 测试 EnableExplanations 表达式,然后将该表达式应用于端点配置。

下面是有效 EnableExplanations 表达式的一些示例。在这些示例中,JMESPath 表达式使用反引号字符将文字括起来。例如,`true` 表示 true。

表达式(字符串表示) 模型容器输出(字符串表示) 计算结果(布尔值) 含义

'`true`'

(不适用)

True

无条件激活在线解释能力。

'`false`'

(不适用)

False

无条件地停用在线解释能力。

'[1]>`0.5`'

'1,0.6'

True

对于每个记录,模型容器都会输出其预测标签和概率。解释一个记录的概率(在索引 1 处)是否大于 0.5。

'probability>`0.5`'

'{"predicted_label":1,"probability":0.6}'

True

对于每个记录,模型容器都会输出 JSON 数据。解释一个记录的概率是否大于 0.5。

'!contains(probabilities[:-1], max(probabilities))'

'{"probabilities": [0.4, 0.1, 0.4], "labels":["cat","dog","fish"]}'

False

对于多分类模型:解释一个记录的预测标签(具有最大概率值的分类)是否为最后一个分类。从字面看,该表达式意味着最大概率值不在排除最后一个概率的概率列表中。

合成数据集

SageMaker Clarify 使用 Kernel SHAP 算法。在给定记录(也称为样本或实例)和 SHAP 配置的情况下,解释器首先会生成合成数据集。接下来,SageMaker Clarify 在模型容器中查询数据集的预测,然后进行计算并返回特征归因。合成数据集的大小会对 Clarify 解释器的运行时间产生影响。与较小的合成数据集相比,较大的合成数据集需要更长时间来获得模型预测。

合成数据集的大小可以通过以下公式确定:

Synthetic dataset size = SHAP baseline size * n_samples

SHAP 基线大小是 SHAP 基线数据中的记录数。此信息提取自 ShapBaselineConfig

n_samples 的大小由解释器配置中的参数 NumberOfSamples 和特征数量设置。如果特征数量为 n_features,则 n_samples 如下:

n_samples = MIN(NumberOfSamples, 2^n_features - 2)

如果未提供 NumberOfSamples,则下面会显示 n_samples

n_samples = MIN(2*n_features + 2^11, 2^n_features - 2)

例如,对于包含 10 个特征的表记录,SHAP 基线大小为 1。如果未提供 NumberOfSamples,则合成数据集包含 1022 个记录。如果记录有 20 个特征,则合成数据集包含 2088 个记录。

对于 NLP 问题,n_features 等于非文本特征的数量加上文本单元的数量。

注意

InvokeEndpoint API 存在请求超时限制。如果合成数据集太大,解释器可能无法在此时间限制内完成计算。如有必要,请使用前面的信息来理解和减小 SHAP 基线大小和 NumberOfSamples。如果您的模型容器设置为处理批处理请求,则您也可以调整 MaxRecordCount 的值。