主要内容

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

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

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

独立地在哪些设备上模拟或训练代理,一旦对代理进行了训练,就可以生成代码在CPU或GPU上部署最优策略。这将在部署训练有素的强化学习策略

使用多个进程

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

创建一个平行的池N工人们,使用下面的语法。

池= parpool (N);

如果不使用parpool(并行计算工具箱),火车函数使用默认的并行池首选项自动创建一个并行池。有关指定这些首选项的更多信息,请参见指定并行首选项(并行计算工具箱).注意,使用线程工作者的并行池,如池= parpool(“线程”),不支持。

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

有关配置培训以使用并行计算的更多信息,请参见UseParallel而且ParallelizationOptions选项rlTrainingOptions.有关如何配置异步优势actor-批评家(A3C)代理训练选项的示例,请参见中的最后一个示例rlTrainingOptions

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

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

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

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

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

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

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

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

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

只有当模拟环境的计算成本高于优化网络参数的成本时,基于经验的并行化才能减少训练时间。否则,当环境模拟足够快时,工作线程就闲置着,等待客户机学习并返回更新后的参数。

综上所述,基于经验的并行化能够提高样本效率(即一个代理在给定时间内可以处理的样本数量),只有当比例R在环境的步骤复杂度和学习复杂度之间是很大的。如果环境模拟和学习的计算成本都一样高,那么基于经验的并行化就不太可能提高样本效率。但是,在这种情况下,对于并行支持的非策略代理(DQN、DDPG、TD3和SAC),您可以减少小批处理的大小R更大,从而提高样本效率。

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

使用gpu

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

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

您可以使用gpuDevice(并行计算工具箱)查询或选择一个本地GPU设备,以与MATLAB一起使用。

当您在行动者或批评家中有一个深度神经网络时,使用gpu可能是有益的,这些神经网络具有较大的批处理规模,或需要对输入图像执行多个卷积层等操作。

使用GPU培训座席的示例,请参见利用图像观察训练DDPG代理上摆和平衡摆

使用多进程和gpu

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

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

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

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

另请参阅

||

相关的话题

Baidu
map