1

我是 sagemaker 的新手。我试图弄清楚如何使用 AWS sagemaker 执行 A/B 测试。我了解设置 train_instance_count 会将培训分布在两个实例中。但是如何指定每个模型将处理和执行 A/B 测试的推理调用百分比?这是我可以从文档中找到的全部内容

“Amazon SageMaker 还可以为您管理模型 A/B 测试。您可以配置终端节点以将流量分散到多达五个不同的模型中,并设置您希望每个模型处理的推理调用的百分比。您可以在飞,给你很大的灵活性来运行实验并确定哪个模型在现实世界中产生最准确的结果。”

4

2 回答 2

3

您可以在 Amazon SageMaker 终端节点后面拥有多个生产变体。每个生产变体都有一个初始变体权重,根据每个变体权重与权重总和的比率,SageMaker 可以将调用分配给每个模型。例如,如果您只有一个权重为 1 的生产变体,则所有流量都将流向此变体。如果您添加另一个初始权重为 2 的生产变体,则新变体将获得 2/3 的流量,而第一个变体将获得 1/3。

您可以在此处查看有关 Amazon SageMaker 文档中 ProductionVariant 的更多详细信息:https ://docs.aws.amazon.com/sagemaker/latest/dg/API_ProductionVariant.html

您可以在“创建端点配置”时提供一组 ProductionVariants:https ://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpointConfig.html ,您可以使用“更新端点权重和容量”来更新变体" 调用:https ://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html

于 2018-03-04T19:11:02.820 回答
1

你可以使用这样的东西,我刚刚创建了一个函数,它使用一些用户输入来实现 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)
于 2018-08-27T21:54:28.463 回答