ray.rllib 入门实践-2:配置算法

【ray】【PPOConfig】 类PPOConfig继承于PPOConfig。 阅读详情
AI摘要

本文汇总了ray.rllib算法的多种配置方式,介绍了环境配置,包括torch、ray等版本信息。详细阐述四种配置方式的优缺点,推荐方式3,指出新上手者建议用AlgorithmConfig方式配置,最后给出可运行代码。

前言:

        ray.rllib的算法配置方式有多种,网上的不同教程各不相同,有的互不兼容,本文汇总罗列了多种算法配置方式,给出推荐,并在最后给出可运行代码。

环境配置:

        torch==2.5.1

        ray==2.10.0

        ray[rllib]==2.10.0

        ray[tune]==2.10.0

        ray[serve]==2.10.0

        numpy==1.23.0

        python==3.9.18

四种配置方式

方法1

import os 
from ray.rllib.algorithms.ppo import PPO,PPOConfig
from ray.tune.logger import pretty_print

## 配置算法
config = PPOConfig()\
        .rollouts(num_rollout_workers = 2)\
        .resources(num_gpus=0)\
        .environment(env="CartPole-v1")
algo = config.build()

缺点:不能在每行配置后面添加注释, 否则报错。 

方法2

import os 
from ray.rllib.algorithms.ppo import PPO,PPOConfig
from ray.tune.logger import pretty_print

## 配置算法
algo = (
    PPOConfig()
    .rollouts(num_rollout_workers=1)  ## 注释
    .resources(num_gpus=0)
    .environment(env="CartPole-v1")
    .build()
)

用"()"把配置过程括起来,每行后面可以添加注释,不报错。官方教程使用的该种方式。 

方式3:推荐

import os 
from ray.rllib.algorithms.ppo import PPO,PPOConfig
from ray.tune.logger import pretty_print

## 配置算法2
storage_path = "F:/codes/RLlib_study/ray_results/build_method_3"
config = PPOConfig()
config = config.rollouts(num_rollout_workers=2)
config = config.resources(num_gpus=0,num_cpus_per_worker=1,num_gpus_per_worker=0)
config = config.environment(env="CartPole-v1",env_config={})
config.output = storage_path  ## 设置过程文件的存储路径
algo = config.build()

优点:每一行是一个完整的命令, 后面可以添加注释,可以直接给config类的成员变量赋值。比如上面代码示例中的:config.output = storage_path , 直接配置存储路径,而不用去寻找output变量属于哪一个PPOConfig子模块。 

方式4:

import os 
from ray.rllib.algorithms.ppo import PPO,PPOConfig
from ray.tune.logger import pretty_print

storage_path = "F:/codes/RLlib_study/ray_results/build_method_4"
os.makedirs(storage_path, exist_ok=True)
config = {
    "env":"CartPole-v1",
    "env_config":{}, ## 用于传递给env的信息
    "frame_work":"torch",
    "num_gpus":0,
    "num_workers":2,
    "num_cpus_per_worker":1,
    "num_envs_per_worker":1,
    "num_gpus_per_worker":0,
    "lr":0.001,
    "model":{
        "fcnet_hiddens":[256,256,64],
        "fcnet_activation":"tanh",
        "custom_model_config":{},
        "custom_model":None},
    "output":storage_path
}
algo = PPO(config=config) ## 构建算法

        这种方式在ray1.4版本之前使用较多,是唯一的配置方式。随着ray的更新迭代,用class封装了configDict, 即上面的方法1,方法2,方法3所用的方式。用 PPOConfig 进行配置后,最终也是转成方法4中的字典传递给算法使用, 但是相比方法4的字典, 方法1、2、3可以在编程时有语法提示,告诉你有哪几个成员变量或成员函数可以用于设计config。 

        现在仍旧有很多人用方法4配置rllib算法,我认为这是从老版本传递下来的一种习惯,新上手的人建议使用 AlgorithmConfig的方式配置算法。

汇总代码:

from ray.rllib.algorithms.ppo import PPO,PPOConfig
from ray.tune.logger import pretty_print
import os 

## 配置算法1
# config = PPOConfig()\
#         .rollouts(num_rollout_workers = 2)\
#         .resources(num_gpus=0)\
#         .environment(env="CartPole-v1")
# algo = config.build()

# ## 配置算法2
# algo = (
#     PPOConfig()
#     .rollouts(num_rollout_workers=1) 
#     .resources(num_gpus=0)
#     .environment(env="CartPole-v1")
#     .build()
# )

# ## 配置算法3
# storage_path = "F:/codes/RLlib_study/ray_results/build_method_4"
# os.makedirs(storage_path, exist_ok=True)
# config = PPOConfig()
# config = config.rollouts(num_rollout_workers=1) 
# config = config.resources(num_gpus=0)
# config = config.environment(env="CartPole-v1")
# config.output = storage_path
# algo = config.build()

## 配置算法 4
storage_path = "F:/codes/RLlib_study/ray_results/build_method_4"
os.makedirs(storage_path, exist_ok=True)
config = {
    "env":"CartPole-v1",
    "env_config":{}, ## 用于传递给env的信息
    "frame_work":"torch",
    "num_gpus":0,
    "num_workers":2,
    "num_cpus_per_worker":1,
    "num_envs_per_worker":1,
    "num_gpus_per_worker":0,
    "lr":0.001,
    "model":{
        "fcnet_hiddens":[256,256,64],
        "fcnet_activation":"tanh",
        "custom_model_config":{},
        "custom_model":None},
    "output":storage_path
}
algo = PPO(config=config) ## 构建算法
    


## 训练模型. 每个 iter 里重复执行多次 episode. 直到满足条件, 比如新增采样量达到一定体量。
for i in range(2):
    result = algo.train()
    print(pretty_print(result))

## 保存模型
checkpoint_dir = algo.save().checkpoint.path   
## algo.save()用于实现存储checkpoint, 后面跟着的.checkpoint.path用于返回存储路径
print(f"Checkpoint saved in directory {checkpoint_dir}")

RLlib一:RLlib入门 强化学习库,RLlib入门 阅读详情

相关推荐

【ray】【Rllib】关键概念

在特定的环境和政策条件下,政策评估会产生一批批的经验。动作->奖励->下一个状态->训练->重复的模拟迭代,直到结束状态,被称为一个插曲,或在RLlib中,一个展示。RL仿真反馈循环重复收集一个(单代理情况)或多个(多代理情况)策略的数据,在这些收集的数据上训练策略,并确保策略的权重保持同步。因此,收集的环境数据包含观察结果、采取的行动、收到的奖励和所谓的完成标志,指示代理在模拟中播放的不同情节的边界。策略是一个将环境的观察映射到要采取的动作的函数,通常写为π(s(t))-> a(t)。

wq6qeg88的博客 1499

RLlib三:环境

RLlib适用于几种不同类型的环境,包括Farama-Foundation Gymnasium、用户定义、多智能体环境以及批处理环境。并非所有环境都适用于所有算法。查看算法概述以获取更多信息。

Kiek17的博客 1347

Ray强化学习分布式框架及RLlib

最近阅读了 Ray: A Distributed Framework for Emerging AI Applications RLlib: Abstractions for Distributed Reinforcement Learning 两篇文章,然而发现对应的博客解读还是比较少,所以简单总结下这两篇文章。 首先这是一个开源项目,相关的文档已经可以轻松在网上获得。分布式框架 ...

如雨繁辰‘s blog 8684

Rllib学习[1] --rllib基本指令

讲述rllib中的基本操作

upr_rom的博客 4220

【ray】【RLlib】【Algorithms 算法】

0.0对应于均匀概率。training(*,vtrace:bool| None =,use_critic:bool| None =,use_gae:bool| None =,lambda_:float| None =,clip_param:float| None =,use_kl_loss:bool|无=,kl_coeff:浮点|无=,kl_target:float|无=,τ:浮点|None =,target_update_frequency:int|无=,**kwargs)→ APPOConfig。

wq6qeg88的博客 1196

驻极体咪头信号采集避坑指南:如何用5V单电源搞定0.1mV~1V的音频放大?

本文针对驻极体咪头(ECM)在5V单电源系统中信号采集的常见难题,提供了详细的电路设计指南。文章深入分析了咪头的高输出阻抗与微弱信号特性,重点阐述了采用两级运放(如AD8542)实现低噪声放大、直流偏置叠加以及抗混叠滤波的完整方案,并分享了PCB布局、电源去耦等关键调试技巧,帮助工程师稳定采集0.1mV至1V的音频信号。

weixin_29291069的博客 436

机器学习框架Ray -- 1.4 Ray RLlib的基本使用

RLlib是一种建立在Ray之上的行业级别的强化学习(RL)库。RLlib提供了高度可扩展性和统一的API,适用于各种行业和研究应用。定义了一个名为SimpleCorridor的gym环境,使用PPO算法进行并行强化学习。

wenquantongxin的博客 3873

智能安防摄像头埋点实践:用户行为与设备状态的闭环监控(含AI事件)

智能安防摄像头埋点闭环体系设计及应用实践 摘要: 本文系统阐述了智能安防摄像头埋点闭环体系的设计与实践。首先分析了传统埋点的不足及闭环埋点的价值,提出由用户行为埋点、设备状态埋点和AI事件埋点构成的三维埋点体系框架。详细介绍了闭环监控的四大流程:数据采集、汇聚清洗、分析建模和智能决策。通过误报优化、个性化策略等案例展示了AI事件闭环的实际应用价值,并探讨了隐私合规、性能优化等关键挑战的解决思路。最后展望了端侧AI增强、预测型埋点等未来发展趋势。该体系实现了从数据采集到业务决策的完整闭环,有效提升了AI模型性

专注智能硬件软硬件产品经理成长与实战,分享从需求定义到量产落地的真实日记。涵盖IoT趋势洞察、研发协作经验、产品方法论与工具箱,用轻松有趣的“汪式”视角,陪伴产品经理成长、避坑与升级。 1046

ModuleNotFoundError: No module named ‘ray.rllib.agents‘

改为from ray.rllib.algorithms import ppo即可 新版本agents已弃用。

weixin_75168634的博客 1727

Ubuntu服务器通过IPV6端口转发搭建幻兽帕鲁私服实战

本文详细介绍了在Ubuntu服务器上通过IPV6端口转发搭建幻兽帕鲁私服的完整教程。针对只有公网IPV6地址的服务器环境,提供了从硬件检查、端口转发工具配置到游戏服务器安装的全流程解决方案,帮助玩家轻松实现多人联机游戏体验。

weixin_30652491的博客 490

NIDS——suricata(一)

NIDS——suricata环境安装和规则编写

weixin_58666006的博客 1273

深度强化学习框架Ray|RLLib|Tune学习笔记

文章目录0 Ray深度强化学习框架概述1 Ray使用场景—多进程2 Ray使用场景—进程间通信3 Tune使用场景—调参4 RLLib使用场景—RL算法5 Ray、Tune和RLLib关系6 Ray系统架构(实现多进程和跨节点通信)6.1 Ray系统架构—概述6.2 Ray系统架构—内存管理7 Tune系统架构(实验资源分配+调参)8 RLLib系统架构(Trainer、Policy和Agent)8.1 Policy实现功能8.2 Trainer实现功能参考文献 0 Ray深度强化学习框架概述 Ray—

SL_World的博客 9323

10年上位机开发踩过的20个坑:C#通信/线程/UI适配避坑指南

通信层:所有通信操作异步化、异常全覆盖,加断线重连+心跳检测,多设备隔离资源;线程层:UI更新必做跨线程判断,共享数据加锁,线程池限流,异常不静默;UI层:适配高分屏/DPI,用布局容器替代固定坐标,多屏场景绑定主屏幕。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 904

【强化学习】Ray RLlib框架

Ray是一个开源的分布式计算框架,旨在解决大规模计算任务的高性能和分布式处理需求。它提供了任务调度、并行计算、分布式存储等丰富功能,允许终端用户并行化单个机器代码,几乎不需要更改代码。Ray为构建和运行分布式应用程序提供了简单的单元,并在其上构建了一个大型的应用程序、库和工具生态系统,以支持复杂的应用程序。

大雨淅淅的博客 1890

OpenStack详解、排错、经验总结

第1章 Openstack简介 1.1 计算(Compute):Nova。 一套控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务。负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作,配置CPU、内存等信息规格。自Austin版本集成到项目中。 1.2 对象存储(Object Storage):Swift。 一套用于在大规模可扩展系统中通过内置冗余及高容错机制实现对象存储的系统,允许进行存储或者检索文件。可为Glance提供镜像存储,为Cinder提供

weixin_40548182的博客 1974

【现代人形机器人:从物理建模到大模型驱动的控制与学习】第1章 机器人建模回顾

本章建立读者进行后续控制 / 优化 / 学习工作的数学与计算基础。内容分为三大块:刚体运动学:位姿表示、坐标变换、旋转参数与李代数/李群(指数映射、twist)多关节机构的正/逆运动学:DH 与 POE 两种建模、雅可比矩阵推导、数值/解析逆解方法与奇异性问题约束动力学:拉格朗日公式、牛顿—欧拉递归算法、接触/冲击模型、受约束系统的方程(拉格朗日乘子与互补性条件)每一节同时给出与练习题。假设读者已具备线性代数(矩阵、特征分解、SVD)、多变量微积分与基础力学(牛顿第二定律)知识。

u012133341的博客 185

强化学习rllib简明教程 ray

强化学习rllib简明教程 ray     之前说到强化 学习的库,推荐了tianshou,但是tianshou实现的功能还不够多,于是转向rllib,个人还是很期待tianshou的发展。     回到rllib,rllib是基于ray的一个工具(不知道这么说是不是合适),ray和rllib的关系就像,mllib之于spark,ray是个分布式的计算框架。     官网,文档。进入官网,

Lejeune的博客 1万+

【DRAM存储器六十四】DDR5介绍--preamble、postamble、interamble、刷新、power down、MPSM

简述DDR5 reamble、postamble、interamble、刷新、power down、MPSM的功能定义

highman110的博客 337

ray.rllib 入门实践-5: 训练算法

前面的博客介绍了ray.rllib中算法的配置和构建,也包含了算法训练的代码。但是rllib中实现算法训练的方式不止一种,本博客对此进行介绍。

wzg2016的博客 1005

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ray.rllib 入门实践-4: 构建算法

在前面的博客介绍了ray.rllib中的几种配置算法的方法,在示例代码中同步给出了构建(build)算法的方法,但是没有对构建算法的方式进行归纳介绍。本博客主要梳理ray.rllib中,从config生成可训练的algorithm的几种方式。

wzg2016的博客 751

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

RLlib简介

参考: https://ray.readthedocs.io/en/latest/rllib.html https://zhuanlan.zhihu.com/p/79613212 文章目录1. RLlib: 可扩展强化学习1.1. custom env example1.2. API documentation1.3. concepts and custom algorithms2. 一分钟熟悉R...

方小汪的博客 8282

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ray.rllib入门实践-1: 快速跑通

参考: 1. RLlib: Industry-Grade, Scalable Reinforcement Learning — Ray 2.41.02. RLlib一:RLlib入门-优快云博客

wzg2016的博客 731

ray.rllib-入门实践-11: 自定义模型/网络

class My_Model(TorchModelV2, nn.Module): ## 重构以下函数, 函数接口不能变。## 1. 定义自己的模型model_config:ModelConfigDict, ## PPOConfig.training(model = ModelConfigDict), 调用的是config.model中的参数name:str## 测试 custom_arg1 , custom_arg2 传递进来的是什么数值## 定义网络层。

wzg2016的博客 1299

Ray RLlib 架构入门指导

本文介绍了RLlib的核心架构和基本使用方法。主要内容包括: RLlib是构建在Ray上的可扩展强化学习库,通过分离采样和学习过程实现分布式训练。 核心架构包含Algorithm运行时、EnvRunner负责采样、Learner负责学习,通过RLModule和Episode实现解耦。 关键组件:AlgorithmConfig/Algorithm负责配置和运行,EnvRunner与环境交互收集数据,Learner更新模型,RLModule封装神经网络。 训练流程:EnvRunner采样生成Episode →

Keep Learning 245

Ray项目RLlib核心概念解析:从算法到环境的完整指南

Ray项目RLlib核心概念解析:从算法到环境的完整指南 【免费下载链接】ray ray-project/ray: 是一个分布式计算框架,它没有使用数据库。适合用于大规模数据处理和机器学习任务的开发和实现,特别是对于需要使用分布式计算框架的场景。特点是分布式计算框架、无数据库。 ...

gitblog_00202的博客 591

ray.rllib 入门实践-3: 配置参数列表

gamma: float, markov 决策过程的折扣因子, 奖励值的折扣因子。lr: 学习率grad_clip: 是否使用梯度裁剪。根据grad_clip_by的设置裁剪梯度。: 如果grad_clip不是None, 基于这个参数裁剪梯度。: 训练批量大小model: 传递到策略模型的参数。也可以通过成员变量的方式访问。optimizer: 传递给策略模型的参数。: 对每个采样进程的最大请求数。Returns: 返回更新的AlgorithmConfig对象。

wzg2016的博客 2008
上一篇: ray.rllib入门实践-1: 快速跑通
下一篇: ray.rllib 入门实践-3: 配置参数列表
wzg2016
博客等级 码龄10年 539粉丝 493原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值