
文档|实现的算法|安装|入门|执照
Omnisafe是一种基础设施框架,旨在加速安全的增强学习(RL)研究。它为安全的RL算法提供了全面可靠的基准,也为研究人员提供了一个箱外的模块化工具包。 SAFERL打算开发算法,以最大程度地减少意外伤害或不安全行为的风险。
Omnisafe是安全强化学习领域的首个统一学习框架,旨在促进Saferl学习社区的发展。 Omnisafe的主要特征:
高度模块化的框架。 Omnisafe提出了一个高度模块化的框架,其中包含了针对跨不同领域的安全加固学习量身定制的数十种算法。该框架通过使用适配器和包装器设计组件的各种算法类型和精心设计的API进行抽象,因此该框架具有多功能性,并且可以在不同组件之间弥合间隙并实现无缝的相互作用。该设计可轻松扩展和自定义,使其成为使用不同类型算法的开发人员的强大工具。
高性能并行计算加速度。通过利用torch.distributed的功能。分配后,Omnisafe通过过程并行性加速了算法的学习过程。这使Omnisafe不仅可以支持环境级别的异步并行性,而且还融合了剂异步学习。这种方法可以增强训练稳定性,并通过部署平行勘探机制来加快训练过程。代理在Omnisafe中的代理学习的整合强调了其为提供一个多功能且强大的平台来推进SAFERL研究的承诺。
开箱即用的工具包。 Omnisafe提供可自定义的工具包,用于培训,基准测试,分析和渲染等任务。教程和用户友好的API使初学者和普通用户可以轻松,而高级研究人员可以在没有复杂代码的情况下提高其效率。
如果您发现Omnisafe有用或在研究中使用Omnisafe,请在您的出版物中引用它。
@article { JMLR:v25:23-0681 ,
author = { Jiaming Ji and Jiayi Zhou and Borong Zhang and Juntao Dai and Xuehai Pan and Ruiyang Sun and Weidong Huang and Yiran Geng and Mickel Liu and Yaodong Yang } ,
title = { OmniSafe: An Infrastructure for Accelerating Safe Reinforcement Learning Research } ,
journal = { Journal of Machine Learning Research } ,
year = { 2024 } ,
volume = { 25 } ,
number = { 285 } ,
pages = { 1--6 } ,
url = { http://jmlr.org/papers/v25/23-0681.html }
}Omnisafe需要Python 3.8+和Pytorch 1.10+。
我们在Linux上支持和测试Python 3.8、3.9、3.10。同时,我们还支持MACOS的M1和M2版本。我们将接受与Windows相关的PR,但不正式支持它。
# Clone the repo
git clone https://github.com/PKU-Alignment/omnisafe.git
cd omnisafe
# Create a conda environment
conda env create --file conda-recipe.yaml
conda activate omnisafe
# Install omnisafe
pip install -e . Omnisafe托管在 /。
pip install omnisafe cd examples
python train_policy.py --algo PPOLag --env-id SafetyPointGoal1-v0 --parallel 1 --total-steps 10000000 --device cpu --vector-env-nums 1 --torch-threads 1| 域 | 类型 | 算法注册表 |
|---|---|---|
| 关于政策 | 原始双重 | trpolag; ppolag; PDO; RCPO |
| trpopid; cppopid | ||
| 凸优化 | CPO; pcpo;焦点;杯子 | |
| 惩罚功能 | IPO; P3O | |
| 原始 | oncrpo | |
| 政策 | 原始偶 | ddpglag; TD3LAG;萨克拉格 |
| DDPGPID; TD3PID;糖 | ||
| 基于模型 | 在线计划 | Safeloop; ccepets; rcepets |
| 悲观的估计 | 签名 | |
| 离线 | 基于q学习 | bcqlag; C-Crr |
| 基于骰子 | coptdice | |
| 其他配方MDP | ET-MDP | PPO早产; trpoEarlyperminited |
| 索特尔 | pposaute; trposaute | |
| simmerrl | pposimmerpid; trposimmerpid |
这是安全gymnasium支持的环境列表:
| 类别 | 任务 | 代理人 | 例子 |
|---|---|---|---|
| 安全导航 | 目标[012] | 点,汽车,赛车,蚂蚁 | safetypointgoal1-v0 |
| 按钮[012] | |||
| 推[012] | |||
| 圆[012] | |||
| 安全速度 | 速度 | Halfcheetah,料斗,游泳者,沃克2D,蚂蚁,人形生物 | 安全类固定级V1 |
| 安全的艾萨克体育馆 | Appassafefinger | Shadowhand | Shadowhandoversafefinger |
| 超级安排 | |||
| catchover2underarmsafefinger | |||
| catchover2underarmsafeext |
有关环境的更多信息,请参阅安全gymnasium。
我们提供一个灵活的自定义环境界面,该界面允许用户在不修改Omnisafe源代码的情况下实现以下内容:
我们提供有关环境自定义和社区环境定制环境定制的分步教程,以详细介绍如何使用Omnisafe的这种非凡功能。
注意:如果您发现自定义环境的麻烦,请随时开放问题或讨论。如果您愿意贡献环境接口的实现,也欢迎拉动请求。
pip install omnisafe
omnisafe --help # Ask for help
omnisafe benchmark --help # The benchmark also can be replaced with 'eval', 'train', 'train-config'
# Quick benchmarking for your research, just specify:
# 1. exp_name
# 2. num_pool(how much processes are concurrent)
# 3. path of the config file (refer to omnisafe/examples/benchmarks for format)
# Here we provide an exampe in ./tests/saved_source.
# And you can set your benchmark_config.yaml by following it
omnisafe benchmark test_benchmark 2 ./tests/saved_source/benchmark_config.yaml
# Quick evaluating and rendering your trained policy, just specify:
# 1. path of algorithm which you trained
omnisafe eval ./tests/saved_source/PPO-{SafetyPointGoal1-v0} --num-episode 1
# Quick training some algorithms to validate your thoughts
# Note: use `key1:key2`, your can select key of hyperparameters which are recursively contained, and use `--custom-cfgs`, you can add custom cfgs via CLI
omnisafe train --algo PPO --total-steps 2048 --vector-env-nums 1 --custom-cfgs algo_cfgs:steps_per_epoch --custom-cfgs 1024
# Quick training some algorithms via a saved config file, the format is as same as default format
omnisafe train-config ./tests/saved_source/train_config.yaml我们已经为各种算法提供了基准结果,包括上政策,基于模型,基于模型和离线方法以及参数调整分析。请参考以下内容:
通过一系列Google Colab笔记本轻松快速地探索omnisafe:
我们非常高兴与用户合作创建各种语言的教程。请参阅我们当前支持的语言列表。如果您有兴趣将本教程转换为新语言或改进现有版本,请向我们提交PR。
请参阅ChangElog.md。
我们已经编制了一份使用Omnisafe进行算法实施或实验的论文列表。如果您愿意将您的工作包括在此列表中,或者希望将实施正式集成到Omnisafe中,请随时与我们联系。
| 文件 | 出版商 |
|---|---|
| 非政策原始双重安全增强学习 | ICLR 2024 |
| 通过可行性引导的扩散模型安全离线增强学习 | ICLR 2024 |
| 安全加强学习的迭代可及性估算 | 神经2023 |
| 用于安全加强学习的平衡奖励和安全优化:梯度操纵的视角 | AAAI 2024 |
| 使用一级决策树从演示中学习安全限制 | AAAI 2024研讨会 |
Omnisafe主要由Yaodong Yang教授执导的Saferl研究团队开发。我们的Saferl研究团队成员包括Borong Zhang,Jiayi Zhou,Jtao Dai,Weidong Huang,Ruiyang Sun,Xuehai Pan和Jiaming Ji。如果您在使用Omnisafe的过程中有任何疑问,请随时在GitHub问题页面上询问您的问题,我们将在2-3个工作日内回复您。
Omnisafe以Apache许可证2.0发布。