mirror of
https://github.com/clearml/clearml
synced 2025-02-01 01:26:49 +00:00
139 lines
4.9 KiB
Plaintext
139 lines
4.9 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# execute this in command line on all machines to be used as workers before initiating the hyperparamer search \n",
|
|
"# ! pip install -U trains-agent==0.15.0\n",
|
|
"# ! trains-agent daemon --queue default\n",
|
|
"\n",
|
|
"# pip install with locked versions\n",
|
|
"! pip install -U pandas==1.0.3\n",
|
|
"! pip install -U trains>=0.16.2\n",
|
|
"! pip install -U optuna==2.0.0"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from trains.automation import UniformParameterRange, UniformIntegerParameterRange\n",
|
|
"from trains.automation import HyperParameterOptimizer\n",
|
|
"from trains.automation.optuna import OptimizerOptuna\n",
|
|
"\n",
|
|
"from trains import Task"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"task = Task.init(project_name='Hyperparameter Optimization with Optuna',\n",
|
|
" task_name='Hyperparameter Search',\n",
|
|
" task_type=Task.TaskTypes.optimizer)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#####################################################################\n",
|
|
"### Don't forget to replace this default id with your own task id ###\n",
|
|
"#####################################################################\n",
|
|
"TEMPLATE_TASK_ID = 'b634a59993f8477f9e22167bae662be4'"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"optimizer = HyperParameterOptimizer(\n",
|
|
" base_task_id=TEMPLATE_TASK_ID, # This is the experiment we want to optimize\n",
|
|
" # here we define the hyper-parameters to optimize\n",
|
|
" hyper_parameters=[\n",
|
|
" UniformIntegerParameterRange('number_of_epochs', min_value=2, max_value=12, step_size=2),\n",
|
|
" UniformIntegerParameterRange('batch_size', min_value=2, max_value=16, step_size=2),\n",
|
|
" UniformParameterRange('dropout', min_value=0, max_value=0.5, step_size=0.05),\n",
|
|
" UniformParameterRange('base_lr', min_value=0.00025, max_value=0.01, step_size=0.00025),\n",
|
|
" ],\n",
|
|
" # setting the objective metric we want to maximize/minimize\n",
|
|
" objective_metric_title='accuracy',\n",
|
|
" objective_metric_series='total',\n",
|
|
" objective_metric_sign='max', # maximize or minimize the objective metric\n",
|
|
"\n",
|
|
" # setting optimizer - trains supports GridSearch, RandomSearch, OptimizerBOHB and OptimizerOptuna\n",
|
|
" optimizer_class=OptimizerOptuna,\n",
|
|
" \n",
|
|
" # Configuring optimization parameters\n",
|
|
" execution_queue='dan_queue', # queue to schedule the experiments for execution\n",
|
|
" max_number_of_concurrent_tasks=2, # number of concurrent experiments\n",
|
|
" optimization_time_limit=60., # set the time limit for the optimization process\n",
|
|
" compute_time_limit=120, # set the compute time limit (sum of execution time on all machines)\n",
|
|
" total_max_jobs=20, # set the maximum number of experiments for the optimization. \n",
|
|
" # Converted to total number of iteration for OptimizerBOHB\n",
|
|
" min_iteration_per_job=15000, # minimum number of iterations per experiment, till early stopping\n",
|
|
" max_iteration_per_job=150000, # maximum number of iterations per experiment\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"optimizer.set_report_period(1) # setting the time gap between two consecutive reports\n",
|
|
"optimizer.start() \n",
|
|
"optimizer.wait() # wait until process is done\n",
|
|
"optimizer.stop() # make sure background optimization stopped"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# optimization is completed, print the top performing experiments id\n",
|
|
"k = 3\n",
|
|
"top_exp = optimizer.get_top_experiments(top_k=k)\n",
|
|
"print('Top {} experiments are:'.format(k))\n",
|
|
"for n, t in enumerate(top_exp, 1):\n",
|
|
" print('Rank {}: task id={} |result={}'\n",
|
|
" .format(n, t.id, t.get_last_scalar_metrics()['accuracy']['total']['last']))"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.7.4"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 4
|
|
} |