def test_candidate_estimator_rerun_with_optional_args(sagemaker_session,
                                                      cpu_instance_type):
    auto_ml_utils.create_auto_ml_job_if_not_exist(sagemaker_session)

    auto_ml = AutoML(role=ROLE,
                     target_attribute_name=TARGET_ATTRIBUTE_NAME,
                     sagemaker_session=sagemaker_session)

    candidates = auto_ml.list_candidates(job_name=AUTO_ML_JOB_NAME)
    candidate = candidates[1]

    candidate_estimator = CandidateEstimator(candidate, sagemaker_session)
    inputs = sagemaker_session.upload_data(path=TEST_DATA,
                                           key_prefix=PREFIX + "/input")
    endpoint_name = unique_name_from_base(
        "sagemaker-auto-ml-rerun-candidate-test")
    with timeout(minutes=AUTO_ML_DEFAULT_TIMEMOUT_MINUTES):
        candidate_estimator.fit(inputs, encrypt_inter_container_traffic=True)
        auto_ml.deploy(
            initial_instance_count=INSTANCE_COUNT,
            instance_type=cpu_instance_type,
            candidate=candidate,
            endpoint_name=endpoint_name,
        )

    endpoint_status = sagemaker_session.sagemaker_client.describe_endpoint(
        EndpointName=endpoint_name)["EndpointStatus"]
    assert endpoint_status == "InService"
    sagemaker_session.sagemaker_client.delete_endpoint(
        EndpointName=endpoint_name)
Exemple #2
0
def test_deploy(sagemaker_session, candidate_mock):
    auto_ml = AutoML(role=ROLE,
                     target_attribute_name=TARGET_ATTRIBUTE_NAME,
                     sagemaker_session=sagemaker_session)
    auto_ml.best_candidate = Mock(name="best_candidate",
                                  return_value=CANDIDATE_DICT)
    auto_ml._deploy_inference_pipeline = Mock("_deploy_inference_pipeline",
                                              return_value=None)
    auto_ml.deploy(
        initial_instance_count=INSTANCE_COUNT,
        instance_type=INSTANCE_TYPE,
        sagemaker_session=sagemaker_session,
    )
    auto_ml._deploy_inference_pipeline.assert_called_once()
    auto_ml._deploy_inference_pipeline.assert_called_with(
        candidate_mock.containers,
        initial_instance_count=INSTANCE_COUNT,
        instance_type=INSTANCE_TYPE,
        name=None,
        sagemaker_session=sagemaker_session,
        endpoint_name=None,
        tags=None,
        wait=True,
        update_endpoint=False,
        vpc_config=None,
        enable_network_isolation=False,
        model_kms_key=None,
        predictor_cls=None,
    )
Exemple #3
0
def test_candidate_estimator_default_rerun_and_deploy(sagemaker_session):
    auto_ml = AutoML(role=ROLE,
                     target_attribute_name=TARGET_ATTRIBUTE_NAME,
                     sagemaker_session=sagemaker_session)

    candidates = auto_ml.list_candidates(job_name=AUTO_ML_JOB_NAME)
    candidate = candidates[1]

    candidate_estimator = CandidateEstimator(candidate, sagemaker_session)
    inputs = sagemaker_session.upload_data(path=TEST_DATA,
                                           key_prefix=PREFIX + "/input")
    endpoint_name = unique_name_from_base(
        "sagemaker-auto-ml-rerun-candidate-test")
    with timeout(minutes=AUTO_ML_DEFAULT_TIMEMOUT_MINUTES):
        candidate_estimator.fit(inputs)
        auto_ml.deploy(
            initial_instance_count=INSTANCE_COUNT,
            instance_type=HOSTING_INSTANCE_TYPE,
            candidate=candidate,
            endpoint_name=endpoint_name,
        )

    endpoint_status = sagemaker_session.sagemaker_client.describe_endpoint(
        EndpointName=endpoint_name)["EndpointStatus"]
    assert endpoint_status == "InService"
    sagemaker_session.sagemaker_client.delete_endpoint(
        EndpointName=endpoint_name)
def test_deploy_optional_args(candidate_estimator, sagemaker_session,
                              candidate_mock):
    candidate_estimator.return_value = candidate_mock

    auto_ml = AutoML(role=ROLE,
                     target_attribute_name=TARGET_ATTRIBUTE_NAME,
                     sagemaker_session=sagemaker_session)
    mock_pipeline = Mock(name="pipeline_model")
    mock_pipeline.deploy = Mock(name="model_deploy")
    auto_ml.best_candidate = Mock(name="best_candidate",
                                  return_value=CANDIDATE_DICT)
    auto_ml.create_model = Mock(name="create_model",
                                return_value=mock_pipeline)

    auto_ml.deploy(
        initial_instance_count=INSTANCE_COUNT,
        instance_type=INSTANCE_TYPE,
        candidate=CANDIDATE_DICT,
        sagemaker_session=sagemaker_session,
        name=JOB_NAME,
        endpoint_name=JOB_NAME,
        tags=TAGS,
        wait=False,
        update_endpoint=True,
        vpc_config=VPC_CONFIG,
        enable_network_isolation=True,
        model_kms_key=OUTPUT_KMS_KEY,
        predictor_cls=RealTimePredictor,
        inference_response_keys=None,
    )

    auto_ml.create_model.assert_called_once()
    auto_ml.create_model.assert_called_with(
        name=JOB_NAME,
        sagemaker_session=sagemaker_session,
        candidate=CANDIDATE_DICT,
        inference_response_keys=None,
        vpc_config=VPC_CONFIG,
        enable_network_isolation=True,
        model_kms_key=OUTPUT_KMS_KEY,
        predictor_cls=RealTimePredictor,
    )

    mock_pipeline.deploy.assert_called_once()

    mock_pipeline.deploy.assert_called_with(
        initial_instance_count=INSTANCE_COUNT,
        instance_type=INSTANCE_TYPE,
        endpoint_name=JOB_NAME,
        tags=TAGS,
        wait=False,
        update_endpoint=True,
    )
def test_deploy(sagemaker_session, candidate_mock):
    auto_ml = AutoML(
        role=ROLE, target_attribute_name=TARGET_ATTRIBUTE_NAME, sagemaker_session=sagemaker_session
    )
    mock_pipeline = Mock(name="pipeline_model")
    mock_pipeline.deploy = Mock(name="model_deploy")
    auto_ml.best_candidate = Mock(name="best_candidate", return_value=CANDIDATE_DICT)
    auto_ml.create_model = Mock(name="create_model", return_value=mock_pipeline)
    auto_ml.deploy(
        initial_instance_count=INSTANCE_COUNT,
        instance_type=INSTANCE_TYPE,
        sagemaker_session=sagemaker_session,
    )
    auto_ml.create_model.assert_called_once()
    mock_pipeline.deploy.assert_called_once()
Exemple #6
0
def test_deploy_best_candidate(sagemaker_session):
    auto_ml = AutoML(role=ROLE,
                     target_attribute_name=TARGET_ATTRIBUTE_NAME,
                     sagemaker_session=sagemaker_session)
    best_candidate = auto_ml.best_candidate(job_name=AUTO_ML_JOB_NAME)
    endpoint_name = unique_name_from_base(
        "sagemaker-auto-ml-best-candidate-test")

    with timeout(minutes=AUTO_ML_DEFAULT_TIMEMOUT_MINUTES):
        auto_ml.deploy(
            candidate=best_candidate,
            initial_instance_count=INSTANCE_COUNT,
            instance_type=HOSTING_INSTANCE_TYPE,
            endpoint_name=endpoint_name,
        )

    endpoint_status = sagemaker_session.sagemaker_client.describe_endpoint(
        EndpointName=endpoint_name)["EndpointStatus"]
    assert endpoint_status == "InService"
    sagemaker_session.sagemaker_client.delete_endpoint(
        EndpointName=endpoint_name)