主要内容

使用并行计算和GPU训练代理

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

独立于您用来模拟或培训代理的设备,一旦代理接受培训,您就可以生成代码,以便在CPU或GPU上部署最佳策略部署经过培训的强化学习策略.

使用多个进程

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

创建一个并行的N请使用以下语法。

池= parpool (N);

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

要使用多个进程培训代理,必须将其传递给火车函数RL培训选项其中的对象使用并行设置为真正的.

有关将培训配置为使用并行计算的更多信息,请参阅使用并行并行化选项中的选项RL培训选项.

请注意,不支持对包含多个代理的环境进行并行模拟和培训。万博1manbetx

有关在MATLAB中使用并行计算训练代理的示例,请参见用并行计算训练AC-Agent平衡车杆系统。例如,在Simulink中使用并行计算训练代理万博1manbetx®看见基于并行计算的车道保持辅助训练DQN代理使用强化学习代理训练两足机器人行走.

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

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

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

为了并行培训AC和PG代理DataToSendFromWorkers财产的平行训练对象(包含在培训选项对象中)必须设置为“梯度”.

这将配置培训,以便环境模拟和梯度计算都由工作人员完成。具体而言,工作人员根据环境模拟代理,根据经验计算梯度,并将梯度发送给客户端。客户端对梯度进行平均,更新网络参数并发送更新将参数返回给工人,以便他们可以继续使用新参数模拟代理。

使用基于梯度的并行化,原则上可以实现速度的提高,这在工人数量上几乎是线性的模式财产的RL培训选项传递给火车函数必须设置为“同步”)。这意味着工人必须暂停执行,直到所有工人都完成为止,因此培训只能以最慢的工人允许的速度进行。

当AC代理并行训练时,如果NumStepToLookAheadAC代理选项对象的属性和STEPSUNTILDATISSENT财产的并行化选项对象设置为不同的值。

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

为了并行培训DQN、DDPG、PPO、TD3和SAC代理DataToSendFromWorkers财产的并行化选项对象(包含在培训选项对象中)必须设置为“经验”. 此选项不需要同步培训(即模式财产的RL培训选项传递给火车功能可以设置为“异步”).

这将配置培训,使环境模拟由工人完成,学习由客户完成。具体而言,工人根据环境模拟代理,并发送经验数据(观察、行动、奖励、下一次观察和终止信号)然后,客户端根据经验计算梯度,更新网络参数,并将更新后的参数发送回工作者,工作者继续使用新参数模拟代理。

只有当模拟环境的计算成本高于优化网络参数的成本时,基于经验的并行化才能减少训练时间。否则,当环境模拟足够快时,工作人员会无所事事地等待客户端学习并返回更新的参数。

换句话说,基于经验的并行化只有在比率R环境步长复杂度与学习复杂度之间存在较大差异。如果环境模拟和学习的计算成本相似,那么基于经验的并行化不太可能提高样本效率。但是,在这种情况下,对于非策略代理,您可以减少迷你批处理的大小R更大,从而提高采样效率。

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

使用GPU

当使用深度神经网络函数逼近器进行演员或演员表示时,可以通过在本地GPU而不是CPU上执行表示操作(如梯度计算和预测)来加快训练速度。为此,在创建演员或演员表示时,请使用rlRepresentationOptions对象,其中使用设备选项设置为“gpu”而不是“cpu”.

opt=rlRepresentationOptions(“使用设备”,“gpu”);

这个“gpu”该选项需要并行计算工具箱软件和CUDA®启用NVIDIA®GPU。有关支持的GPU的更多信息,请参阅万博1manbetxGPU版万博1manbetx本支持(并行计算工具箱).

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

当行动者或批评者表示中的深度神经网络在输入图像上使用多个卷积层或具有大批量时,使用gpu可能是有益的。

有关如何使用GPU培训代理的示例,请参阅通过图像观察训练DDPG药剂摆动和平衡摆锤.

同时使用多进程和GPU

您还可以使用多个进程和本地GPU(以前使用gpuDevice(并行计算工具箱))同时,。具体来说,您可以使用rlRepresentationOptions对象,其中使用设备选项设置为“gpu”。然后,您可以使用评论家和参与者创建代理,然后使用多个流程培训代理。这可以通过创建RL培训选项其中的对象使用并行设置为真正的然后把它传递给火车作用

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

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

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

另见

||

相关的话题