Как установить процент вызовов логического вывода при выполнении A/B-тестирования с помощью AWS sagemaker?

Я новичок в sagemaker. Я пытаюсь понять, как проводить A/B-тестирование с помощью AWS sagemaker. Я понимаю, что установка train_instance_count распределит обучение между двумя экземплярами. Но как указать процент вызовов логического вывода, который каждая модель будет обрабатывать и выполнять A/B-тестирование? Это все, что я смог найти в документах

«Amazon SageMaker также может управлять тестированием модели A/B для вас. Вы можете настроить конечную точку для распределения трафика по пяти различным моделям и установить процент вызовов логического вывода, которые вы хотите обрабатывать для каждой из них. Все это можно изменить на на лету, что дает вам большую гибкость для проведения экспериментов и определения того, какая модель дает наиболее точные результаты в реальном мире».


person Judy T Raj    schedule 02.03.2018    source источник


Ответы (2)


У вас может быть несколько производственных вариантов за конечной точкой Amazon SageMaker. Каждый производственный вариант имеет начальный вес варианта, и на основе отношения веса каждого варианта к общей сумме весов SageMaker может распределять вызовы по каждой из моделей. Например, если у вас только один рабочий вариант с весом 1, весь трафик будет идти на этот вариант. Если вы добавите еще один рабочий вариант с начальным весом 2, новый вариант получит 2/3 трафика, а первый вариант получит 1/3.

Дополнительные сведения о ProductionVariant в документации Amazon SageMaker можно найти здесь: 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

person Guy    schedule 04.03.2018

Вы можете использовать что-то вроде этого, я только что создал функцию, которая реализует библиотеку AWS SDK с некоторыми пользовательскими данными. В примере трафик разделяется в соотношении 1:1 для model1 и model2 на основе параметра InitialVariantWeight в приведенном ниже коде. Подробная информация о библиотеках 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)
person DPN    schedule 27.08.2018