Skip to content

Commit df4af48

Browse files
committed
Add ModelBase
1 parent 9e1fe91 commit df4af48

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

src/sagemaker/model.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"""Placeholder docstring"""
1414
from __future__ import absolute_import
1515

16+
import abc
1617
import json
1718
import logging
1819
import os
@@ -29,6 +30,7 @@
2930
git_utils,
3031
)
3132
from sagemaker.deprecations import removed_kwargs
33+
from sagemaker.predictor import PredictorBase
3234
from sagemaker.transformer import Transformer
3335

3436
LOGGER = logging.getLogger("sagemaker")
@@ -38,7 +40,23 @@
3840
)
3941

4042

41-
class Model(object):
43+
class ModelBase(abc.ABC):
44+
"""An object that encapsulates a trained model.
45+
46+
Models can be deployed to compute services like a SageMaker ``Endpoint``
47+
or Lambda. Deployed models can be used to perform real-time inference.
48+
"""
49+
50+
@abc.abstractmethod
51+
def deploy(self, *args, **kwargs) -> PredictorBase:
52+
"""Deploy this model to a compute service."""
53+
54+
@abc.abstractmethod
55+
def destroy(self, *args, **kwargs) -> None:
56+
"""Destroy resources associated with this model."""
57+
58+
59+
class Model(ModelBase):
4260
"""A SageMaker ``Model`` that can be deployed to an ``Endpoint``."""
4361

4462
def __init__(
@@ -878,6 +896,8 @@ def delete_model(self):
878896
)
879897
self.sagemaker_session.delete_model(self.name)
880898

899+
destroy = delete_model
900+
881901

882902
SCRIPT_PARAM_NAME = "sagemaker_program"
883903
DIR_PARAM_NAME = "sagemaker_submit_directory"

0 commit comments

Comments
 (0)