def _get_sql_model_version(cls, session, name, version, eager=False): """ :param eager: If ``True``, eagerly loads the model version's tags. If ``False``, these attributes are not eagerly loaded and will be loaded when their corresponding object properties are accessed from the resulting ``SqlModelVersion`` object. """ _validate_model_name(name) _validate_model_version(version) query_options = cls._get_eager_model_version_query_options( ) if eager else [] conditions = [ SqlModelVersion.name == name, SqlModelVersion.version == version, SqlModelVersion.current_stage != STAGE_DELETED_INTERNAL ] versions = session.query(SqlModelVersion).options( *query_options).filter(*conditions).all() if len(versions) == 0: raise MlflowException( 'Model Version (name={}, version={}) ' 'not found'.format(name, version), RESOURCE_DOES_NOT_EXIST) if len(versions) > 1: raise MlflowException( 'Expected only 1 model version with (name={}, version={}). ' 'Found {}.'.format(name, version, len(versions)), INVALID_STATE) return versions[0]
def _get_sql_model_version(cls, session, name, version, eager=False): """ :param eager: If ``True``, eagerly loads the model version's tags. If ``False``, these attributes are not eagerly loaded and will be loaded when their corresponding object properties are accessed from the resulting ``SqlModelVersion`` object. """ _validate_model_name(name) _validate_model_version(version) query_options = cls._get_eager_model_version_query_options() if eager else [] conditions = [ SqlModelVersion.name == name, SqlModelVersion.version == version, SqlModelVersion.current_stage != STAGE_DELETED_INTERNAL, ] return cls._get_model_version_from_db(session, name, version, conditions, query_options)
def delete_model_version_tag(self, name, version, key): """ Delete a tag associated with the model version. :param name: Registered model name. :param version: Registered model version. :param key: Tag key. :return: None """ _validate_model_name(name) _validate_model_version(version) _validate_tag_name(key) with self.ManagedSessionMaker() as session: # check if model version exists self._get_sql_model_version(session, name, version) existing_tag = self._get_model_version_tag(session, name, version, key) if existing_tag is not None: session.delete(existing_tag)
def set_model_version_tag(self, name, version, tag): """ Set a tag for the model version. :param name: Registered model name. :param version: Registered model version. :param tag: :py:class:`mlflow.entities.model_registry.ModelVersionTag` instance to log. :return: None """ _validate_model_name(name) _validate_model_version(version) _validate_model_version_tag(tag.key, tag.value) with self.ManagedSessionMaker() as session: # check if model version exists self._get_sql_model_version(session, name, version) session.merge( SqlModelVersionTag(name=name, version=version, key=tag.key, value=tag.value) )