
Documentação | Algoritmos implementados | Instalação | Introdução | Licença
O Omnisafe é uma estrutura de infra -estrutura projetada para acelerar a pesquisa de aprendizado de reforço seguro (RL). Ele fornece uma referência abrangente e confiável para algoritmos seguros de RL e também um kit de ferramentas modular fora da caixa para os pesquisadores. O SAFERL pretende desenvolver algoritmos que minimizem o risco de danos não intencionais ou comportamento inseguro.
Omnisafe permanece como a estrutura de aprendizado unificada inaugural no domínio da aprendizagem de reforço seguro, com o objetivo de promover o crescimento da comunidade de aprendizado segura. As principais características do Omnisafe:
Estrutura altamente modular. Omnisafe apresenta uma estrutura altamente modular, incorporando uma extensa coleção de dezenas de algoritmos adaptados para o aprendizado de reforço seguro em diversos domínios. Essa estrutura é versátil devido à sua abstração de vários tipos de algoritmos e API bem projetada, usando os componentes de design do adaptador e do wrapper para preencher lacunas e permitir interações perfeitas entre diferentes componentes. Esse design permite uma extensão e personalização fáceis, tornando -o uma ferramenta poderosa para desenvolvedores que trabalham com diferentes tipos de algoritmos.
Aceleração de computação paralela de alto desempenho. Ao aproveitar as capacidades da torch.distributed . Isso permite que o Omnisafe não apenas apoie o paralelismo assíncrono no nível do meio ambiente, mas também incorpora o aprendizado assíncrono do agente. Essa metodologia reforça a estabilidade do treinamento e agiliza o processo de treinamento por meio da implantação de um mecanismo de exploração paralelo. A integração da aprendizagem assíncrona do agente na Omnisafe ressalta seu compromisso em fornecer uma plataforma versátil e robusta para avançar na pesquisa segura.
Kits de ferramentas fora da caixa. O Omnisafe oferece kits de ferramentas personalizáveis para tarefas como treinamento, benchmarking, análise e renderização. Os tutoriais e as APIs fáceis de usar facilitam para iniciantes e usuários comuns, enquanto os pesquisadores avançados podem melhorar sua eficiência sem código complexo.
Se você achar o Omnisafe útil ou usar o Omnisafe em sua pesquisa, cite -a em suas publicações.
@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 requer Python 3.8+ e Pytorch 1.10+.
Apoiamos e testamos o Python 3.8, 3.9, 3.10 no Linux. Enquanto isso, também apoiamos as versões M1 e M2 do macOS. Aceitaremos os PRs relacionados ao Windows, mas não o apoiaremos oficialmente.
# 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 está hospedado em /.
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| Domínios | Tipos | Registro de algoritmos |
|---|---|---|
| Sobre política | Primal Dual | Trpolag; Ppolag; PDO; RCPO |
| Trpopid; Cppopid | ||
| Otimização convexa | CPO; PCPO; Focops; XÍCARA | |
| Função de penalidade | IPO; P3o | |
| Primal | ONCRPO | |
| Política off off | Primal-dual | DdpGlag; Td3lag; Saclag |
| Ddpgpid; Td3pid; Sacpid | ||
| Baseado em modelo | Plano online | Safeloop; Ccepets; Ricepets |
| Estimativa pessimista | Cappets | |
| Offline | Baseado em Q-Learning | Bcqlag; C-CRR |
| Baseada em dados | Cotdice | |
| Outra formulação mdp | ET-MDP | PPO terminado precocemente; TRPOEARLYMERLIALIDADO |
| Sauterl | PPOSAUTE; Trposaute | |
| SimMerrl | Pposimmerpid; Trposimmerpid |
Aqui está uma lista de ambientes que a segurança-gymnasium suporta:
| Categoria | Tarefa | Agente | Exemplo |
|---|---|---|---|
| Navegação segura | Objetivo [012] | Ponto, carro, corrida, formiga | SafeTypointGoal1-V0 |
| Botão [012] | |||
| Empurrar [012] | |||
| Círculo [012] | |||
| Velocidade segura | Velocidade | Halfheetah, Hopper, Nadim, Walker2d, Ant, Humanóide | Segurançahumanoidvelocity-V1 |
| Ginásio Isaac seguro | Superfefing | Shadowhand | ShadowHandoversofefinger |
| Supersegunda | |||
| CAPACOVER2UNDERARMSAFEFINGER | |||
| CAPACOVER2UNDERARMSAFEJONT |
Para obter mais informações sobre ambientes, consulte a segurança-gymnasium.
Oferecemos uma interface de ambiente personalizado flexível que permite aos usuários alcançar o seguinte sem modificar o código -fonte Omnisafe :
Fornecemos tutoriais passo a passo sobre a personalização do ambiente a partir da personalização do zero e do ambiente da comunidade para fornecer uma introdução detalhada sobre como usar esse recurso extraordinário do OmniSafe.
Nota: Se você encontrar problemas para personalizar seu ambiente, sinta -se à vontade para abrir um problema ou discussão. As solicitações de tração também são bem -vindas se você estiver disposto a contribuir com a implementação da sua interface de ambientes.
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.yamlFornecemos resultados de referência para vários algoritmos, incluindo abordagens na política, fora da política, baseadas em modelos e offline, juntamente com a análise de ajuste de parâmetros. Consulte o seguinte:
Explore Omnisafe de maneira fácil e rápida através de uma série de notebooks do Google Colab:
Temos um grande prazer em colaborar com nossos usuários para criar tutoriais em vários idiomas. Consulte a nossa lista de idiomas atualmente suportados. Se você estiver interessado em traduzir o tutorial em um novo idioma ou melhorar uma versão existente, envie um PR para nós.
Veja Changelog.md.
Compilamos uma lista de artigos que usam OmniSafe para implementação ou experimentação do algoritmo. Se você estiver disposto a incluir seu trabalho nesta lista, ou se deseja que sua implementação integrasse oficialmente ao Omnisafe, não hesite em entrar em contato conosco.
| Papéis | Editor |
|---|---|
| Aprendizagem de reforço seguro primal-dual de política fora da política | ICLR 2024 |
| Aprendizagem de reforço off-line segura com modelo de difusão guiado por viabilidade | ICLR 2024 |
| Estimativa de acessibilidade iterativa para aprendizado de reforço seguro | Neurips 2023 |
| Recompensa de equilíbrio e otimização de segurança para aprendizado de reforço seguro: uma perspectiva de manipulação de gradiente | AAAI 2024 |
| Aprendendo restrições de segurança da demonstração usando árvores de decisão de uma classe | Workshops AAAI 2024 |
Omnisafe é desenvolvido principalmente pela equipe de pesquisa Saferl, dirigida pelo Prof. Yaodong Yang. Nossos membros da equipe de pesquisa segura incluem Borong Zhang, Jiayi Zhou, Jtao Dai, Weidong Huang, Ruiyang Sun, Xuehai Pan e Jiaming Ji. Se você tiver alguma dúvida no processo de usar o Omnisafe, não hesite em fazer suas perguntas na página de problemas do Github, responderemos a você em 2-3 dias úteis.
Omnisafe é liberado pelo Apache License 2.0.