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 – 如果在恢复时所有数据集未重新提供。
- 返回:
调用此方法的类的已恢复实例。
- 返回类型: