def create_model_version(self, model_name: str, version_name: str, source_package_id: int, description: str = None, metadata: Dict = None) -> ModelVersion: """Create a model version without deploying it. Then you can optionally upload artifacts to the model version and later deploy it. Args: model_name (str): Create the version on the model with this name. version_name (str): Name of the the model version. source_package_id (int): Use the source package with this id. The source package must have an available predict operation. description (str): Description of model version metadata (Dict[str, Any]): Metadata about model version Returns: ModelVersion: The created model version. """ url = "/modelhosting/models/{}/versions".format(model_name) body = { "name": version_name, "description": description or "", "sourcePackageId": source_package_id, "metadata": metadata or {}, } res = self._post(url, json=body) return ModelVersion._load(res.json())
def update_model_version(self, model_name: str, version_name: str, description: str = None, metadata: Dict[str, str] = None) -> ModelVersion: """Update description or metadata on a model version. Args: model_name (str): Name of model containing the model version. version_name (str): Name of model version to update. description (str): New description. metadata (Dict[str, str]): New metadata Returns: ModelVersion: The updated model version. """ url = "/modelhosting/models/{}/versions/{}/update".format( model_name, version_name) body = {} if description: body.update({"description": {"set": description}}) if metadata: body.update({"metadata": {"set": metadata}}) res = self._post(url, json=body) return ModelVersion._load(res.json())
def deprecate_model_version(self, model_name: str, version_name: str) -> ModelVersion: """Deprecate a model version Args: model_name (str): Name of model version_name (str): name of model version to deprecate Returns: ModelVersion: The deprecated model version """ url = "/modelhosting/models/{}/versions/{}/deprecate".format( model_name, version_name) res = self._post(url) return ModelVersion._load(res.json())
def get_model_version(self, model_name: str, version_name: str) -> ModelVersion: """Get a specific model version by name. Args: model_name (str): Name of model which has the model version. version_name (str): Name of model version. Returns: ModelVersion: The requested model version """ url = "/modelhosting/models/{}/versions/{}".format( model_name, version_name) res = self._get(url) return ModelVersion._load(res.json())
def deploy_awaiting_model_version(self, model_name: str, version_name: str) -> ModelVersion: """Deploy an already created model version awaiting manual deployment. The model version must have status AWAITING_MANUAL_DEPLOYMENT in order for this to work. Args: model_name (str): The name of the model containing the version to deploy. version_name (str): The name of the model version to deploy. Returns: ModelVersion: The deployed model version. """ url = "/modelhosting/models/{}/versions/{}/deploy".format( model_name, version_name) res = self._post(url, json={}) return ModelVersion._load(res.json())