各位在强化学习算法实现中调库用SB3多还是Ray多?
各位在强化学习算法实现中调库用SB3多还是Ray多?优缺点是什么?
qaz123zz00 只用过sb3, 没用过ray
我用Ray较多。
SB3的优点:1.基于策略评估的迭代结构,可以调整策略到合适的状态,使得参与者更易于控制;可以根据参与者的特征和环境的变化自动调整参数,从而使控制更加可靠准确;参数更新不会需要额外的计算量,从而减少计算资源的消耗。
SB3的缺点:同类型的动作只能选择一次,不能做重复的决策;更新参数的速度可能较慢,不利于快速响应;算法复杂,计算量较大,不适用于实时和大规模系统。
Ray的优点:可以支持多种不同的策略,从而满足复杂的控制要求;可以快速响应控制的需求,不会浪费大量的计算资源;算法简单易懂,计算量少,适用于实时和大规模系统。
Ray的缺点:参数更新只是简单的累加,不能考虑参与者的特征和环境变化;普通的反馈控制可能会受到初始状态的影响;不能有效地学习可能出现的边缘情况。
我用ray比较多
已经很久不用SB3了,现在的体会是之前用SB3的时候的感受,SB3是在之前的hill的stable baselines上改进的,
而hill的stable baselines是tensorflow1写的,都2023年了,谁还用tensorflow1啊,所以在这个基础上改进出来的,是Pytorch版本的。是在baselines直接修改的,只是支持一些常用的强化学习的算法,2018年以后的很多算法都不支持,不知道现在怎么样了。然后也不支持多个GPU的训练。
SB3也有很多优点,这也和它的定位有关,SB3适合新手,只需要简单修改,代码就可以跑起来。
现在主要用的比较多的还是RLlib ray。ray是一套算是比较完整的框架了,然后支持分布式的训练,但是ray的代码比较复杂,
需要一定的基础和对强化学习算法有一定的了解才能使用。但是ray更加灵活,他的生态环境中不只是包括强化学习算法,
还有很多机器学习的算法,然后也可以支持Tensorflow1、Pytorch和Tensorflow2。然后缺点也有,修改代码很麻烦,上手难度也高,
安装的也比较麻烦,有各种依赖。但是ray是从初级走向高级的一个不可缺少的框架。
路线:如果开始学,只是想跑一下基础的算法和实现啥的,那推荐SB3和ElegantRL这两个,其实更加推荐ElegantRL,这个更小,代码量也很少,还支持多GPU训练,也比SB3更加稳定。然后基本算法了解完,就可以考虑试试ray。这个生态挺完善的。