代码之家  ›  专栏  ›  技术社区  ›  Judy T Raj

在使用AWS sagemaker执行A/B测试时,如何设置推理调用的百分比?

  •  1
  • Judy T Raj  · 技术社区  · 6 年前

    我是sagemaker的新手。我想知道如何使用AWS sagemaker执行A/B测试。我知道设置train\u instance\u计数将在两个实例中分配培训。但是,如何指定每个模型将处理和执行A/B测试的推理调用的百分比集? 这是我从文件中所能找到的

    “亚马逊SageMaker还可以为您管理A/B模型测试。您可以 将端点配置为将流量分布到多达五个 不同的模型并设置所需推理调用的百分比 每个都要处理。你可以在飞行中改变这一切 运行实验和确定模型有很大的灵活性 生成真实世界中最精确的结果。"

    2 回复  |  直到 6 年前
        1
  •  3
  •   Guy    6 年前

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

    您可以在亚马逊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

        2
  •  1
  •   DPN    6 年前

    您可以这样使用,我刚刚创建了一个函数,它使用一些用户输入来实现AWS SDK库。该示例根据下面代码中的InitialVariantWeight参数,将model1和model2的流量按1:1的比例进行拆分。有关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)