Repolode
sail-sg

sail-sg/envpool

Um pool de ambientes em lote em C++ para aprendizado por reforço, que executa vários ambientes no estilo Gym em paralelo usando um pool de threads.

Estrelas
1,533
Forks
147
Issues abertas
16
Último commit
há 16 dias

O que é?

EnvPool é um mecanismo de execução paralela para ambientes de aprendizado por reforço. Ele gerencia um pool de ambientes em C++ com um pool de threads e os disponibiliza para Python por meio de pybind11, permitindo avançar vários ambientes em uma única chamada. Oferece suporte a APIs no estilo Gymnasium e dm_env, nos modos síncrono e assíncrono, com interação em lote por padrão.

O projeto abrange uma ampla variedade de famílias de ambientes, incluindo Atari, MuJoCo, DeepMind Control Suite, Box2D, ViZDoom, Procgen, Minigrid, MPE2, MetaWorld, PGX e Jumanji. Também é possível adicionar ambientes por meio de uma interface para desenvolvedores em C++. Há suporte para renderização em arrays RGB em lote e para XLA com JAX jit. Wheels pré-compiladas são publicadas no PyPI para Linux, macOS e Windows.

Os benchmarks do repositório comparam o throughput com ambientes vetorizados baseados em subprocessos Python e loops for, em máquinas com 12 a 256 núcleos de CPU.

Recursos principais

  • 01Avanço de ambientes em lote usando um pool de threads em C++, com bindings pybind11.
  • 02Compatível com as APIs Gymnasium e dm_env.
  • 03Oferece suporte à execução síncrona e assíncrona, incluindo ambientes para um ou vários jogadores.
  • 04Abrange várias famílias de ambientes, como Atari, MuJoCo, DeepMind Control e Procgen.
  • 05Renderização rgb_array em lote e suporte a XLA com JAX jit.

Casos de uso

  • Acelerar a coleta de dados para treinar modelos de aprendizado por reforço em máquinas com vários núcleos.
  • Executar experimentos com Atari ou MuJoCo usando bibliotecas como Stable-Baselines3, Tianshou ou CleanRL.
  • Adicionar um ambiente personalizado com uma implementação em C++ de alto throughput.

Início rápido

  1. 1

    Instale o EnvPool pelo PyPI

    pip install envpool
  2. 2

    Abra um console Python e importe envpool para confirmar que a instalação foi concluída corretamente

Antes de usar

  • A renderização do MuJoCo no Linux requer o runtime EGL/OpenGL do sistema, como libegl1, libopengl0 e libgl1-mesa-dri no Ubuntu.
  • No Linux, os ambientes Procgen exigem a instalação separada do runtime Qt 5 do sistema. A compilação a partir do código-fonte também requer Qt 5.

Em coleções

Tópicos

#reinforcement-learning#parallel-processing#gym#simulation#cpp#python-bindings#vectorized-environment#atari-games#box2d#cpp17

Perguntas frequentes

O que é envpool?
Um pool de ambientes em lote em C++ para aprendizado por reforço, que executa vários ambientes no estilo Gym em paralelo usando um pool de threads. EnvPool é um mecanismo de execução paralela para ambientes de aprendizado por reforço. Ele gerencia um pool de ambientes em C++ com um pool de threads e os disponibiliza para Python por meio de pybind11, permitindo avançar vários ambientes em uma única chamada. Oferece suporte a APIs no estilo Gymnasium e dm_env, nos modos síncrono e assíncrono, com interação em lote por padrão.
envpool é gratuito? Qual é a licença?
envpool é open source sob a licença Apache-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
envpool ainda é mantido?
Manutenção ativa. O último commit de envpool foi em 21 de out. de 2026.
Para que posso usar envpool?
Acelerar a coleta de dados para treinar modelos de aprendizado por reforço em máquinas com vários núcleos. Executar experimentos com Atari ou MuJoCo usando bibliotecas como Stable-Baselines3, Tianshou ou CleanRL. Adicionar um ambiente personalizado com uma implementação em C++ de alto throughput.
Como instalar envpool?
Instale o EnvPool pelo PyPI: pip install envpool Abra um console Python e importe envpool para confirmar que a instalação foi concluída corretamente
Onde consigo envpool?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/sail-sg/envpool

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados