我已经用于hydra
在 HPC slurm 集群上启动/跟踪大型 iid 实验(令人尴尬的并行实验),现在我正在尝试使用hydra
它的ray
(不是ray_aws
)插件进行我想在 HPC 上进行的多智能体强化学习实验slurm 集群。总而言之,我想启动一个包含多个代理的实验,该实验汇总并平均多个片段的响应。使用ray
,这将需要一个节点为每一集收集集群上head
多个 iid 节点的输出。worker
我现在的问题是我不太了解ray
插件如何为需要与slurm 集群上的节点一起使用的函数和类hydra
设置参数。我在此处查看了有关插件的文档,但链接的示例配置并未指示如何设置或在 hydra 配置文件中。ray.remote()
worker
hydra
ray
ray.init
ray.remote
在做了更多的研究、修补和思考之后,我意识到我可能需要使用hydra
's compose
api来允许模块化来指定哪个函数使用什么类型的资源,即 slurm 集群中有多少cpus
和tasks
每个工人。
我有两个关于通过内置插件或api使用hydra
with的问题:ray
compose
- 如何在不使用 compose API
ray
的情况下使用内置启动器并设置配置?ray.remote()
我可以在简单示例中更改文件中的ray.init
启动器参数,但尚不清楚我将如何在此插件和示例中进行设置。config.yaml
ray.remote()
compose
在省略对 to 的覆盖时,我能够使ray api 示例正常工作,但是在示例中传递to时hydra.compose
遇到错误(hydra.errors.ConfigCompositionException: Could not override 'dataset'. No match in the defaults list.
):overrides
hydra.compose()
ray
compose
overrides = [f"dataset={dataset}", f"model={model}"]
run_cfg = hydra.compose(overrides=overrides) # <- error
ret = train.remote(overrides, run_cfg)
我意识到它可能无法@hydra.main
与我试图对 slurm HPC 集群做的事情一起使用,但我很好奇如何设置ray.remote()
。对于第二个问题,这更像是一个技术问题,我很好奇如何解决以供将来参考。我感谢任何建议或指导,并希望这些问题使这个可爱的库对其他人更有用。