随机搜索
class automation.RandomSearch()
随机搜索策略控制器。超参数的随机均匀采样。
初始化一个随机搜索优化器。
-
参数
-
base_task_id (str ) – 任务ID。
-
hyper_parameters (list ) – 要优化的参数对象列表。
-
objective_metric (Objective ) – 要最大化/最小化的目标指标。
-
execution_queue (str ) – 用于启动任务(实验)的执行队列。
-
num_concurrent_workers (int ) – 最大并发运行的机器数量。
-
pool_period_min (float ) – 两次连续池之间的时间(分钟)。
-
time_limit_per_job (float ) – 每个作业的最大执行时间(以分钟为单位), 当超过时间限制时,作业将被中止。(可选)
-
compute_time_limit (float ) – 最大计算时间,单位为分钟。当超过时间限制时,所有作业将被中止。(可选)
-
max_iteration_per_job (int ) – 每个作业的最大迭代次数(针对目标指标)。当超过此值时,作业将被中止。
-
total_max_jobs (int ) – 优化过程中的总最大作业数。默认值为
None
,表示无限制。
-
创建任务
create_job()
如果需要,创建一个新工作。返回新创建的工作。如果不需要创建工作,返回None
。
-
返回类型
Optional
[ClearmlJob
] -
返回
一个新创建的ClearmlJob对象,如果没有创建ClearmlJob则为None
get_created_jobs_ids
get_created_jobs_ids()
返回由此优化器创建的任务ID字典,包括已完成和正在运行的作业。 返回字典的值是特定作业中使用的参数。
-
返回类型
Mapping
[str
,dict
] -
返回
任务ID(str)的字典作为键,它们的参数字典作为值。
获取创建的任务任务
get_created_jobs_tasks()
返回由此优化器创建的任务ID字典,直到现在。 返回的字典的值是ClearmlJob。
-
返回类型
Mapping
[str
,dict
] -
返回
任务ID的字典(str)作为键,它们的ClearmlJob作为值。
获取目标指标
get_objective_metric()
返回目标的指标标题和系列对。
-
返回类型
Union
[Tuple
[str
,str
],List
[Tuple
[str
,str
]]] -
返回
(标题, 系列)
获取正在运行的作业
get_running_jobs()
返回当前正在运行的ClearmlJob。
-
返回类型
Sequence
[ClearmlJob
] -
返回
ClearmlJob 对象列表。
获取顶级实验
获取前k个实验(top_k)
返回基于控制器Objective
对象的顶级实验任务的列表。
-
参数
top_k (int ) – 返回的任务(实验)数量。
-
返回类型
Sequence
[Task
] -
返回
一个按性能排序的任务对象列表,其中索引0是性能最佳的任务。
获取顶级实验详情
获取顶级实验详情(top_k, all_metrics=False, all_hyper_parameters=False, only_completed=False)
返回表现最佳实验的字典列表。
示例:[{'task_id': Task-ID, 'metrics': scalar-metric-dict, 'hyper_parameters': Hyper-Parameters},]
订单基于控制器Objective
对象。
-
参数
-
top_k (int ) – 返回的任务(实验)数量。
-
all_metrics (bool ) – 默认值为 False,仅在指标字典中返回目标指标。 如果为 True,则返回实验的所有标量指标
-
all_hyper_parameters (bool ) – 默认值为 False。如果为 True,则返回所有部分的所有超参数。
-
only_completed (bool ) – 仅返回已完成的任务。默认值为 False。
-
-
返回类型
序列[(字符串, 字典)]
-
返回
一个字典列表
({task_id: '', hyper_parameters: {}, metrics: {}})
,按性能排序, 其中索引0是表现最好的任务。 示例 w/ all_metrics=False:[
{
task_id: '0593b76dc7234c65a13a301f731958fa',
hyper_parameters: {'General/lr': '0.03', 'General/batch_size': '32'},
metrics: {
'accuracy per class/cat': {
'metric': 'accuracy per class',
'variant': 'cat',
'value': 0.119,
'min_value': 0.119,
'max_value': 0.782
},
}
},
]示例 w/ all_metrics=True:
[
{
task_id: '0593b76dc7234c65a13a301f731958fa',
hyper_parameters: {'General/lr': '0.03', 'General/batch_size': '32'},
metrics: {
'accuracy per class/cat': {
'metric': 'accuracy per class',
'variant': 'cat',
'value': 0.119,
'min_value': 0.119,
'max_value': 0.782
},
'accuracy per class/deer': {
'metric': 'accuracy per class',
'variant': 'deer',
'value': 0.219,
'min_value': 0.219,
'max_value': 0.282
},
}
},
]
获取顶级实验ID和指标对
get_top_experiments_id_metrics_pair(top_k, all_metrics=False, only_completed=False)
返回表现最佳实验的(任务ID,标量指标字典)对列表。顺序基于控制器Objective
对象。
-
参数
-
top_k (int ) – 返回的任务(实验)数量。
-
all_metrics (bool ) – 默认值为 False,仅在指标字典中返回目标指标。 如果为 True,则返回实验的所有标量指标
-
only_completed (bool ) – 仅返回已完成的任务。默认值为 False。
-
-
返回类型
序列[(字符串, 字典)]
-
返回
一个按性能排序的(任务ID,指标值字典)对的列表,
其中索引0是表现最好的任务。 示例 w/ all_metrics=False:
[
('0593b76dc7234c65a13a301f731958fa',
{
'accuracy per class/cat': {
'metric': 'accuracy per class',
'variant': 'cat',
'value': 0.119,
'min_value': 0.119,
'max_value': 0.782
},
}
),
]
示例 w/ all_metrics=True:
[
('0593b76dc7234c65a13a301f731958fa',
{
'accuracy per class/cat': {
'metric': 'accuracy per class',
'variant': 'cat',
'value': 0.119,
'min_value': 0.119,
'max_value': 0.782
},
'accuracy per class/deer': {
'metric': 'accuracy per class',
'variant': 'deer',
'value': 0.219,
'min_value': 0.219,
'max_value': 0.282
},
}
),
]
helper_create_job
**helper_create_job(base_task_id, parameter_override=None, task_overrides=None, tags=None, parent=None, kwargs)
使用指定的参数创建一个作业,详情请参见ClearmlJob
。
-
返回类型
-
返回
一个新创建的Job实例。
-
参数
-
base_task_id (str ) –
-
parameter_override (可选 [ 映射 [ str *, * str ] ] ) –
-
task_overrides (可选 [ 映射 [ str *, * str ] ] ) –
-
标签 (可选 [ 序列 [ 字符串 ] ] ) –
-
parent (可选 [ str ] ) –
-
kwargs (任意 ) –
-
监控任务
监控任务(job)
辅助函数,不需要实现。默认在process_step的默认实现中使用。 检查作业是否需要中止或已经完成。
如果返回 False
,则作业已中止/完成,应从当前作业列表中移除。
如果有预算限制,此调用应更新
self.budget.compute_time.update
/ self.budget.iterations.update
-
参数
job (ClearmlJob ) – 一个要监控的
ClearmlJob
对象。 -
返回类型
bool
-
返回
如果工作不再相关,则为False。
处理步骤
process_step()
抽象辅助函数。不需要实现。默认使用在启动默认实现中
主优化循环,由start
创建的守护线程调用。
-
在每个
ClearmlJob
上调用监控任务:- 检查性能或经过的时间,然后决定是否终止任务。
-
调用 create_job:
- 检查是否存在空闲的工作槽,如果存在,则根据之前测试的实验创建一个新的工作。
-
返回类型
bool
-
返回
如果继续优化,则为True。如果立即停止,则为False。
设置作业类
设置作业类别(job_class)
设置用于helper_create_job
函数的类。
-
参数
job_class (ClearmlJob ) – 作业类类型。
-
返回类型
()
set_job_default_parent
set_job_default_parent(job_parent_task_id, project_name=None)
设置由helper_create_job
方法创建的所有作业的默认父级。
-
参数
-
job_parent_task_id (str ) – 父任务ID。
-
project_name (str ) – 如果指定,则在指定的项目中创建作业
-
-
返回类型
()
设置作业命名方案
set_job_naming_scheme(naming_function)
设置用于命名新创建作业的函数。
-
参数
naming_function (callable) – 用于命名新创建作业的可调用函数。 使用以下格式:
naming_functor(base_task_name, argument_dict) -> str
-
返回类型
()
设置优化器任务
设置优化器任务(task)
设置优化器任务对象,用于存储/生成优化过程的报告。 通常这是此进程的当前任务。
-
参数
任务 (任务 ) – 优化器当前的任务。
-
返回类型
()
开始
start()
启动优化器控制器函数loop()。如果调用进程停止,控制器也会停止。
此函数仅在优化完成或调用停止后返回。
-
返回类型
()
停止
stop()
停止当前正在运行的优化循环。从与start
不同的线程调用。
-
返回类型
()