Example #1
0
def test_tuning_kmeans_identical_dataset_algorithm_tuner(
        sagemaker_session, kmeans_train_set, kmeans_estimator,
        hyperparameter_ranges):
    """Tests Identical dataset and algorithm use case with one parent and child job launched with
    .identical_dataset_and_algorithm_tuner()"""

    parent_tuning_job_name = unique_name_from_base("km-iden1-parent",
                                                   max_length=32)
    child_tuning_job_name = unique_name_from_base("km-iden1-child",
                                                  max_length=32)

    parent_tuner = _tune(
        kmeans_estimator,
        kmeans_train_set,
        job_name=parent_tuning_job_name,
        hyperparameter_ranges=hyperparameter_ranges,
    )

    child_tuner = parent_tuner.identical_dataset_and_algorithm_tuner()
    _tune(
        kmeans_estimator,
        kmeans_train_set,
        job_name=child_tuning_job_name,
        tuner=child_tuner,
        max_parallel_jobs=1,
        max_jobs=1,
    )

    child_warm_start_config_response = WarmStartConfig.from_job_desc(
        sagemaker_session.sagemaker_client.describe_hyper_parameter_tuning_job(
            HyperParameterTuningJobName=child_tuning_job_name)
        ["WarmStartConfig"])

    assert child_warm_start_config_response.type == child_tuner.warm_start_config.type
    assert child_warm_start_config_response.parents == child_tuner.warm_start_config.parents
Example #2
0
def test_tuning_kmeans_identical_dataset_algorithm_tuner_raw(
        sagemaker_session, kmeans_train_set, kmeans_estimator,
        hyperparameter_ranges):
    parent_tuning_job_name = unique_name_from_base("kmeans-identical",
                                                   max_length=32)
    child_tuning_job_name = unique_name_from_base("c-kmeans-identical",
                                                  max_length=32)
    _tune(
        kmeans_estimator,
        kmeans_train_set,
        job_name=parent_tuning_job_name,
        hyperparameter_ranges=hyperparameter_ranges,
        max_parallel_jobs=1,
        max_jobs=1,
    )
    child_tuner = _tune(
        kmeans_estimator,
        kmeans_train_set,
        job_name=child_tuning_job_name,
        hyperparameter_ranges=hyperparameter_ranges,
        warm_start_config=WarmStartConfig(
            warm_start_type=WarmStartTypes.IDENTICAL_DATA_AND_ALGORITHM,
            parents=[parent_tuning_job_name],
        ),
        max_parallel_jobs=1,
        max_jobs=1,
    )

    child_warm_start_config_response = WarmStartConfig.from_job_desc(
        sagemaker_session.sagemaker_client.describe_hyper_parameter_tuning_job(
            HyperParameterTuningJobName=child_tuning_job_name)
        ["WarmStartConfig"])

    assert child_warm_start_config_response.type == child_tuner.warm_start_config.type
    assert child_warm_start_config_response.parents == child_tuner.warm_start_config.parents
def test_create_transfer_learning_tuner(sagemaker_session,
                                        kmeans_train_set,
                                        kmeans_estimator,
                                        hyperparameter_ranges):
    """Tests Transfer learning use case with two parents and child job launched with
        create_transfer_learning_tuner() """
    parent_tuning_job_name_1 = name_from_base("km-tran2-parent1", max_length=32, short=True)
    parent_tuning_job_name_2 = name_from_base("km-tran2-parent2", max_length=32, short=True)
    child_tuning_job_name = name_from_base("km-tran2-child", max_length=32, short=True)

    parent_tuner_1 = _tune(kmeans_estimator, kmeans_train_set, job_name=parent_tuning_job_name_1,
                           hyperparameter_ranges=hyperparameter_ranges, max_parallel_jobs=1, max_jobs=1)

    parent_tuner_2 = _tune(kmeans_estimator, kmeans_train_set, job_name=parent_tuning_job_name_2,
                           hyperparameter_ranges=hyperparameter_ranges, max_parallel_jobs=1, max_jobs=1)

    child_tuner = create_transfer_learning_tuner(parent=parent_tuner_1.latest_tuning_job.name,
                                                 sagemaker_session=sagemaker_session,
                                                 estimator=kmeans_estimator,
                                                 additional_parents={parent_tuner_2.latest_tuning_job.name})
    _tune(kmeans_estimator, kmeans_train_set, job_name=child_tuning_job_name, tuner=child_tuner)

    child_warm_start_config_response = WarmStartConfig.from_job_desc(
        sagemaker_session.sagemaker_client.describe_hyper_parameter_tuning_job(
            HyperParameterTuningJobName=child_tuning_job_name)["WarmStartConfig"])

    assert child_warm_start_config_response.type == child_tuner.warm_start_config.type
    assert child_warm_start_config_response.parents == child_tuner.warm_start_config.parents
def test_prepare_warm_start_config_cls(warm_start_config_req):
    warm_start_config = WarmStartConfig.from_job_desc(warm_start_config_req)

    assert warm_start_config.type == WarmStartTypes(
        warm_start_config_req["WarmStartType"]), "Warm start type initialization failed."

    for p in warm_start_config_req["ParentHyperParameterTuningJobs"]:
        assert p['HyperParameterTuningJobName'] in warm_start_config.parents, \
            "Warm start parents config initialization failed."
def test_transfer_learning_tuner(sagemaker_session,
                                 kmeans_train_set,
                                 kmeans_estimator,
                                 hyperparameter_ranges):
    """Tests Transfer learning use case with one parent and child job launched with
        .transfer_learning_tuner() """

    parent_tuning_job_name = name_from_base("km-tran1-parent", max_length=32, short=True)
    child_tuning_job_name = name_from_base("km-tran1-child", max_length=32, short=True)

    parent_tuner = _tune(kmeans_estimator, kmeans_train_set, job_name=parent_tuning_job_name,
                         hyperparameter_ranges=hyperparameter_ranges, max_jobs=1, max_parallel_jobs=1)

    child_tuner = parent_tuner.transfer_learning_tuner()
    _tune(kmeans_estimator, kmeans_train_set, job_name=child_tuning_job_name, tuner=child_tuner, max_parallel_jobs=1,
          max_jobs=1)

    child_warm_start_config_response = WarmStartConfig.from_job_desc(
        sagemaker_session.sagemaker_client.describe_hyper_parameter_tuning_job(
            HyperParameterTuningJobName=child_tuning_job_name)["WarmStartConfig"])

    assert child_warm_start_config_response.type == child_tuner.warm_start_config.type
    assert child_warm_start_config_response.parents == child_tuner.warm_start_config.parents
Example #6
0
def test_prepare_warm_start_config_cls_negative(warm_start_config_req):
    warm_start_config = WarmStartConfig.from_job_desc(warm_start_config_req)
    assert warm_start_config is None, "Warm start config should be None for invalid type/parents"