Este repositório contém o código do artigo Aprendendo a modelar o mundo com a linguagem. Apresentamos Dynalang, um agente que utiliza diversos tipos de linguagem para resolver tarefas, usando a linguagem para prever o futuro por meio de um modelo mundial multimodal.
Para mais informações, confira:
Instale dependências:
pip install -e .
Instale o ambiente HomeGrid e execute o script de treinamento de exemplo com o nome da tarefa ( homegrid_task
, homegrid_future
, homegrid_dynamics
ou homegrid_corrections
):
pip install homegrid
sh scripts/run_homegrid.sh homegrid_task EXP_NAME GPU_IDS SEED
sudo apt-get install
libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev
libsdl1.2-dev libsmpeg-dev subversion libportmidi-dev ffmpeg
libswscale-dev libavformat-dev libavcodec-dev libfreetype6-dev
git clone https://github.com/ahjwang/messenger-emma
pip install -e messenger-emma
Baixe as frases pré-incorporadas do Google Drive e coloque o arquivo pkl
em dynalang/embodied/envs/data
.
Execute o script de treinamento de exemplo para s1, s2 ou s3:
sh scripts/run_messenger_s1.sh EXP_NAME GPU_IDS SEED
conda create -n dynalang-vln python=3.8
pip install " jax[cuda11_cudnn82]==0.4.8 " -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
pip install torch torchvision
conda env update -f env_vln.yml
conda install -c aihabitat -c conda-forge habitat-sim=0.1.7 headless
git clone https://github.com/jlin816/VLN-CE VLN_CE
git clone https://github.com/jlin816/habitat-lab habitat_lab
conda create -n py27 python=2.7
conda activate py27
python scripts/download_mp.py --task habitat -o VLN_CE/data/scene_datasets/mp3d/
cd VLN_CE/data/scene_datasets
unzip mp3d/v1/tasks/mp3d_habitat.zip
conda deactivate
As cenas agora devem ser preenchidas em diretórios em VLN_CE/data/scene_datasets/mp3d/{scene_dir}/...
.
mkdir -p VLN_CE/data/datasets
cd VLN_CE/data/datasets
gdown https://drive.google.com/uc ? id=1kQ_at68wiK2vAmlWbjJ4EDrLtaM0nfkR
unzip R2R_VLNCE_v1-3_preprocessed.zip
Baixe as frases pré-incorporadas do Google Drive e coloque o arquivo pkl
em dynalang/embodied/envs/data
.
Execute o script de treinamento de exemplo:
sh scripts/run_vln.sh EXP_NAME GPU_IDS SEED
O LangRoom deve ser executado a partir do branch langroom
, que contém alterações para suportar o espaço de ação do dicionário do LangRoom para se mover e falar simultaneamente. Instale o ambiente LangRoom e execute o script de treinamento de exemplo:
git checkout langroom
pip install langroom
sh run_langroom.sh EXP_NAME GPU_IDS SEED
Instale dependências adicionais e execute o script de treinamento de exemplo para treinar no TinyStories. Por padrão, o script inicializa um modelo com o espaço de observação e ação da tarefa do Messenger S2 e monitora a perda em um buffer de reprodução durante o treinamento. Você precisará passar um caminho para o diretório .../episodes/
(contendo os pedaços .npz
) de um agente anterior do Messenger S2 se quiser fazer o mesmo.
pip install datasets
sh scripts/pretrain_text.sh EXP_NAME GPU_IDS SEED roneneldan/TinyStories /PATH/TO/EVAL/REPLAY/EPISODES
Para carregar um modelo mundial pré-treinado em um agente para ajuste fino, execute o script de treinamento com os seguintes sinalizadores ( load_wm_ckpt
carrega apenas os pesos do modelo mundial e inicializa o restante do agente do zero):
python dynalang/train.py
--load_wm_ckpt True
--run.from_checkpoint /path/to/pretraining/checkpoint.pkl
...
sh run_messenger_s3.sh EXP_NAME 0,1,2,3 SEED --jax.train_devices 0,1,2,3 --jax.policy_devices 0
.parallel
para acelerar o treinamento. Veja scripts/run_vln.sh
para ver um exemplo.Este repositório foi adaptado do DreamerV3.
@article{lin2023learning,
title={Learning to Model the World with Language},
author={Jessy Lin and Yuqing Du and Olivia Watkins and Danijar Hafner and Pieter Abbeel and Dan Klein and Anca Dragan},
year={2023},
eprint={2308.01399},
archivePrefix={arXiv},
}