Add task modification via SDK info (#597)

This commit is contained in:
pollfly 2023-06-18 11:31:30 +03:00 committed by GitHub
parent 4f2da61c62
commit 1f57c1fd89
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -342,31 +342,44 @@ The default operator for a query is `or`, unless `and` is placed at the beginnin
## Cloning & Executing Tasks ## Cloning & Executing Tasks
Once a task object is created, it can be copied (cloned). [`Task.clone`](../references/sdk/task.md#taskclone) returns Once a task object is created, it can be copied (cloned). [`Task.clone()`](../references/sdk/task.md#taskclone) returns
a copy of the original task (`source_task`). By default, the cloned task is added to the same project as the original, a copy of the original task (`source_task`). By default, the cloned task is added to the same project as the original,
and it's called "Clone Of ORIGINAL_NAME", but the name / project / comment (description) of the cloned task can be directly overridden. and it's called "Clone Of ORIGINAL_NAME", but the name / project / comment (description) of the cloned task can be directly overridden.
```python ```python
task = Task.init(project_name='examples', task_name='original task',) task = Task.init(project_name='examples', task_name='original task',)
cloned = Task.clone( cloned_task = Task.clone(
source_task=task, # type: Optional[Union[Task, str]] source_task=task, # type: Optional[Union[Task, str]]
# override default name # override default name
name='newly created task', # type: Optional[str] name='newly created task', # type: Optional[str]
comment=None, # type: Optional[str] comment=None, # type: Optional[str]
# insert cloned task into a different project # insert cloned task into a different project
project=None, # type: Optional[str] project='<new_project_id>', # type: Optional[str]
) )
``` ```
A newly cloned task has a [draft](../fundamentals/task.md#task-states) status, so it's modifiable. A newly cloned task has a [draft](../fundamentals/task.md#task-states) status,
so you can modify any configuration. For example, run a different git version of the code, with a new `lr` value, for a
different number of epochs and using a new base model:
Once a task is modified, launch it by pushing it into an execution queue with the [`Task.enqueue`](../references/sdk/task.md#taskenqueue) ```python
# Set parameters (replaces existing hyperparameters in task)
cloned_task.set_parameters({'epochs':7, 'lr': 0.5})
# Override git repo information
cloned_task.set_repo(repo="https://github.com/allegroai/clearml.git", branch="my_branch_name")
# Remove input model and set a new one
cloned_task.remove_input_models(models_to_remove=["<model_id>"])
cloned_task.set_input_model(model_id="<new_intput_model_id>")
```
Once a task is modified, launch it by pushing it into an execution queue with the [`Task.enqueue()`](../references/sdk/task.md#taskenqueue)
class method. Then a [ClearML Agent](../clearml_agent.md) assigned to the queue will pull the task from the queue and execute class method. Then a [ClearML Agent](../clearml_agent.md) assigned to the queue will pull the task from the queue and execute
it. it.
```python ```python
Task.enqueue( Task.enqueue(
task=task, # type: Union[Task, str] task=cloned_task, # type: Union[Task, str]
queue_name='default', # type: Optional[str] queue_name='default', # type: Optional[str]
queue_id=None # type: Optional[str] queue_id=None # type: Optional[str]
) )