我是sagemaker的新手。我正在尝试弄清楚如何使用AWS sagemaker执行A/B测试。我知道设置train_instance_count会将培训分布到两个实例中。但是,如何指定每个模型将处理和执行 A/B 测试的推理调用百分比的集合? 这是我能从文档中找到的全部内容
"Amazon SageMaker 还可以为您管理模型 A/B 测试。您可以 将终端节点配置为将流量分散到多达五个 不同的模型并设置所需的推理调用百分比 每一个要处理。您可以即时更改所有这些,为您提供 运行实验和确定哪种模型的灵活性很大 在现实世界中产生最准确的结果。
您可以在 Amazon SageMaker 终端节点后面有多个生产变体。每个生产多属性都有一个初始多属性权重,根据每个多属性权重与总权重总和的比率,SageMaker 可以将调用分配给每个模型。例如,如果您只有一个权重为 1 的生产多属性,则所有流量都将流向此多属性。如果您添加另一个初始权重为 2 的生产多属性,则新多属性将获得 2/3 的流量,第一个多属性将获得 1/3。
您可以在此处查看有关 Amazon SageMaker 文档上的 ProductionVariant 的更多详细信息:https://docs.aws.amazon.com/sagemaker/latest/dg/API_ProductionVariant.html
您可以在"创建端点配置"时提供生产变体数组:https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpointConfig.html,并且您可以使用"更新端点权重和容量"调用更新变体:https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html
您可以使用这样的东西,我刚刚创建了一个函数,该函数通过一些用户输入实现 AWS 开发工具包库。该示例根据以下代码中的 InitialVariantWeight 参数,以 1:1 的比例拆分模型 1 和模型 2 的流量。有关 SageMaker 库的详细信息,请访问:https://boto3.readthedocs.io/en/latest/reference/services/sagemaker.html
def custom_create_endpoint_config(model1,model2,endpoint_config_name,instancetype= 'm1.t2.medium'):
response = client.create_endpoint_config(
EndpointConfigName=endpoint_config_name,
ProductionVariants= [
{
'VariantName': 'variant1',
'ModelName': model1,
'InitialInstanceCount': 1,
'InstanceType': instancetype,
'InitialVariantWeight': 1
},
{
'VariantName': 'variant2',
'ModelName': model2,
'InitialInstanceCount': 1,
'InstanceType': instancetype,
'InitialVariantWeight': 1
},],
Tags=[
{
'Key': str(endpoint_config_name +'_key'),
'Value': str(endpoint_config_value +'_value')
},]
)
def custom_delete_endpoint_config(endpoint_config_name):
client.delete_endpoint_config(
EndpointConfigName=config_name)