Skip to main content

网格搜索

class automation.GridSearch()

网格搜索策略控制器。对每个超参数组合进行完整的网格采样。

初始化一个网格搜索优化器

  • 参数

    • 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

  • 返回类型

    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
  • 返回类型

    ()


set_optimizer_task

设置优化器任务(task)

设置优化器任务对象,用于存储/生成优化过程的报告。 通常这是此进程的当前任务。

  • 参数

    任务 (任务 ) – 优化器当前的任务。

  • 返回类型

    ()


开始

start()

启动优化器控制器函数loop()。如果调用进程停止,控制器也会停止。

important

此函数仅在优化完成或调用停止后返回。

  • 返回类型

    ()


停止

stop()

停止当前正在运行的优化循环。从与start不同的线程调用。

  • 返回类型

    ()