主要内容

使用并行计算和图形处理器训练代理

如果您有并行计算工具箱™软件,您可以在多核处理器或gpu上运行并行模拟。如果你还有MATLAB®并行服务器™软件方面,您可以在计算机集群或云资源上运行并行模拟。

请注意,不支持使用循环神经网络或多智能体环境中的智能体进行并行训练和模拟。

独立地在哪些设备上模拟或训练代理,一旦代理训练完成,就可以生成代码在CPU或GPU上部署最优策略。中对此有更详细的解释部署训练有素的强化学习策略

使用多个进程

当您使用并行计算训练代理时,并行池客户端(启动训练的MATLAB进程)将其代理和环境的副本发送给每个并行工作者。每个worker在环境中模拟代理,并将它们的模拟数据发送回客户机。客户端代理从工人发送的数据中学习,并将更新后的策略参数发送回工人。

创建的并行池N工作者,使用下面的语法。

pool = parpool(N);

如果未使用parpool(并行计算工具箱),火车函数使用默认的并行池首选项自动创建一个并行池。有关指定这些首选项的详细信息,请参见指定你的并行偏好(并行计算工具箱).注意,使用线程工作者的并行池,例如Pool = parpool("threads"),不支持。

要使用多个进程训练代理,必须传递给火车一个函数rlTrainingOptions其中的对象UseParallel设置为真正的

有关将培训配置为使用并行计算的详细信息,请参阅UseParallel而且ParallelizationOptions选项rlTrainingOptions.有关如何配置异步优势行动者-评论家(A3C)代理训练选项的示例,请参见中的最后一个示例rlTrainingOptions

有关在MATLAB中使用并行计算训练代理的示例,请参见用并行计算训练交流代理平衡车杆系统.例如,在Simulink中使用并行计算训练代理®,请参阅利用并行计算训练DQN Agent的车道保持辅助而且使用强化学习代理训练双足机器人行走

特定代理的并行训练考虑事项

对于非策略代理(如DDPG和DQN代理),不要将所有核心用于并行训练。例如,如果你的CPU有6个核心,那就用4个工人进行培训。这样做为并行池客户端提供了更多的资源,以根据从worker发回的经验计算梯度。对于策略代理(如AC和PG代理),当梯度是在worker上计算时,限制worker的数量是不必要的。

基于梯度的并行化(AC和PG代理)

在并行训练AC和PG智能体时,环境模拟和梯度计算都由工作人员完成。具体来说,工作人员根据环境模拟代理,根据经验计算梯度,并将梯度发送给客户端。客户端计算梯度平均值,更新网络参数,并将更新后的参数发送给工人,以便他们可以继续使用新参数模拟代理。

这种类型的并行训练也被称为基于梯度的并行化,并且允许您在原则上实现与工作人员数量几乎成线性关系的速度改进。但是,这个选项需要同步训练(即模式的属性rlTrainingOptions对象的火车函数必须设置为“同步”).这意味着工人必须暂停执行,直到所有工人都完成,因此训练只能以最慢的工人允许的速度推进。

基于经验的并行化(DQN, DDPG, PPO, TD3和SAC代理)

并行训练DQN、DDPG、PPO、TD3和SAC agent时,环境模拟由worker完成,学习由client完成。具体来说,工作人员在环境中模拟智能体,并向客户端发送经验数据(观察、行动、奖励、下一次观察和终止信号)。然后,客户端根据经验计算梯度,更新网络参数并将更新后的参数发送回工人,工人继续使用新参数模拟代理。

这种类型的并行训练也称为基于经验的并行化,并且可以使用异步训练(即模式的属性rlTrainingOptions对象的火车函数可以设置为“异步”).

只有当模拟环境的计算成本高于优化网络参数的成本时,基于经验的并行化才能减少训练时间。否则,当环境模拟足够快时,工作人员将处于空闲状态,等待客户机学习并发送回更新的参数。

综上所述,基于经验的并行化只有在以下情况下才能提高样本效率(即一个agent在给定时间内可以处理的样本数量)R环境之间的步骤复杂性和学习复杂性较大。如果环境模拟和学习都是同样昂贵的计算,基于经验的并行化不太可能提高样本效率。但是,在这种情况下,对于并行支持的非策略代理(DQN、DDPG、TD3和SAC),可以减小要生成的迷你批处理大小R更大,从而提高样本效率。

若要在并行训练DQN、DDPG、TD3或SAC代理时强制经验缓冲区中的相邻性,请设置NumStepsToLookAhead属性或相应的代理选项对象1.当尝试并行训练时,不同的值会导致错误。

使用gpu

您可以通过在本地GPU而不是CPU上执行表示操作(例如梯度计算和预测)来加速训练。为此,在创建评论家或演员时,设置其UseDevice选项“图形”而不是“cpu”

“图形”选项需要并行计算工具箱软件和CUDA®使英伟达®GPU。有关支持的图形处理器的更多信息,请参见GPU计算要求(并行计算工具箱)

你可以使用gpuDevice(并行计算工具箱),查询或选择要使用MATLAB的本地GPU设备。

当你在演员或评论家中有一个深度神经网络,具有大批量或需要对输入图像执行多个卷积层等操作时,使用gpu可能是有益的。

使用GPU训练agent的示例请参见训练DDPG Agent用图像观察摆动和平衡摆

同时使用多进程和gpu

您还可以使用多个进程和本地GPU(以前使用gpuDevice(并行计算工具箱))同时。为此,首先创建一个批评家或参与者近似器对象UseDevice选项设置为“图形”.然后,您可以使用评论家和参与者来创建代理,然后使用多个流程来训练代理。这是通过创建rlTrainingOptions其中的对象UseParallel设置为真正的然后把它传给火车函数。

对于基于梯度的并行化(必须在同步模式下运行),环境模拟由worker完成,worker使用本地GPU计算梯度并执行预测步骤。然后将梯度发送回并行池客户端进程,该进程计算平均值,更新网络参数并将其发送回worker,以便它们继续使用新参数针对环境模拟代理。

对于基于经验的并行化(可以在异步模式下运行),工作线程根据环境模拟代理,并将经验数据发送回并行池客户机。然后,客户端使用其本地GPU根据经验计算梯度,然后更新网络参数并将更新后的参数发送回工人,工人将使用新参数根据环境继续模拟代理。

请注意,当同时使用并行处理和GPU来训练PPO代理时,工人使用他们的本地GPU来计算优势,然后将处理后的经验轨迹(包括优势、目标和动作概率)发送回客户端。

另请参阅

||

相关的话题

Baidu
map