Improve the hyper_parameter example

- Introduce sections
- Add example for user properties
- Add an example for hyperparameters with TaskParameters
- Rename file to reflect the naming in the web app
This commit is contained in:
Make42 2023-02-20 14:10:04 +01:00 committed by Richard Leibrandt
parent e938f2800b
commit 537548c833

View File

@ -1,4 +1,9 @@
# ClearML - example code, ArgumentParser parameter logging and dictionary parameter logging
# ClearML - example code for logging into "CONFIGURATION":
# - ArgumentParser parameter logging
# - user properties logging
# - logging of hyperparameters via dictionary
# - logging of hyperparameters via TaskParameters
# - logging of configuration objects via TaskParameters
#
from __future__ import absolute_import
from __future__ import division
@ -10,7 +15,24 @@ from enum import Enum
from clearml import Task
from clearml.task_parameters import TaskParameters, param, percent_param
# Connecting ClearML with the current process,
# from here on everything is logged automatically
task = Task.init(project_name='FirstTrial', task_name='first_trial')
# -----------------------------------------------
# Report user properties
# -----------------------------------------------
task.set_user_properties(custom1='great', custom2=True)
task.set_user_properties(custom3=1, custom4=2.0)
# -----------------------------------------------
# Report hyperparameters via dictionary
# -----------------------------------------------
class StringEnumClass(Enum):
A = 'a'
@ -22,10 +44,6 @@ class IntEnumClass(Enum):
D = 2
# Connecting ClearML with the current process,
# from here on everything is logged automatically
task = Task.init(project_name='examples', task_name='Hyper-parameters example')
parameters = {
'list': [1, 2, 3],
'dict': {'a': 1, 'b': 2},
@ -45,6 +63,36 @@ parameters['new_param'] = 'this is new'
parameters['float'] = '9.9'
print(parameters)
# -----------------------------------------------
# Report hyperparameters via TaskParameters
# -----------------------------------------------
# Define a class that inherits from TaskParameters.
# Note that TaskParameters inherits from _AttrsMeta;
# because of `iterations` and `target_accuracy` do not need to be explicitly populated in an __init__ method.
# Consult the documentation at https://www.attrs.org for more information.
class MyTaskParameters(TaskParameters):
iterations = param(
type=int,
desc="Number of iterations to run",
range=(0, 100000),
)
target_accuracy = percent_param(
desc="The target accuracy of the model",
)
my_task_parameters = MyTaskParameters(iterations=1000, target_accuracy=0.95)
my_task_parameters = task.connect(my_task_parameters, name='from TaskParameters-like object')
# -----------------------------------------------
# Report configuration objects via dictionary
# -----------------------------------------------
complex_nested_dict_configuration = {
'list_of_dicts': [{'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'e': 5, 'f': 6}],
'nested_dicts': {'nested': {'key': 'value', 'extra': 'value'}, 'number': 42},