Isaac-gym(5):关于强化学习
希望和正在或者想要学习使用ISAAC-GYM的朋友一起有一个讨论群,尝试互帮互助,交流学习内容~
目前刚开始尝试,不知道能不能建立起来,如果有意向请私戳!!
——2023.02
- 官方链接:
https://github.com/NVIDIA-Omniverse/IsaacGymEnvs
1、环境建立示例
import isaacgym
import isaacgymenvs
import torchenvs = isaacgymenvs.make(seed=0, task="Ant", #对应执行时用到的名称num_envs=2000, sim_device="cuda:0",rl_device="cuda:0",
)
print("Observation space is", envs.observation_space)
print("Action space is", envs.action_space)
obs = envs.reset()
for _ in range(20):obs, reward, done, info = envs.step(torch.rand((2000,)+envs.action_space.shape, device="cuda:0"))
2、运行benchmarks
尝试训练可以终端输入:
python train.py task=Cartpole
python train.py task=Ant
其中train.py
位于 ~/IsaacGymEnvs/isaacgymenvs。
默认情况下,会显示一个预览窗口,会降低训练速度。可以在运行时使用v键来禁用查看器更新,并允许训练更快地进行。训练几秒钟后,当效果变好时,再次按下v键恢复观看。
(点击画面,按v后所有对象静止,再按v恢复)
使用esc键或关闭查看器窗口以提前停止训练。
同时,可以选择盲训,在终端中使用Control-C提前停止:
python train.py task=Ant headless=True
3、载入训练的模型/Checkpoints
Checkpoints保存于路径:runs/EXPERIMENT_NAME/nn
其中EXPERIMENT_NAME
为 task name
,在envs示例注释中有提到;但也可以通过参数experiment
来覆盖。
- 载入一个Checkpoint并断点续训:
python train.py task=Ant checkpoint=runs/Ant/nn/Ant.pth
- 导入训练模型且仅体现推断效果(不训练):
python train.py task=Ant checkpoint=runs/Ant/nn/Ant.pth test=True num_envs=64
(num_envs=64 可更改)
- 如果路径名称中含有“[” 或者 “=” :
checkpoint="./runs/Ant/nn/last_Antep\=501rew\[5981.31\].pth"
4、配置和命令行参数
train.py
中的关键参数包括:
task=TASK
选择要训练的任务。包括:AllegroHand
,Ant
,Anymal
,AnymalTerrain
,BallBalance
,Cartpole
,FrankaCabinet
,Humanoid
,Ingenuity
,Quadcopter
,ShadowHand
,ShadowHandOpenAI_FF,
ShadowHandOpenAI_LSTM
, andTrifinger
。
对应于:isaacgymenvs/config/task
中的文件train=TRAIN
选择要使用的培训配置。将自动默认为环境的正确配置。
例如:<TASK>PPO
num_envs=NUM_ENVS
选择要使用的环境个数(覆盖任务配置中设置的默认环境数)seed=SEED
为随机化设置种子值,并覆盖在任务配置中设置的默认种子test=TEST
如果设置为True
,则仅对策略运行推断,不执行任何训练checkpoint=CHECKPOINT_PATH
设置要加载以进行培训或测试的检查点的路径。headless=HEADLESS
是否选择使用headless模式experiment=EXPERIMENT
设置实验的名称max_iterations=MAX_ITERATIONS
设置要运行的迭代次数。为提供的环境提供了合理的默认值。sim_device=SIM_DEVICE_TYPE
用于物理模拟的设备。设置为cuda:0
(默认值)以使用GPU,设置为cpu以使用CPU。遵循类似PyTorch的设备语法。rl_device=RL_DEVICE
用于RL算法的设备/ID。默认为cuda:0
,并遵循类似PyTorch的设备语法。graphics_device_id=GRAPHICS_DEVICE_ID
用于渲染的Vulkan图形设备ID。默认值为0。注意-这可能与CUDA设备ID不同,并且不遵循类似PyTorch的设备语法。pipeline=PIPELINE
要使用的API管道。默认为gpu
,也可以设置为cpu
允许将配置文件中的变量直接设置为命令行参数。例如,要设置rl_games训练运行的折扣率,可以使用train.prarams.config.gamma=0.999
。同样,也可以设置任务配置中的变量。例如,task.env.enableDebugVis=True
。
配置的任务和训练部分的工作方式是通过使用配置组。task的实际配置在isaacgamenvs/config/task/<task>.yaml
中,train的配置在isaac gamenvs/cnfig/train/<task>PPO.yaml
中。
5、Tasks
tasks的源代码路径:isaacgymenvs/tasks
每个任务都将isaacgymenvs/base/vec_task.py
中的VecEnv基类子类化;
建立自己的tasks可以参考:~/IsaacGymEnvs/docs/framework.md
每个tasks的细节可以参考:https://github.com/NVIDIA-Omniverse/IsaacGymEnvs/blob/main/docs/rl_examples.md
6、视频录制
获取模拟器图片的API:env.render(mode='rgb_rray')
获取模拟器视频的API:gym.wrappers.RecordVideo
通过以下示例可以存储视频到video
文件夹中:
import gym
import isaacgym
import isaacgymenvs
import torchenvs = isaacgymenvs.make(seed=0, task="Ant", num_envs=20, sim_device="cuda:0",rl_device="cuda:0",graphics_device_id=0,headless=False,multi_gpu=False,virtual_screen_capture=True,force_render=False,
)
envs.is_vector_env = True
envs = gym.wrappers.RecordVideo(envs,"./videos",step_trigger=lambda step: step % 10000 == 0, # record the videos every 10000 stepsvideo_length=100 # for each video record up to 100 steps
)
envs.reset()
print("the image of Isaac Gym viewer is an array of shape", envs.render(mode="rgb_array").shape)
for _ in range(100):envs.step(torch.rand((20,)+envs.action_space.shape, device="cuda:0"))
7、在训练时存储视频
可以通过切换capture_video=True
标志自动捕捉代理游戏的视频,并通过capture_video_len=100
调整捕捉频率capture_video_freq=1500
和视频长度。可以设置force_render=False
,以在未捕捉视频时禁用渲染:
python train.py capture_video=True capture_video_freq=1500 capture_video_len=100 force_render=False
您还可以将视频自动上传到“权重和偏差”:
python train.py task=Ant wandb_activate=True wandb_entity=nvidia wandb_project=rl_games capture_video=True force_render=False
8、其他
- 多GPU训练
您可以使用torchuron
(即torch.distributed
)使用此存储库在NGC上运行多GPU训练。
例如:
torchrun --standalone --nnodes=1 --nproc_per_node=2 train.py multi_gpu=True task=Ant <OTHER_ARGS>
其中:
--nproc_per_node=
: 指定要运行的进程数
multi_gpu=True
: 必须在训练脚本上设置标志,才能运行多GPU训练。
域随机化
https://github.com/NVIDIA-Omniverse/IsaacGymEnvs/blob/main/docs/domain_randomization.md再现性和确定性
https://github.com/NVIDIA-Omniverse/IsaacGymEnvs/blob/main/docs/reproducibility.md
Isaac-gym(5):关于强化学习相关推荐
- 基于自定义gym环境的强化学习
本文实现了一个简单的基于gym环境的强化学习的demo,参考了博客使用gym创建一个自定义环境. 1. 依赖包版本 gym == 0.21.0 stable-baselines3 == 1.6.2 2 ...
- 安装gym库_强化学习Gym库学习实践(一)
最近看了一篇研究方向相关的文章,介绍了一种DQN的应用,感觉还挺新鲜的.想着把这篇文章复现出来,就开始学习强化学习的相关知识,作为一名小白,这一路走的可是真的十分艰难(我太菜了啊!) 看了莫烦Pyth ...
- 强化学习环境库 Gym 发布首个社区发布版,全面兼容 Python 3.9
作者:肖智清 来源:AI科技大本营 强化学习环境库Gym于2021年8月中旬迎来了首个社区志愿者维护的发布版Gym 0.19.该版本全面兼容Python 3.9,增加了多个新特性. 强化学习环境库的事 ...
- 强化学习之gym初战实战案例:悬崖案例CliffWalking-v0。
文章目录 强化学习简介 gym简介 CliffWalking-v0 强化学习简介 我们知道,强化学习广泛应用于玩一些较为简单的游戏,其思想就是:过一段时间(例如0.1秒)拍一张(游戏)图片,然后机器看 ...
- 赠书 | 干货!用 Python 动手学强化学习
01 了解强化学习 新闻报道中很少将强化学 习与机器学习.深度学习.人工智能这些关键词区分开来,所以我们要先介绍什么是强化学习,再讲解其基本机制. 强化学习与机器学习.人工智能这些关键词之间的关系: ...
- 强化学习之 PPO 算法
简述 PPO PPO 算法是一种基于策略的.使用两个神经网络的强化学习算法.通过将"智体"当前 的"状态"输入神经网络,最终会得到相应的&quo ...
- 使用强化学习建立下一个最佳活动(或称行动营销)模型【译文初稿】
原文:<Building a Next Best Action model using reinforcement learning> Ilya Katsov, May 15, 2019 ...
- 强化学习与自动驾驶——Carla环境配置与benchmark解读
1.Carla Server Carla目前的稳定版为0.8.2,https://github.com/carla-simulator/carla/releases/tag/0.8.2 即可下载,li ...
- tensorflow强化学习之打乒乓球(Reinforcement Learning)
2019独角兽企业重金招聘Python工程师标准>>> 深度学习大部分是监督学习,而且需要海量,高质量的数据对.这在现实世界,是非常难的事情.人类的学习过程里,不可能让一个孩子,看一 ...
- 强化学习(三) - Gym库介绍和使用,Markov决策程序实例,动态规划决策实例
强化学习(三) - Gym库介绍和使用,Markov决策程序实例,动态规划决策实例 1. 引言 在这个部分补充之前马尔科夫决策和动态规划部分的代码.在以后的内容我会把相关代码都附到相关内容的后面.本部 ...
最新文章
- 银行计算机设备管理 总结,【2017年银行自助设备中心年终总结】_银行自助设备工作总结...
- canvas 文字颜色_实现一个canvas小画板
- python语言怎么用-python语言中with as的用法使用详解
- 如何在Ubuntu18.04安装Tesla T4板的驱动程序
- JAVA 求数组中的最大值
- 【计蒜客信息学模拟赛1月月赛 - D】Wish(dp计数,数位)
- 使用WindowsAPI创建txt文件
- AcWing 893. 集合-Nim游戏(SG函数)
- mui 中template 的使用
- 【点滴】向Sql Express数据库文件中注册Asp.NET 2.0用户管理模块
- 破解日记 WiFi密码跑字典暴力破解 尽可能通俗易懂的版本
- 生活中计算机自动控制原理的应用,《自动控制原理》虚拟实验系统在教学中的应用...
- 疫情之下,从一座空城,到另一座空城,第一次看到这么寂寞的杭州
- CDN是什么?使用CDN有什么优势?
- 在网页项目中集成扫码枪设备,实现二维码扫码识别实战
- EXCEL VLOOKUP用中文匹配出错
- SNIPER: Efficient Multi-Scale Training
- C++Primer PLus 第五版读书笔记
- js原生offsetParent解析
- Scrapy-Splash爬取淘宝排行榜(二)
热门文章
- 长文:41题常见的测试面试题(附答案)
- 基于javaweb的农产品溯源管理系统(java+ssm+jsp+layui+jquery+mysql)
- 用CodeViser ARM 仿真器广泛用于手机软硬件调试
- 一文带你详解Redis常用的数据类型以及面试常碰到的数据持久化机制原理
- 面试常问:Mybatis 使用了哪些设计模式?
- DA14580存储空间映射
- JAVA随机读写功能实现类_Java 实现文件随机读写-RandomAccessFile
- 快速理解j=j++ 和 j=++j(新手入门)
- 2022二建优选冲刺题,快快来收藏
- VGA协议及VGA显示