我希望能够在一些光线工作者抛出大量的数据收集任务,其中一个训练器正在并发和异步地在另一个cpu上训练收集的数据,这个概念类似于文档中的这个例子:https://docs.ray.io/en/master/auto_examples/plot_parameter_server.html#asynchronous-parameter-server-training
不同的是,我不想等待下一个样本到达,阻止我分配一个新的任务(用射线)。在附带的示例中等待),但将大量样本扔到池中,并将训练器的训练过程设置为只有在使用数据收集任务收集到至少N个样本时才开始。
我如何使用ray做到这一点?
你能看一下例如DQN或SAC在RLlib中的执行计划吗?ray/rllib/agents/dqn/dqn.py::execution_plan()
.
。DQN通过远程工作者进行采样,并将收集到的样本放入缓冲区,同时从缓冲区中采样,并对这个缓冲区采样的数据进行学习更新。您还可以设置"训练强度",采样时间步长与训练时间步长之比。
SAC的工作原理相同。另一方面,APEX-DQN使用分布式重放缓冲区,允许更快的样本存储和检索。