ray.train.trainer.BaseTrainer.restore#

classmethod BaseTrainer.restore(path: str | PathLike, storage_filesystem: pyarrow.fs.FileSystem | None = None, datasets: Dict[str, Dataset | Callable[[], Dataset]] | None = None, scaling_config: ScalingConfig | None = None, **kwargs) BaseTrainer[源代码]#

从之前中断/失败的运行中恢复一个训练实验。

恢复操作应用于实验级别的容错,以防头节点崩溃(例如,内存不足或其他运行时错误)或整个集群宕机(例如,影响所有节点的网络错误)。

已经成功完成的运行不会通过此API恢复。要从成功的运行继续训练,请使用 <Framework>Trainer(resume_from_checkpoint) API 启动新的运行,并传入来自先前运行的检查点以开始。

备注

从指向与原始实验路径*不同*位置的路径恢复实验是受支持的。然而,Ray Train 假设整个实验目录(包括检查点)是可用的,以便可以从其最新状态恢复试验。

例如,如果原始实验路径是在本地运行的,那么结果会上传到云存储,Ray Train 期望在通过 <Framework>Trainer.restore("s3://...") 尝试恢复时,云存储中能找到完整的内容。恢复的运行将继续将结果写入相同的云存储位置。

以下示例可以与使用 Ray Jobs 实现作业重试配对,以生成一个在实验级别和试验级别失败时尝试恢复的训练实验:

import os
import ray
from ray import train
from ray.train.trainer import BaseTrainer

experiment_name = "unique_experiment_name"
storage_path = os.path.expanduser("~/ray_results")
experiment_dir = os.path.join(storage_path, experiment_name)

# Define some dummy inputs for demonstration purposes
datasets = {"train": ray.data.from_items([{"a": i} for i in range(10)])}

class CustomTrainer(BaseTrainer):
    def training_loop(self):
        pass

if CustomTrainer.can_restore(experiment_dir):
    trainer = CustomTrainer.restore(
        experiment_dir, datasets=datasets
    )
else:
    trainer = CustomTrainer(
        datasets=datasets,
        run_config=train.RunConfig(
            name=experiment_name,
            storage_path=storage_path,
            # Tip: You can also enable retries on failure for
            # worker-level fault tolerance
            failure_config=train.FailureConfig(max_failures=3),
        ),
    )

result = trainer.fit()
参数:
  • path – 恢复训练运行实验目录的路径。这可以是一个本地路径,如果实验上传到云端,也可以是一个远程URI。

  • storage_filesystem – 自定义 pyarrow.fs.FileSystem 对应于 路径 。如果原始实验传入了自定义文件系统,这可能是必要的。

  • datasets – 重新指定的数据集用于原始训练运行。这必须包括所有在原始训练器构造函数中传递的数据集。

  • scaling_config – 可选的重新指定缩放配置。这可以修改为与原始规范不同。

  • **kwargs – 其他可选的重新指定的参数,由子类传递。

抛出:

ValueError – 如果在恢复时所有数据集未重新提供。

返回:

调用此方法的类的已恢复实例。

返回类型:

BaseTrainer