尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Ray Tune 同步配置(SyncConfig)完全指南:实验状态、Checkpoint 与 Artifact 的持久化同步
Ray Tune 同步配置SyncConfig完全指南实验状态、Checkpoint 与 Artifact 的持久化同步【免费下载链接】rayRay is an AI compute engine. Ray consists of a core distributed runtime and a set of AI Libraries for accelerating ML workloads.项目地址: https://gitcode.com/gh_mirrors/ra/ray导读本文围绕 Ray Tune 的同步Syncing机制展开核心讲解ray.tune.SyncConfig这一配置对象在分布式超参数调优中它控制实验目录含搜索器状态、trial 列表与元数据如何从 driver 同步到持久化存储如 AWS S3、GCS、NFS以及 trial 目录中的任意产物artifacts是否随tune.report上传到云端。读完本文你将掌握SyncConfig全部四个参数sync_period、sync_timeout、sync_artifacts、sync_artifacts_on_checkpoint的语义与默认值能够为单机、NFS、云存储三种场景配置持久化存储理解同步任务在源码层Syncer抽象基类与后台进程如何被节流、超时与重试并知道如何从存储 URI 恢复被中断的实验。一、Tune 中同步发生在哪里根据 python/ray/tune/syncer.py 中SyncConfig的类文档Ray Tune 的文件同步主要是上传发生在两个层面实验驱动端head node实验 driver 将整个实验目录同步到存储RunConfig(storage_path)指定的位置其中包含实验状态——搜索器searcher状态、trial 列表及其状态、trial 元数据等。这是实验级容错与恢复的基础。trial 端通过设置sync_artifactsTrue可以把 trial 目录中的产物你在训练过程中随手 dump 到ray.tune.get_context().get_trial_dir()下的任意文件同步到存储。一个包含大量 trial 的 Tune 实验中每个 trial 都会把自己的 trial 目录上传到存储。这两类数据对应了 Ray Tune 持久化存储要解决的四个核心场景见配套用户指南 doc/source/tune/tutorials/tune-storage.rstTrial 级容错trial 恢复如节点故障、实验暂停后重启时可能被调度到不同节点但必须能访问其最新 checkpoint实验级容错整个实验恢复如集群意外崩溃时Tune 需要访问最新实验状态与全部 trial checkpoint从断点继续实验后分析集群终止后仍有一个集中位置存放所有 trial 的数据便于分析最优 checkpoint 与超参配置下游任务衔接用配置好的存储把模型与产物交付给推理/批处理等下游任务。SyncConfig正是控制上述同步行为频率、超时、是否同步产物的配置对象属于PublicAPI(stabilitybeta)的公开 API。二、SyncConfig 参数详解SyncConfig在 python/ray/tune/syncer.py 中定义是一个继承自ray.train._internal.syncer.SyncConfig的 dataclass。基础字段定义于 python/ray/train/_internal/syncer.pyDEFAULT_SYNC_PERIOD 300DEFAULT_SYNC_TIMEOUT 1800Tune 侧在此基础上增加了 artifact 同步开关。全部参数如下参数类型默认值说明sync_periodint3005 分钟两次同步操作之间的最小等待秒数。值越小存储中的数据更新越频繁但同步开销越大。sync_timeoutint180030 分钟单个同步进程允许运行的最大秒数。同步操作运行超过该时长会抛出TimeoutError。sync_artifactsboolFalse[Beta] 是否把保存到 trial 目录通过ray.tune.get_context().get_trial_dir()访问的产物同步到tune.RunConfig(storage_path)配置的持久化存储。trial 或远程 worker 会在每次tune.report时尝试发起一次产物同步受sync_period与sync_artifacts_on_checkpoint约束。默认False即默认不持久化任何产物。sync_artifacts_on_checkpointboolTrue若为True在每次上报的 checkpoint 上强制同步 trial/worker 产物。仅在sync_artifants为True时生效。参数语义要点sync_period是节流器它规定两次同步之间最少间隔多久防止高频率tune.report触发无节制的网络传输。源码中该节流逻辑实现在Syncer.sync_up_if_needed/sync_down_if_needed见 python/ray/train/_internal/syncer.py只有满足now - self.last_sync_up_time self.sync_period时才会真正发起sync_up并更新last_sync_up_time。sync_timeout是看门狗_BackgroundProcess.wait会从进程启动时刻起计时超过timeout秒仍存活则清空进程并抛出TimeoutError错误信息形如xxx did not finish running within the timeout of N seconds.。sync_artifacts默认关闭因为产物是任意文件可能包含大体积中间结果默认不同步以免拖慢训练需要持久化产物时才显式开启。sync_artifacts_on_checkpoint默认开启只要开启了产物同步就会在每个 checkpoint 上报时强制同步一次。SyncConfig也可通过tune.TuneConfig(sync_config...)或tune.RunConfig传入。在 python/ray/tune/tune.py 的run入口中可以看到sync_config sync_config or SyncConfig()——未显式提供时使用默认配置Tuner内部则在 python/ray/tune/impl/tuner_internal.py 中以sync_configself._run_config.sync_config将其注入存储上下文。三、为 Tune 配置持久化存储的三种方式SyncConfig与RunConfig(storage_path)配合使用。根据 doc/source/tune/tutorials/tune-storage.rstTune 支持三种存储场景。3.1 云存储AWS S3、Google Cloud Storage当集群所有节点都能访问云存储时把所有实验输出保存到共享 bucket。只需让 Ray Tune上传到远程storage_pathfrom ray import tune tuner tune.Tuner( trainable, run_configtune.RunConfig( nameexperiment_name, storage_paths3://bucket-name/sub-path/, ) ) tuner.fit()运行后所有实验结果位于s3://bucket-name/sub-path/experiment_name。注意head 节点本地并不会保留全部实验结果如需进一步处理最优 checkpoint需要先从云存储拉取恢复实验时应使用云存储 URI 对应的实验目录而非 head 节点上的本地实验目录见下文恢复示例。3.2 网络文件系统NFS当所有 Ray 节点都能访问 NFS如 AWS EFS、Google Cloud Filestore时把共享文件系统路径直接作为结果保存路径即可from ray import tune tuner tune.Tuner( trainable, run_configtune.RunConfig( nameexperiment_name, storage_path/mnt/path/to/shared/storage/, ) ) tuner.fit()运行后所有实验结果位于/path/to/shared/storage/experiment_name。NFS 属于所有节点共享同一路径本质上无需跨节点复制是成本最低的共享方案。3.3 单节点本地文件系统在单节点如笔记本上运行实验时Tune 默认使用本地文件系统作为 checkpoint 与其他产物的存储位置结果默认保存到~/ray_results下带唯一自动生成名称的子目录除非通过RunConfig的storage_path和name自定义from ray import tune tuner tune.Tuner( trainable, run_configtune.RunConfig( storage_path/tmp/custom/storage/path, nameexperiment_name, ) ) tuner.fit()运行后实验结果位于/tmp/custom/storage/path/experiment_name。NFS 或云存储也可用于单机实验——例如实例终止会清空本地存储时把结果持久化到外部存储是很有用的做法。需要特别强调的是在多节点集群上使用 head 节点的本地文件系统作为持久化存储已被弃用Deprecated。如果保存 trial checkpoint 且运行在多节点集群未配置 NFS 或云存储时 Tune 默认会直接报错。四、实战示例云端实验与中断恢复下面给出带SyncConfig与 checkpoint 保留策略的完整示例源于 doc/source/tune/tutorials/tune-storage.rst 的实战骨架假设在集群 head 节点运行my_trainable实现了 checkpoint 的保存与加载import os import ray from ray import tune from your_module import my_trainable tuner tune.Tuner( my_trainable, run_configtune.RunConfig( # 实验名称 namemy-tune-exp, # 配置实验数据与 checkpoint 的持久化方式。 # 推荐云存储 checkpoint集群实例被终止后数据依然存在且性能更好。 storage_paths3://my-checkpoints-bucket/path/, checkpoint_configtune.CheckpointConfig( # 始终保留最优的 5 个 checkpoint # 按 trainable 上报的 max-auc 指标排序 checkpoint_score_attributemax-auc, checkpoint_score_ordermax, num_to_keep5, ), # 显式控制同步行为可选 sync_configtune.SyncConfig( sync_period120, # 每 120 秒至多同步一次 sync_timeout600, # 单次同步最多运行 600 秒 sync_artifactsTrue, # 同步 trial 目录中的任意产物 ), ), ) # 启动运行 results tuner.fit()该例中 trial checkpoint 保存到s3://my-checkpoints-bucket/path/my-tune-exp/trial_name/checkpoint_step。若运行因任何原因中断用户 CTRLC、OOM 被终止等可随时基于云端的实验状态恢复from ray import tune tuner tune.Tuner.restore( s3://my-checkpoints-bucket/path/my-tune-exp, trainablemy_trainable, resume_erroredTrue, ) tuner.fit()恢复选项包括resume_unfinished、resume_errored与restart_errored详见Tuner.restore的 API 文档。恢复时必须使用云端实验目录 URI而非本地目录这正是因为同步机制保证云端持有最新的实验状态快照。五、源码视角同步机制如何工作5.1 Syncer 抽象基类与命令原语同步的核心抽象位于 python/ray/train/_internal/syncer.py 的SyncerDeveloperAPI抽象基类它定义了三类同步方向sync_up(local_dir, remote_dir, exclude)把本地目录同步到远程 URIprotocol://remote/pathexclude支持排除模式如[*/checkpoint_*]跳过 trial checkpointsync_down(remote_dir, local_dir, exclude)反向拉取用于恢复场景delete(remote_dir)删除远端存储目录。同步任务通常是异步的sync_up/down返回True表示已派发后台进程之后可调用wait()等待完成超过sync_timeout抛TimeoutError。基类还实现了wait_or_retry(max_retries2, backoff_s5)等待失败后按 5 秒退避重试最多 2 次全部失败则抛出包含完整 traceback 的RuntimeError。5.2 节流、后台进程与超时_BackgroundSyncer与_BackgroundProcess是默认实现的关键节流_should_continue_existing_sync()检查上一次同步是否仍在运行且未超过sync_timeout若是则跳过本次同步记 debug/warning 日志避免并发堆积后台进程_BackgroundProcess用 daemon 线程包装同步命令start()记录start_timewait(timeout)从启动时刻起计时超时即清空进程并抛TimeoutError失败重试_launch_sync_process会先wait()等上一次同步结束失败则记录 warning再启动新进程retry()基于_current_cmd重新创建后台进程执行同一条命令。也就是说sync_period、sync_timeout两个参数最终会注入Syncer实例见Syncer.__init__的sync_period: float DEFAULT_SYNC_PERIOD、sync_timeout: float DEFAULT_SYNC_TIMEOUT从底层控制每次同步的触发时机与存活上限。5.3 Artifact 同步的触发点sync_artifacts与sync_artifacts_on_checkpoint的落地位置在 python/ray/tune/trainable/trainable.pytrial/worker 在 checkpoint 上报时调用self._storage.sync_config.sync_artifacts_on_checkpoint决定是否以forceTrue方式同步产物普通场景下则每次tune.report时尝试发起一次产物同步受sync_period节流。5.4 测试用例佐证仓库测试验证了上述行为python/ray/tune/tests/test_tuner.py 中以tune.SyncConfig(sync_artifactsTrue)构造配置验证开启产物同步时的端到端行为python/ray/tune/tests/execution/test_controller_checkpointing_integration.py 使用ray.tune.SyncConfig(sync_timeout0.5)构造 mock 存储上下文验证极短超时下的同步控制逻辑。六、配置建议与注意事项sync_period权衡值越小存储中数据越新鲜故障时丢失窗口越小但同步开销越大默认 5 分钟适合大多数训练节奏。若 checkpoint 很大且频率高可适当调大以降低网络与对象存储成本。sync_timeout权衡值越大超大目录如大模型 checkpoint越可能完成上传但卡死的同步进程会占用更久。默认 30 分钟大 checkpoint 场景建议调大小文件场景可调小以更快暴露故障。产物同步默认关闭sync_artifactsFalse意味着 trial 目录中的任意文件默认不会持久化需要保存日志、中间结果或自定义产物时再开启并注意它受sync_period节流、在每次 checkpoint 时强制同步一次。多节点必须配共享存储多节点集群中若未配置 NFS 或云存储保存 trial checkpoint 会直接报错本地文件系统方案已弃用请优先选择云存储 checkpoint。恢复用 URI 而非本地路径中断恢复时使用Tuner.restore并传入云存储/共享存储中的实验目录 URI。总结ray.tune.SyncConfig是 Ray Tune 持久化与同步行为的统一配置入口sync_period控制同步频率、sync_timeout控制单次同步的存活上限、sync_artifacts/sync_artifacts_on_checkpoint控制 trial 产物的持久化策略。它配合RunConfig(storage_path)即可在单机、NFS、云存储三种场景下获得 trial 级与实验级容错能力。源码层面Syncer抽象基类通过sync_up/sync_down/delete原语、sync_up_if_needed节流、_BackgroundProcess超时控制与wait_or_retry重试机制把配置参数落地为稳定可靠的分布式文件同步管线。【免费下载链接】rayRay is an AI compute engine. Ray consists of a core distributed runtime and a set of AI Libraries for accelerating ML workloads.项目地址: https://gitcode.com/gh_mirrors/ra/ray创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Agent技能库设计指南:从工具封装到智能编排的完整实践

Agent技能库设计指南:从工具封装到智能编排的完整实践

1. 先把“agent-skills”拆开看:它到底在解决什么问题这两年只要做 Agent 相关项目的人,基本都会遇到一个很尴尬的现状:模型能力越来越强,可每次落地一个新场景,还得从头把工具、流程、边界条件一点点喂给模型。今天写…

📅 2026/9/20 21:21:18
MMPose 关键点半自动标注:5 步跑通实战

MMPose 关键点半自动标注:5 步跑通实战

MMPose 关键点半自动标注:5 步跑通实战 【免费下载链接】mmpose OpenMMLab Pose Estimation Toolbox and Benchmark. 项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose 数据集到 5000 张还在一张张手标?单人 17 个关键点加上框和分割&am…

📅 2026/9/20 21:21:18
Phoenix Contexts 入门:用 Elixir 模块封装数据访问与业务逻辑

Phoenix Contexts 入门:用 Elixir 模块封装数据访问与业务逻辑

Phoenix Contexts 入门:用 Elixir 模块封装数据访问与业务逻辑 【免费下载链接】phoenix Peace of mind from prototype to production 项目地址: https://gitcode.com/gh_mirrors/ph/phoenix 本指南介绍 Phoenix 框架的核心设计概念 —— Contexts&#xff…

📅 2026/9/20 21:21:18
MORE NEWS

更多资讯

📰

IsaacLab 自碰撞过滤实战:enable_self_collision 之外的碰撞组 5 步配置指南

IsaacLab 自碰撞过滤实战:enable_self_collision 之外的碰撞组 5 步配置指南 【免费下载链接】IsaacLab Unified framework for robot learning with multi-physics/renderer support 项目地址: https://gitcode.com/GitHub_Trending/is/IsaacLab 在 IsaacSi…

📰

Scrapling 指南:从 1 次 HTTP 请求到整站爬虫的 Python 抓取框架

Scrapling 指南:从 1 次 HTTP 请求到整站爬虫的 Python 抓取框架 【免费下载链接】Scrapling 🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Dont be shy, join here: https://discor…

📰

FanControl 免费风扇控制指南:接上传感器、画好曲线,把电脑压安静

FanControl 免费风扇控制指南:接上传感器、画好曲线,把电脑压安静 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.…

📰

Roc REPL 快照测试深度解析:以 List.keep_if 过滤测试为例

Roc REPL 快照测试深度解析:以 List.keep_if 过滤测试为例 【免费下载链接】roc A fast, friendly, functional language. 项目地址: https://gitcode.com/GitHub_Trending/ro/roc 本文以 Roc 编译器仓库中的 REPL 快照测试文件 test/snapshots/repl/list_ke…

📰

OneUptime × Jira 双向集成实战:用 Workflow 打通事故工单的完整生命周期

可观测性后端运维前端云原生微服务AI Agent 【免费下载链接】oneuptime Complete open-source monitoring and observability platform. 项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime 点击查看 免费下载 本文基于 packages/App/FeatureSet/Docs/Co…

📰

OPT C# SDK实战:机器视觉上位机开发与采图流程详解

简介:OPT C# SDK开发工具包面向C#开发人员,是一个聚焦性能优化与开发效率的辅助组件集,适用于构建桌面应用、Web服务或处理数据通信等常见场景。压缩包共138个文件,容量约1.49MB,包含48个cs源码文件、24个sln解决方案、…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬