
从本地到GPU集群Hydra Ray Launcher分布式运行配置详解【免费下载链接】hydraHydra is a framework for elegantly configuring complex applications项目地址: https://gitcode.com/GitHub_Trending/hyd/hydraHydra Ray Launcher是 Hydra 配置框架的官方插件它让你用一行配置就把 Hydra 应用从本地机器迁移到 Ray 集群或云上的 GPU 集群运行。本文带你完整掌握 Hydra 分布式执行配置从本地并行多任务到连接已有 Ray 集群再到一键拉起 AWS 弹性 GPU 集群覆盖安装、切换启动器、同步代码与回传结果等全部关键环节。为什么需要分布式运行Hydra 的--multirunsweep模式天生适合批量实验它根据配置组展开出成百上千个任务不同学习率、不同种子、不同超参组合。但单机跑 sweep 太慢而 Hydra 的Launcher 插件机制正好解决了这个问题——你无需改动应用代码只需替换启动器任务就能跑在任何地方basic默认本地串行执行ray本地 Ray 或已有 Ray 集群并行执行ray_aws在 AWS 上自动创建弹性集群支持 GPU 机型跑完自动销毁 上图正是分布式 sweep 的典型产出多个任务并行搜索后得到的多目标结果分布Ray Launcher 就是让这些任务撒出去并行的执行引擎。一键安装三步切换到 Ray 分布式运行安装非常快只需一条命令pip install hydra-ray-launcher --upgrade切换启动器有两种等价方式选其一即可命令行覆盖python my_app.py --multirun hydra/launcherray配置文件覆盖在 YAML 的defaults中加入- override hydra/launcher: ray参考示例配置 examples/simple/config.yaml 与应用 examples/simple/my_app.pydefaults: - override hydra/launcher: ray_aws task: 1然后运行python my_app.py --multirun task1,2,3三个任务会被 Hydra Ray Launcher 并行分发执行——应用代码一行未改。本地启动ray 启动器的两种用法ray启动器基于ray.init()与ray.remote()构建行为完全由 Hydra 配置控制源码见 ray_launcher.py。用法一临时拉起本地 Ray 集群python my_app.py --multirun hydra/launcherray它会自动在本地初始化一个 Ray 实例sweep 任务并行执行适合先验证分布式逻辑再上集群。用法二连接已有 Ray 集群推荐 GPU 集群场景只要覆盖ray.init的地址即可任务会自动调度到集群空闲节点包括 GPU 节点python my_app.py --multirun \ hydra/launcherray \ hydra.launcher.ray.init.addresslocalhost:6379还可以按需注入ray.init()的其他参数例如限定每任务使用 1 块 GPUhydra.launcher.ray.init.num_gpus1长尾关键词场景当你搜索如何把 Hydra 接上已有 Ray 集群或Ray 集群跑分布式超参搜索时核心就是这一条hydra.launcher.ray.init.address覆盖配置。上云弹性扩容ray_aws 启动器详解ray_aws启动器构建在 Ray autoscaler SDK 之上能在 AWS 上自动创建/销毁集群实现零基础设施的分布式运行核心实现见 ray_aws_launcher.py。集群与实例如何配置插件已把 EC2 集群配置模式化schematized全部字段可在 _config.py 中查看。常用覆盖示例# 指定区域与 GPU 机型最多 2 台 worker python my_app.py --multirun \ hydra/launcherray_aws \ hydra.launcher.ray.cluster.provider.regionus-east-1 \ hydra.launcher.ray.cluster.available_node_types.ray.head.default.node_config.InstanceTypem5.large \ hydra.launcher.ray.cluster.available_node_types.ray.worker.default.node_config.InstanceTypeg4dn.xlarge \ hydra.launcher.ray.cluster.available_node_types.ray.worker.default.max_workers2⚠️ 使用前需配置好 AWS 凭证且凭证需具备 EC2 / IAM 相应权限。代码上传与结果回传sync_up / sync_down远程集群上跑多模块应用时需要把依赖代码同步上去、把产物取回来。Hydra 内置sync_up/sync_down基于 rsync示例见 custom_ray_aws.yamldefaults: - ray_aws sync_up: source_dir: . include: [model, *.py] exclude: [*] sync_down: include: [*.pt, */] exclude: [*]sync_up训练前把model包与 Python 文件上传到远端target_dir留空时写入远端临时目录任务结束自动清理sync_down训练后把各任务的 checkpoint*.pt按任务目录回传本地完整示例见 examples/upload_download/train.py。集群生命周期管理省钱的关键配置项说明hydra.launcher.stop_clustertrue任务结束后销毁整个集群默认最省钱hydra.launcher.stop_clusterfalse保留集群便于连续实验teardown_cluster.workers_onlytrue只销毁 worker保留 head 节点teardown_cluster.keep_min_workerstrue保留min_workers台 worker其余销毁ray.cluster.provider.cache_stopped_nodestrue关机但保留节点下次扩容免冷启动典型省钱组合hydra.launcher.stop_clustertrue \ hydra.launcher.teardown_cluster.keep_min_workersfalse调优小贴士日志与集群更新Ray 日志配置默认auto自动检测彩色/格式化输出# 更详细的调试日志 python my_app.py --multirun hydra/launcherray_aws hydra.launcher.logging.verbosity3 # 关闭彩色输出 hydra.launcher.logging.color_modefalse集群创建/更新策略默认执行初始化命令 重启 Ray 使用配置缓存create_update_cluster.no_restarttrue更新配置时跳过 Ray 重启create_update_cluster.restart_onlytrue跳过初始化命令只重启 Raycreate_update_cluster.no_config_cachetrue强制重新解析云配置小结一份快速决策清单你的场景推荐配置验证 sweep 逻辑hydra/launcherray本地临时集群已有公司 Ray/GPU 集群hydra/launcherrayray.init.address集群地址无基础设施、按需上云hydra/launcherray_awsstop_clustertrue远程训练需传代码/取模型追加sync_up/sync_down配置更多细节可查阅官方文档 website/docs/plugins/ray_launcher.md 与插件源码目录 plugins/hydra_ray_launcher/。记住核心思路换启动器不换代码——这就是 Hydra 优雅配置框架在分布式运行场景下的价值所在。【免费下载链接】hydraHydra is a framework for elegantly configuring complex applications项目地址: https://gitcode.com/GitHub_Trending/hyd/hydra创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考