调整内部机制#

TunerInternal#

class ray.tune.impl.tuner_internal.TunerInternal(restore_path: str = None, storage_filesystem: pyarrow.fs.FileSystem | None = None, resume_config: ResumeConfig | None = None, trainable: str | Callable | Type[Trainable] | BaseTrainer | None = None, param_space: Dict[str, Any] | None = None, tune_config: TuneConfig | None = None, run_config: RunConfig | None = None, _tuner_kwargs: Dict | None = None, _entrypoint: AirEntrypoint = AirEntrypoint.TUNER)[源代码]#

外部可见 Tuner 背后的实际实现。

面向外部的 Tuner 根据是否处于 Ray 客户端模式,在本地 Tuner 和远程 Tuner 之间进行多路复用。

在 Ray 客户端模式下,外部 TunerTunerInternal 封装成一个远程角色,该角色保证被放置在头节点上。

TunerInternal 可以从头构建,在这种情况下,需要提供 trainable,以及可选的 param_spacetune_configrun_config

它也可以从之前的失败运行中恢复(给定 restore_path)。

参数:
  • restore_path – Tuner 可以从中恢复的路径。如果提供,则不需要其余的参数。

  • resume_config – 恢复配置以配置哪些试验继续进行。

  • trainable – 可调优的训练对象。

  • param_space – 调优任务的搜索空间。需要注意的是,预处理器和数据集都可以在这里进行调优。

  • tune_config – 调整算法特定的配置。更多信息请参考 ray.tune.tune_config.TuneConfig。

  • run_config – 特定于个别试验的运行时配置。如果传递了此配置,它将覆盖传递给 Trainer 的运行配置(如果适用)。更多信息请参考 ray.train.RunConfig。

试验#

class ray.tune.experiment.trial.Trial(trainable_name: str, *, config: Dict | None = None, trial_id: str | None = None, storage: StorageContext | None = None, evaluated_params: Dict | None = None, experiment_tag: str = '', placement_group_factory: PlacementGroupFactory | None = None, stopping_criterion: Dict[str, float] | None = None, checkpoint_config: CheckpointConfig | None = None, export_formats: List[str] | None = None, restore_path: str | None = None, trial_name_creator: Callable[[Trial], str] | None = None, trial_dirname_creator: Callable[[Trial], str] | None = None, log_to_file: str | None | Tuple[str | None, str | None] = None, max_failures: int = 0, stub: bool = False, _setup_default_resource: bool = True)[源代码]#

一个试验对象保存了一次模型训练运行的状态。

试验本身由 TrialRunner 类管理,该类实现了将试验运行提交到 Ray 集群的事件循环。

试验从 PENDING 状态开始,一旦启动,就会过渡到 RUNNING 状态。如果发生错误,它会过渡到 ERROR 状态,否则在成功时过渡到 TERMINATED 状态。

每个试验都有资源分配。这些应使用 PlacementGroupFactory 来指定。

trainable_name#

要执行的可训练对象的名称。

config#

提供包含已评估参数的配置字典。

trial_id#

试验的唯一标识符。

path#

存储此试验结果的路径。可以在本地节点或云存储上。

local_path#

本地磁盘上存储结果的路径。

remote_path#

云存储上存储结果的路径,如果未设置则为 None。

relative_logdir#

试验目录相对于其试验目录的位置。

evaluated_params#

通过搜索算法评估的参数,

experiment_tag#

在控制台中显示试验名称的识别

status#

PENDING、RUNNING、PAUSED、TERMINATED、ERROR 之一

error_file#

此试验引发错误的文件路径。

开发者API: 此API可能会在Ray的次要版本之间发生变化。

create_placement_group_factory()[源代码]#

如果需要,计算放置组工厂。

注意:这必须在 self.config 中的所有占位符都被解析后调用。

property local_dir#

警告

已弃用: 此API已被弃用,可能会在未来的Ray版本中移除。

property logdir: str | None#

警告

已弃用: 此API已被弃用,可能会在未来的Ray版本中移除。

property checkpoint: Checkpoint | None#

如果已保存,则返回最近的检查点。

init_logdir()[源代码]#

警告

已弃用: 此API已被弃用,可能会在未来的Ray版本中移除。

init_local_path()[源代码]#

初始化日志目录。

update_resources(resources: dict | PlacementGroupFactory)[源代码]#

实验性功能:更新资源需求。

仅应在试验未运行时调用。

抛出:

ValueError – 如果试验状态为运行中。

set_location(location)[源代码]#

设置试验的位置。

set_status(status)[源代码]#

设置试验的状态。

set_storage(new_storage: StorageContext)[源代码]#

更新试验的存储上下文。

如果 storage_pathexperiment_dir_name 发生了变化,那么这个设置器也会更新检查点管理器跟踪的所有检查点的路径。这使得用户在移动目录后仍能从检查点恢复。

get_pickled_error() Exception | None[源代码]#

如果存储中存在,则返回pickle化的错误对象。

这是试验遇到的最新错误的序列化版本。

get_error() TuneError | None[源代码]#

如果在存储中存在,返回错误文本文件的跟踪作为 TuneError 对象。

这是试验遇到的最新错误的文本跟踪,用于错误不可序列化的情况。

should_stop(result)[源代码]#

给定结果是否满足此试验的停止标准。

should_checkpoint()[源代码]#

此试验是否需要进行检查点操作。

on_checkpoint(checkpoint_result: _TrainingResult)[源代码]#

用于处理 Trainable 生成的检查点的钩子。

参数:

checkpoint – 检查点已保存。

on_restore()[源代码]#

处理恢复完成。

should_recover()[源代码]#

返回试验是否符合重试条件。

num_failures 应该表示试验失败的次数 直到调用此方法的时刻。如果我们失败了5次且 max_failures=5,那么我们应该恢复,因为我们在第6次失败时才超过限制。

请注意,即使没有检查点,这也可能返回 true,原因可能是 self.checkpoint_freq0,或者是因为试验在创建检查点之前失败了。

FunctionTrainable#

class ray.tune.trainable.function_trainable.FunctionTrainable(config: Dict[str, Any] = None, logger_creator: Callable[[Dict[str, Any]], Logger] = None, storage: StorageContext | None = None)[源代码]#

可训练的,运行用户函数并报告结果。

此执行模式不支持检查点/恢复。

开发者API: 此API可能会在Ray的次要版本之间发生变化。

ray.tune.trainable.function_trainable.wrap_function(train_func: Callable[[Any], Any], name: str | None = None) Type[FunctionTrainable][源代码]#

开发者API: 此API可能会在Ray的次要版本之间发生变化。

注册表#

ray.tune.register_trainable(name: str, trainable: Callable | Type, warn: bool = True)[源代码]#

注册一个可训练的函数或类。

这使得一个类或函数可以在集群中的每个 Ray 进程上访问。

参数:
  • name – 要注册的名称。

  • trainable – 函数或可训练的类。函数必须接受 (config, status_reporter) 作为参数,并且在注册过程中会自动转换为类。

开发者API: 此API可能会在Ray的次要版本之间发生变化。

ray.tune.register_env(name: str, env_creator: Callable)[源代码]#

为与 RLlib 一起使用注册一个自定义环境。

这使得环境可以在集群中的每个 Ray 进程中被访问。

参数:
  • name – 要注册的名称。

  • env_creator – 创建环境的可调用对象。

开发者API: 此API可能会在Ray的次要版本之间发生变化。

输出#

class ray.tune.experimental.output.ProgressReporter(verbosity: AirVerbosity, progress_metrics: List[str] | List[Dict[str, str]] | None = None)[源代码]#

定期打印状态更新。

class ray.tune.experimental.output.TrainReporter(verbosity: AirVerbosity, progress_metrics: List[str] | List[Dict[str, str]] | None = None)[源代码]#
class ray.tune.experimental.output.TuneReporterBase(verbosity: AirVerbosity, num_samples: int = 0, metric: str | None = None, mode: str | None = None, config: Dict | None = None, progress_metrics: List[str] | List[Dict[str, str]] | None = None)[源代码]#
class ray.tune.experimental.output.TuneTerminalReporter(verbosity: AirVerbosity, num_samples: int = 0, metric: str | None = None, mode: str | None = None, config: Dict | None = None, progress_metrics: List[str] | List[Dict[str, str]] | None = None)[源代码]#