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)
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, )
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()
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)