def test_delete_endpoint_only(): sagemaker_session = empty_sagemaker_session() predictor = Predictor(ENDPOINT, sagemaker_session=sagemaker_session) predictor.delete_endpoint(delete_endpoint_config=False) sagemaker_session.delete_endpoint.assert_called_with(ENDPOINT) sagemaker_session.delete_endpoint_config.assert_not_called()
def test_delete_endpoint_with_config(): sagemaker_session = empty_sagemaker_session() sagemaker_session.sagemaker_client.describe_endpoint = Mock( return_value={"EndpointConfigName": "endpoint-config"}) predictor = Predictor(ENDPOINT, sagemaker_session=sagemaker_session) predictor.delete_endpoint() sagemaker_session.delete_endpoint.assert_called_with(ENDPOINT) sagemaker_session.delete_endpoint_config.assert_called_with( "endpoint-config")
def main(): image_name = "sagemaker-sklearn-rf-regressor-local" # Prepare data for model inference - we use the Boston housing dataset print('Preparing data for model inference') data = fetch_california_housing() X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.25, random_state=42) # we don't train a model, so we will need only the testing data testX = pd.DataFrame(X_test, columns=data.feature_names) # Download a pre-trained model file print('Downloading a pre-trained model file') s3.download_file( 'aws-ml-blog', 'artifacts/scikit_learn_bring_your_own_model/model.joblib', 'model.joblib') # Creating a model.tar.gz file tar = tarfile.open('model.tar.gz', 'w:gz') tar.add('model.joblib') tar.close() model = Model(image_uri=image_name, role=DUMMY_IAM_ROLE, model_data='file://./model.tar.gz') print('Deploying endpoint in local mode') endpoint = model.deploy(initial_instance_count=1, instance_type='local', endpoint_name="my-local-endpoint") predictor = Predictor(endpoint_name="my-local-endpoint", sagemaker_session=sagemaker_session, serializer=CSVSerializer(), deserializer=CSVDeserializer()) predictions = predictor.predict(testX[data.feature_names].head(5).to_csv( header=False, index=False)) print(f"Predictions: {predictions}") print('About to delete the endpoint to stop paying (if in cloud mode).') predictor.delete_endpoint(predictor.endpoint_name)
class Predictor: def __init__(self, endpoint_name): self.endpoint_name = endpoint_name self.session = get_sagemaker_session() self.attach_predictor() def attach_predictor(self): self.predictor = SagemakerPredictor(endpoint_name=self.endpoint_name, sagemaker_session=self.session, serializer=NumpySerializer(), deserializer=NumpyDeserializer()) def predict(self, data): return self.predictor.predict(data) def undeploy(self): self.predictor.delete_endpoint()