def test_model(sagemaker_session): model = XGBoostModel( "s3://some/data.tar.gz", role=ROLE, framework_version=XGBOOST_LATEST_VERSION, entry_point=SCRIPT_PATH, sagemaker_session=sagemaker_session, ) predictor = model.deploy(1, CPU) assert isinstance(predictor, XGBoostPredictor)
def main(): print('Starting model training.') print('Note: if launching for the first time in local mode, container image download might take a few minutes to complete.') hyperparameters = { "max_depth": "5", "eta": "0.2", "gamma": "4", "min_child_weight": "6", "subsample": "0.7", "objective": "reg:squarederror", "num_round": "50", "verbosity": "2", } xgb_script_mode_estimator = XGBoost( entry_point="./code/abalone.py", hyperparameters=hyperparameters, role=DUMMY_IAM_ROLE, instance_count=1, instance_type='local', framework_version="1.2-1" ) train_input = TrainingInput("file://./data/train/abalone", content_type="text/libsvm") xgb_script_mode_estimator.fit({"train": train_input, "validation": train_input}) print('Completed model training') model_data = xgb_script_mode_estimator.model_data print(model_data) xgb_inference_model = XGBoostModel( model_data=model_data, role=DUMMY_IAM_ROLE, entry_point="./code/inference.py", framework_version="1.2-1", ) print('Deploying endpoint in local mode') predictor = xgb_inference_model.deploy( initial_instance_count=1, instance_type="local", ) a_young_abalone = "6 1:3 2:0.37 3:0.29 4:0.095 5:0.249 6:0.1045 7:0.058 8:0.067" do_inference_on_local_endpoint(predictor, a_young_abalone) an_old_abalone = "15 1:1 2:0.655 3:0.53 4:0.175 5:1.2635 6:0.486 7:0.2635 8:0.415" do_inference_on_local_endpoint(predictor, an_old_abalone) print('About to delete the endpoint to stop paying (if in cloud mode).') predictor.delete_endpoint(predictor.endpoint_name)
def test_xgboost_serverless_inference( xgboost_training_job, sagemaker_session, xgboost_latest_version, ): endpoint_name = unique_name_from_base( "test-xgboost-deploy-model-serverless") with timeout_and_delete_endpoint_by_name(endpoint_name, sagemaker_session): desc = sagemaker_session.sagemaker_client.describe_training_job( TrainingJobName=xgboost_training_job) model_data = desc["ModelArtifacts"]["S3ModelArtifacts"] xgboost = XGBoostModel( sagemaker_session=sagemaker_session, model_data=model_data, role=ROLE, entry_point=os.path.join(DATA_DIR, "xgboost_abalone", "abalone.py"), framework_version=xgboost_latest_version, ) xgboost.deploy(serverless_inference_config=ServerlessInferenceConfig(), endpoint_name=endpoint_name)
def test_model_custom_serialization(sagemaker_session, xgboost_framework_version): model = XGBoostModel( "s3://some/data.tar.gz", role=ROLE, framework_version=xgboost_framework_version, entry_point=SCRIPT_PATH, sagemaker_session=sagemaker_session, ) custom_serializer = Mock() custom_deserializer = Mock() predictor = model.deploy( 1, CPU, serializer=custom_serializer, deserializer=custom_deserializer, ) assert isinstance(predictor, XGBoostPredictor) assert predictor.serializer is custom_serializer assert predictor.deserializer is custom_deserializer