|
from clearml import Task |
|
|
|
|
|
from clearml.automation import HyperParameterOptimizer, UniformParameterRange |
|
from clearml.automation.optuna import OptimizerOptuna |
|
|
|
task = Task.init(project_name='Hyper-Parameter Optimization', |
|
task_name='YOLOv5', |
|
task_type=Task.TaskTypes.optimizer, |
|
reuse_last_task_id=False) |
|
|
|
|
|
optimizer = HyperParameterOptimizer( |
|
|
|
base_task_id='<your_template_task_id>', |
|
|
|
|
|
|
|
|
|
|
|
|
|
hyper_parameters=[ |
|
UniformParameterRange('Hyperparameters/lr0', min_value=1e-5, max_value=1e-1), |
|
UniformParameterRange('Hyperparameters/lrf', min_value=0.01, max_value=1.0), |
|
UniformParameterRange('Hyperparameters/momentum', min_value=0.6, max_value=0.98), |
|
UniformParameterRange('Hyperparameters/weight_decay', min_value=0.0, max_value=0.001), |
|
UniformParameterRange('Hyperparameters/warmup_epochs', min_value=0.0, max_value=5.0), |
|
UniformParameterRange('Hyperparameters/warmup_momentum', min_value=0.0, max_value=0.95), |
|
UniformParameterRange('Hyperparameters/warmup_bias_lr', min_value=0.0, max_value=0.2), |
|
UniformParameterRange('Hyperparameters/box', min_value=0.02, max_value=0.2), |
|
UniformParameterRange('Hyperparameters/cls', min_value=0.2, max_value=4.0), |
|
UniformParameterRange('Hyperparameters/cls_pw', min_value=0.5, max_value=2.0), |
|
UniformParameterRange('Hyperparameters/obj', min_value=0.2, max_value=4.0), |
|
UniformParameterRange('Hyperparameters/obj_pw', min_value=0.5, max_value=2.0), |
|
UniformParameterRange('Hyperparameters/iou_t', min_value=0.1, max_value=0.7), |
|
UniformParameterRange('Hyperparameters/anchor_t', min_value=2.0, max_value=8.0), |
|
UniformParameterRange('Hyperparameters/fl_gamma', min_value=0.0, max_value=4.0), |
|
UniformParameterRange('Hyperparameters/hsv_h', min_value=0.0, max_value=0.1), |
|
UniformParameterRange('Hyperparameters/hsv_s', min_value=0.0, max_value=0.9), |
|
UniformParameterRange('Hyperparameters/hsv_v', min_value=0.0, max_value=0.9), |
|
UniformParameterRange('Hyperparameters/degrees', min_value=0.0, max_value=45.0), |
|
UniformParameterRange('Hyperparameters/translate', min_value=0.0, max_value=0.9), |
|
UniformParameterRange('Hyperparameters/scale', min_value=0.0, max_value=0.9), |
|
UniformParameterRange('Hyperparameters/shear', min_value=0.0, max_value=10.0), |
|
UniformParameterRange('Hyperparameters/perspective', min_value=0.0, max_value=0.001), |
|
UniformParameterRange('Hyperparameters/flipud', min_value=0.0, max_value=1.0), |
|
UniformParameterRange('Hyperparameters/fliplr', min_value=0.0, max_value=1.0), |
|
UniformParameterRange('Hyperparameters/mosaic', min_value=0.0, max_value=1.0), |
|
UniformParameterRange('Hyperparameters/mixup', min_value=0.0, max_value=1.0), |
|
UniformParameterRange('Hyperparameters/copy_paste', min_value=0.0, max_value=1.0)], |
|
|
|
objective_metric_title='metrics', |
|
objective_metric_series='mAP_0.5', |
|
|
|
objective_metric_sign='max', |
|
|
|
|
|
|
|
max_number_of_concurrent_tasks=1, |
|
|
|
|
|
optimizer_class=OptimizerOptuna, |
|
|
|
save_top_k_tasks_only=5, |
|
compute_time_limit=None, |
|
total_max_jobs=20, |
|
min_iteration_per_job=None, |
|
max_iteration_per_job=None, |
|
) |
|
|
|
|
|
optimizer.set_report_period(10 / 60) |
|
|
|
|
|
|
|
optimizer.set_time_limit(in_minutes=120.0) |
|
|
|
optimizer.start_locally() |
|
|
|
optimizer.wait() |
|
|
|
optimizer.stop() |
|
|
|
print('We are done, good bye') |
|
|