Deprecate Task.set_model_config(), Task.get_model_config_text() and Task.get_model_config_dict()

This commit is contained in:
allegroai 2020-03-23 23:25:16 +02:00
parent 023f1721c1
commit 0211d233d4
4 changed files with 60 additions and 36 deletions

View File

@ -116,10 +116,10 @@ Task.current_task().set_model_label_enumeration( {"label": int(0), } )
### Can I store the model configuration file as well? <a name="store-model-configuration"></a> ### Can I store the model configuration file as well? <a name="store-model-configuration"></a>
Yes! Use the `Task.set_model_config()` method: Yes! Use the `Task.connect_configuration()` method:
```python ```python
Task.current_task().set_model_config("a very long text with the configuration file's content") Task.current_task().connect_configuration("/path/to/file")
``` ```
### I am training multiple models at the same time, but I only see one of them. What happened? <a name="only-last-model-appears"></a> ### I am training multiple models at the same time, but I only see one of them. What happened? <a name="only-last-model-appears"></a>

View File

@ -90,7 +90,7 @@ model.compile(loss='categorical_crossentropy',
# Connecting TRAINS # Connecting TRAINS
task = Task.init(project_name='examples', task_name='Keras with TensorBoard example') task = Task.init(project_name='examples', task_name='Keras with TensorBoard example')
task.set_model_config(config_dict={'test': 1337, 'nested': {'key': 'value', 'number': 1}}) task.connect_configuration({'test': 1337, 'nested': {'key': 'value', 'number': 1}})
# Advanced: setting model class enumeration # Advanced: setting model class enumeration
labels = dict(('digit_%d' % i, i) for i in range(10)) labels = dict(('digit_%d' % i, i) for i in range(10))

View File

@ -628,8 +628,8 @@ class InputModel(Model):
if model.id != self._EMPTY_MODEL_ID: if model.id != self._EMPTY_MODEL_ID:
task.set_input_model(model_id=model.id) task.set_input_model(model_id=model.id)
# only copy the model design if the task has no design to begin with # only copy the model design if the task has no design to begin with
if not self._task.get_model_config_text(): if not self._task._get_model_config_text():
task.set_model_config(config_text=model.model_design) task._set_model_config(config_text=model.model_design)
if not self._task.get_labels_enumeration(): if not self._task.get_labels_enumeration():
task.set_model_label_enumeration(model.data.labels) task.set_model_label_enumeration(model.data.labels)
@ -798,22 +798,22 @@ class OutputModel(BaseModel):
if running_remotely() and task.is_main_task(): if running_remotely() and task.is_main_task():
if self._floating_data: if self._floating_data:
self._floating_data.design = _Model._wrap_design(self._task.get_model_config_text()) or \ self._floating_data.design = _Model._wrap_design(self._task._get_model_config_text()) or \
self._floating_data.design self._floating_data.design
self._floating_data.labels = self._task.get_labels_enumeration() or \ self._floating_data.labels = self._task.get_labels_enumeration() or \
self._floating_data.labels self._floating_data.labels
elif self._base_model: elif self._base_model:
self._base_model.update(design=_Model._wrap_design(self._task.get_model_config_text()) or self._base_model.update(design=_Model._wrap_design(self._task._get_model_config_text()) or
self._base_model.design) self._base_model.design)
self._base_model.update(labels=self._task.get_labels_enumeration() or self._base_model.labels) self._base_model.update(labels=self._task.get_labels_enumeration() or self._base_model.labels)
elif self._floating_data is not None: elif self._floating_data is not None:
# we copy configuration / labels if they exist, obviously someone wants them as the output base model # we copy configuration / labels if they exist, obviously someone wants them as the output base model
if _Model._unwrap_design(self._floating_data.design): if _Model._unwrap_design(self._floating_data.design):
if not task.get_model_config_text(): if not task._get_model_config_text():
task.set_model_config(config_text=self._floating_data.design) task._set_model_config(config_text=self._floating_data.design)
else: else:
self._floating_data.design = _Model._wrap_design(self._task.get_model_config_text()) self._floating_data.design = _Model._wrap_design(self._task._get_model_config_text())
if self._floating_data.labels: if self._floating_data.labels:
task.set_model_label_enumeration(self._floating_data.labels) task.set_model_label_enumeration(self._floating_data.labels)
@ -1037,8 +1037,8 @@ class OutputModel(BaseModel):
config_text = self._resolve_config(config_text=config_text, config_dict=config_dict) config_text = self._resolve_config(config_text=config_text, config_dict=config_dict)
if self._task and not self._task.get_model_config_text(): if self._task and not self._task._get_model_config_text():
self._task.set_model_config(config_text=config_text) self._task._set_model_config(config_text=config_text)
if self.id: if self.id:
# update the model object (this will happen if we resumed a training task) # update the model object (this will happen if we resumed a training task)
@ -1095,7 +1095,7 @@ class OutputModel(BaseModel):
self._base_model = self._task.create_output_model() self._base_model = self._task.create_output_model()
# update the model from the task inputs # update the model from the task inputs
labels = self._task.get_labels_enumeration() labels = self._task.get_labels_enumeration()
config_text = self._task.get_model_config_text() config_text = self._task._get_model_config_text()
parent = self._task.output_model_id or self._task.input_model_id parent = self._task.output_model_id or self._task.input_model_id
self._base_model.update( self._base_model.update(
labels=self._floating_data.labels or labels, labels=self._floating_data.labels or labels,

View File

@ -842,38 +842,28 @@ class Task(_Task):
return self is self.__main_task return self is self.__main_task
def set_model_config(self, config_text=None, config_dict=None): def set_model_config(self, config_text=None, config_dict=None):
# type: (Optional[str], Optional[Mapping]) -> None
""" """
Set Task model configuration text/dict (before creating an output model) .. deprecated:: 0.14.1
When an output model is created it will inherit these properties Use :func:`connect_configuration` instead
:param config_text: model configuration (unconstrained text string). usually the content of a configuration file.
If `config_text` is not None, `config_dict` must not be provided.
:param config_dict: model configuration parameters dictionary.
If `config_dict` is not None, `config_text` must not be provided.
""" """
design = OutputModel._resolve_config(config_text=config_text, config_dict=config_dict) self._set_model_config(config_text=config_text, config_dict=config_dict)
super(Task, self)._set_model_design(design=design)
def get_model_config_text(self): def get_model_config_text(self):
# type: () -> str
""" """
Get Task model configuration text (before creating an output model) .. deprecated:: 0.14.1
When an output model is created it will inherit these properties Use :func:`connect_configuration` instead
:return: model config_text (unconstrained text string). usually the content of a configuration file.
If `config_text` is not None, `config_dict` must not be provided.
""" """
return super(Task, self).get_model_design() return self._get_model_config_text()
def get_model_config_dict(self): def get_model_config_dict(self):
# type: () -> Dict
""" """
Get Task model configuration dictionary (before creating an output model) .. deprecated:: 0.14.1
When an output model is created it will inherit these properties Use :func:`connect_configuration` instead
:return: model config_text (unconstrained text string). usually the content of a configuration file.
If `config_text` is not None, `config_dict` must not be provided.
""" """
config_text = self.get_model_config_text() return self._get_model_config_dict()
return OutputModel._text_to_config_dict(config_text)
def set_model_label_enumeration(self, enumeration=None): def set_model_label_enumeration(self, enumeration=None):
""" """
@ -988,6 +978,40 @@ class Task(_Task):
Session.default_web = web_host or '' Session.default_web = web_host or ''
Session.default_files = files_host or '' Session.default_files = files_host or ''
def _set_model_config(self, config_text=None, config_dict=None):
# type: (Optional[str], Optional[Mapping]) -> None
"""
Set Task model configuration text/dict
:param config_text: model configuration (unconstrained text string). usually the content of a configuration file.
If `config_text` is not None, `config_dict` must not be provided.
:param config_dict: model configuration parameters dictionary.
If `config_dict` is not None, `config_text` must not be provided.
"""
design = OutputModel._resolve_config(config_text=config_text, config_dict=config_dict)
super(Task, self)._set_model_design(design=design)
def _get_model_config_text(self):
# type: () -> str
"""
Get Task model configuration text (before creating an output model)
When an output model is created it will inherit these properties
:return: model config_text (unconstrained text string)
"""
return super(Task, self).get_model_design()
def _get_model_config_dict(self):
# type: () -> Dict
"""
Get Task model configuration dictionary (before creating an output model)
When an output model is created it will inherit these properties
:return: config_dict: model configuration parameters dictionary
"""
config_text = self._get_model_config_text()
return OutputModel._text_to_config_dict(config_text)
@classmethod @classmethod
def _reset_current_task_obj(cls): def _reset_current_task_obj(cls):
if not cls.__main_task: if not cls.__main_task:
@ -1071,7 +1095,7 @@ class Task(_Task):
task.set_comment(make_message('Auto-generated at %(time)s by %(user)s@%(host)s')) task.set_comment(make_message('Auto-generated at %(time)s by %(user)s@%(host)s'))
# clear the input model (and task model design/labels) # clear the input model (and task model design/labels)
task.set_input_model(model_id='', update_task_design=False, update_task_labels=False) task.set_input_model(model_id='', update_task_design=False, update_task_labels=False)
task.set_model_config(config_text='') task._set_model_config(config_text='')
task.set_model_label_enumeration({}) task.set_model_label_enumeration({})
task.set_artifacts([]) task.set_artifacts([])
task._set_storage_uri(None) task._set_storage_uri(None)