DeepMind Lab é um ambiente de aprendizagem 3D baseado no Quake III Arena da id Software via ioquake3 e outros softwares de código aberto.
O DeepMind Lab oferece um conjunto de tarefas desafiadoras de navegação 3D e resolução de quebra-cabeças para agentes de aprendizagem. Seu objetivo principal é atuar como um banco de testes para pesquisas em inteligência artificial, especialmente aprendizado por reforço profundo.
Isenção de responsabilidade: este não é um produto oficial do Google.
Se você usa o DeepMind Lab em sua pesquisa e gostaria de citar o ambiente do DeepMind Lab , sugerimos que cite o artigo do DeepMind Lab.
Você pode entrar em contato conosco em [email protected].
Obtenha o Bazel em bazel.io.
Clone o DeepMind Lab, por exemplo, executando
$ git clone https://github.com/deepmind/lab
$ cd lab
Para obter um exemplo ao vivo de um agente aleatório, execute
lab$ bazel run :python_random_agent --define graphics=sdl --
--length=10000 --width=640 --height=480
Aqui está uma documentação de construção mais detalhada, incluindo como instalar dependências se você não as tiver.
Para ativar otimizações do compilador, passe o sinalizador --compilation_mode=opt
ou -c opt
para abreviar, para cada comando bazel build
, bazel test
e bazel run
. A bandeira é omitida dos exemplos aqui por questões de brevidade, mas deve ser usada para treinamento e avaliação reais onde o desempenho é importante.
Para testar o jogo usando controles de entrada humana, execute
lab$ bazel run :game -- --level_script=tests/empty_room_test --level_setting=logToStdErr=true
# or:
lab$ bazel run :game -- -l tests/empty_room_test -s logToStdErr=true
Deixe a configuração logToStdErr
desativada para desativar a maior parte da saída de log.
Os valores das observações que o ambiente expõe podem ser impressos a cada passo adicionando uma flag --observation OBSERVATION_NAME
para cada observação de interesse.
lab$ bazel run :game -- --level_script=lt_chasm --observation VEL.TRANS --observation VEL.ROT
O DeepMind Lab vem com um exemplo de agente aleatório em python/random_agent.py
que pode ser usado como ponto de partida para implementar um agente de aprendizagem. Para permitir que este agente interaja com o DeepMind Lab para treinamento, execute
lab$ bazel run :python_random_agent
A API Python é usada para interações agente-ambiente. Também fornecemos ligações para a API geral "dm_env" do DeepMind para aprendizado por reforço, bem como uma maneira de construir um pacote PIP independente; consulte a documentação separada para obter detalhes.
O DeepMind Lab vem com diferentes níveis, implementando tarefas diferentes. Essas tarefas podem ser configuradas usando scripts Lua, conforme descrito na API Lua.
DeepMind Lab é construído a partir do mecanismo de jogo ioquake3 e usa as ferramentas q3map2 e bspc para criação de mapas. Correções de bugs e limpezas originadas nesses projetos são melhor corrigidas no upstream e depois mescladas no DeepMind Lab .
bspc foi retirado de github.com/TTimo/bspc, revisão d9a372db3fb6163bc49ead41c76c801a3d14cf80. Praticamente não há modificações locais, embora integremos esse código ao código principal do ioq3 e não utilizemos sua cópia no diretório deps
. Esperamos que este código seja estável.
q3map2 foi retirado de github.com/TTimo/GtkRadiant, revisão d3d00345c542c8d7cc74e2e8a577bdf76f79c701. Algumas pequenas modificações locais adicionam sincronização. Também esperamos que este código seja estável.
ioquake3 foi retirado de github.com/ioquake/ioq3, revisão 29db64070aa0bae49953bddbedbed5e317af48ba. O código contém extensas modificações e adições. Nosso objetivo é mesclar alterações upstream ocasionalmente.
Somos muito gratos aos mantenedores desses repositórios por todo o seu trabalho árduo na manutenção de bases de código de alta qualidade.
Atualmente, o DeepMind Lab é enviado apenas como código-fonte. Depende de algumas bibliotecas de software externas, que enviamos de diversas maneiras diferentes:
As bibliotecas zlib
, glib
, libxml2
, jpeg
e png
são referenciadas como fontes externas do Bazel e os arquivos Bazel BUILD são fornecidos. O código dependente em si deve ser bastante portátil, mas as regras BUILD que fornecemos são específicas para Linux em x86. Para construir em uma plataforma diferente, você provavelmente terá que editar esses arquivos BUILD.
Algoritmos de resumo de mensagens estão incluídos neste pacote (em //third_party/md
), retirados das implementações de referência de seus respectivos RFCs. Uma "API genérica de aprendizagem por reforço" está incluída em //third_party/rl_api
, que também foi criada pelos autores do DeepMind Lab . Este código é portátil.
Os cabeçalhos EGL estão incluídos neste pacote (em //third_party/GL/{
EGL
,
KHR
}
), retirados do Khronos OpenGL/OpenGL ES XML API Registry em www.khronos.org/registry/EGL. Os cabeçalhos foram ligeiramente modificados para remover a dependência do EGL no X.
Várias bibliotecas adicionais são necessárias, mas não são enviadas de nenhuma forma; eles devem estar presentes em seu sistema:
glib
)--define headless=...
.As regras de construção usam algumas configurações do compilador específicas do GCC. Se alguns sinalizadores não forem reconhecidos pelo seu compilador (normalmente seriam supressões de aviso específicas), talvez seja necessário editar esses sinalizadores. Os avisos devem ser barulhentos, mas inofensivos.